diff --git a/src/arch/aarch64/interrupt/mod.rs b/src/arch/aarch64/interrupt/mod.rs index b7451af..9811df2 100644 --- a/src/arch/aarch64/interrupt/mod.rs +++ b/src/arch/aarch64/interrupt/mod.rs @@ -49,7 +49,7 @@ pub unsafe fn halt() { /// Safe because it is similar to a NOP, and has no memory effects #[inline(always)] pub fn pause() { - unsafe { llvm_asm!("wfi") }; + unsafe { llvm_asm!("nop") }; } pub fn available_irqs_iter(cpu_id: usize) -> impl Iterator + 'static { diff --git a/src/context/arch/aarch64.rs b/src/context/arch/aarch64.rs index 5f5e2a3..ac74e22 100644 --- a/src/context/arch/aarch64.rs +++ b/src/context/arch/aarch64.rs @@ -239,6 +239,8 @@ impl Context { llvm_asm!("mov $0, sp" : "=r"(self.sp) : : "memory" : "volatile"); llvm_asm!("mov sp, $0" : : "r"(next.sp) : "memory" : "volatile"); + + CONTEXT_SWITCH_LOCK.store(false, Ordering::SeqCst); } }