diff options
-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(); } |