xref: /DragonOS/kernel/src/arch/x86_64/include/asm/irqflags.h (revision 66f67c6a95b8aad85cfd2146a86e5e3e6a3568e7)
1cffd7144Slogin #pragma once
2*66f67c6aSlogin #include <asm/asm.h>
3cffd7144Slogin // 保存当前rflags的值到变量x内并关闭中断
4cffd7144Slogin #define local_irq_save(x) __asm__ __volatile__("pushfq ; popq %0 ; cli" \
5cffd7144Slogin                                                : "=g"(x)::"memory")
6cffd7144Slogin // 恢复先前保存的rflags的值x
7cffd7144Slogin #define local_irq_restore(x) __asm__ __volatile__("pushq %0 ; popfq" ::"g"(x) \
8cffd7144Slogin                                                   : "memory")
9cffd7144Slogin #define local_irq_disable() cli();
10cffd7144Slogin #define local_irq_enable() sti();
11