diff --git a/machine/src/arch/aarch64/mod.rs b/machine/src/arch/aarch64/mod.rs index c0fb793..b4b5928 100644 --- a/machine/src/arch/aarch64/mod.rs +++ b/machine/src/arch/aarch64/mod.rs @@ -39,3 +39,14 @@ pub fn loop_until<F: Fn() -> bool>(f: F) { asm::nop(); } } + +/// Loop while a passed function returns `true`. +#[inline] +pub fn loop_while<F: Fn() -> bool>(f: F) { + loop { + if !f() { + break; + } + asm::nop(); + } +}