Spinlock save cpu flags
This commit is contained in:
@@ -2,3 +2,11 @@
|
||||
|
||||
/// Relax the spinlock using AMD64 pause instruction
|
||||
void spin_lock_relax (void) { __asm__ volatile ("pause"); }
|
||||
|
||||
void spin_lock_save_flags (uint64_t* flags) {
|
||||
__asm__ volatile ("pushfq; cli; popq %0" : "=rm"(*flags)::"memory");
|
||||
}
|
||||
|
||||
void spin_lock_restore_flags (uint64_t flags) {
|
||||
__asm__ volatile ("pushq %0; popfq" ::"rm"(flags) : "memory", "cc");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user