mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-24 13:13:24 +00:00
@ -41,14 +41,14 @@ impl InterruptArch for X86_64InterruptArch {
|
||||
fn is_irq_enabled() -> bool {
|
||||
let rflags: u64;
|
||||
unsafe {
|
||||
asm!("pushfq; pop {}", out(reg) rflags, options(nomem, preserves_flags));
|
||||
asm!("pushfq; pop {}", out(reg) rflags);
|
||||
}
|
||||
return rflags & (1 << 9) != 0;
|
||||
}
|
||||
|
||||
unsafe fn save_and_disable_irq() -> IrqFlagsGuard {
|
||||
compiler_fence(Ordering::SeqCst);
|
||||
let rflags = local_irq_save();
|
||||
let rflags = local_irq_save() as u64;
|
||||
let flags = IrqFlags::new(rflags);
|
||||
let guard = IrqFlagsGuard::new(flags);
|
||||
compiler_fence(Ordering::SeqCst);
|
||||
@ -57,7 +57,7 @@ impl InterruptArch for X86_64InterruptArch {
|
||||
|
||||
unsafe fn restore_irq(flags: IrqFlags) {
|
||||
compiler_fence(Ordering::SeqCst);
|
||||
local_irq_restore(flags.flags());
|
||||
local_irq_restore(flags.flags() as usize);
|
||||
compiler_fence(Ordering::SeqCst);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user