diff options
author | Raghuram Subramani <raghus2247@gmail.com> | 2025-06-01 15:53:50 +0530 |
---|---|---|
committer | Raghuram Subramani <raghus2247@gmail.com> | 2025-06-01 15:53:50 +0530 |
commit | edabb72c36d3b38d201b348928aa419e8c2c17ac (patch) | |
tree | ac2dd5b378fd79164f0aa16ad69db30e49ba38b3 | |
parent | 0488dc9f518d1a0d9f2423bbb1076de63b868060 (diff) |
spinlock: use interrupts' helper functions
-rw-r--r-- | kernel/kernel/spinlock.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/kernel/spinlock.cc b/kernel/kernel/spinlock.cc index a57206d..49ebc36 100644 --- a/kernel/kernel/spinlock.cc +++ b/kernel/kernel/spinlock.cc @@ -16,12 +16,13 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include "boot/interrupts.h" #include <kernel/spinlock.h> void Spinlock::acquire(void) { - __asm__ volatile("cli"); + Interrupts::disable(); while (!__sync_bool_compare_and_swap(&m_lock, 0, 1)) while (m_lock) __asm__ volatile("rep; nop"); @@ -31,5 +32,6 @@ void Spinlock::release(void) { __sync_bool_compare_and_swap(&m_lock, 1, 0); - // __asm__ volatile("sti"); + if (Interrupts::idt_loaded()) + Interrupts::enable(); } |