12345678910111213141516171819 |
- use core::arch::asm;
- #[inline]
- pub fn local_irq_save() -> usize {
- let x: usize;
- // x86_64::registers::rflags::
- unsafe {
- asm!("pushfq; pop {}; cli", out(reg) x, options(nomem, preserves_flags));
- }
- x
- }
- #[inline]
- // 恢复先前保存的rflags的值x
- pub fn local_irq_restore(x: usize) {
- unsafe {
- asm!("push {}; popfq", in(reg) x, options(nomem, preserves_flags));
- }
- }
|