From 43f23cd7a2e92a00d74969e1ccc687f57df3f3cd Mon Sep 17 00:00:00 2001 From: uosfz Date: Wed, 12 Feb 2025 20:05:05 +0100 Subject: [PATCH] disable interrupts while locked --- src/sync.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/sync.c b/src/sync.c index 86235ae..c45eb30 100644 --- a/src/sync.c +++ b/src/sync.c @@ -1,11 +1,13 @@ #include "sync.h" void spin_lock(struct spinlock *s) { + __asm__ ("cli" :: ); while (atomic_exchange_explicit(&s->lock, 1, memory_order_acquire)) { - // spin + __asm__ ("pause" :: ); } } void spin_unlock(struct spinlock *s) { atomic_store_explicit(&s->lock, 0, memory_order_release); + __asm__ ("sti" :: ); }