Fix interrupt race condition on arm64 and riscv64
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user