aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2025-06-01 15:53:50 +0530
committerRaghuram Subramani <raghus2247@gmail.com>2025-06-01 15:53:50 +0530
commitedabb72c36d3b38d201b348928aa419e8c2c17ac (patch)
treeac2dd5b378fd79164f0aa16ad69db30e49ba38b3
parent0488dc9f518d1a0d9f2423bbb1076de63b868060 (diff)
spinlock: use interrupts' helper functions
-rw-r--r--kernel/kernel/spinlock.cc6
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();
}