diff --git a/src/arch/aarch64/interrupt/mod.rs b/src/arch/aarch64/interrupt/mod.rs index 1e611ff886..ab9f93c78c 100644 --- a/src/arch/aarch64/interrupt/mod.rs +++ b/src/arch/aarch64/interrupt/mod.rs @@ -26,7 +26,7 @@ pub unsafe fn disable() { #[inline(always)] pub unsafe fn enable_and_halt() { unsafe { - asm!("msr daifclr, #2", "wfi"); + asm!("wfi", "msr daifclr, #2", "nop"); } } diff --git a/src/arch/riscv64/interrupt/mod.rs b/src/arch/riscv64/interrupt/mod.rs index 89b30a1db2..ebb5d26f84 100644 --- a/src/arch/riscv64/interrupt/mod.rs +++ b/src/arch/riscv64/interrupt/mod.rs @@ -26,7 +26,7 @@ pub unsafe fn enable() { /// Performing enable followed by halt is not guaranteed to be atomic, use this instead! #[inline(always)] pub unsafe fn enable_and_halt() { - unsafe { asm!("csrsi sstatus, 1 << 1", "wfi") } + unsafe { asm!("wfi", "csrsi sstatus, 1 << 1", "nop") } } /// Set interrupts and nop