summaryrefslogtreecommitdiff
path: root/kern/spinlock_i.h
diff options
context:
space:
mode:
Diffstat (limited to 'kern/spinlock_i.h')
-rw-r--r--kern/spinlock_i.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/kern/spinlock_i.h b/kern/spinlock_i.h
index 69de0b01..bf9bf2c7 100644
--- a/kern/spinlock_i.h
+++ b/kern/spinlock_i.h
@@ -21,9 +21,10 @@
#include <stddef.h>
#include <stdint.h>
+#include <kern/assert.h>
+#include <kern/atomic.h>
#include <kern/error.h>
#include <kern/spinlock_types.h>
-#include <machine/atomic.h>
#include <machine/cpu.h>
/*
@@ -39,7 +40,7 @@ spinlock_lock_fast(struct spinlock *lock)
{
unsigned int prev;
- prev = atomic_cas_uint(&lock->value, SPINLOCK_UNLOCKED, SPINLOCK_LOCKED);
+ prev = atomic_cas_seq_cst(&lock->value, SPINLOCK_UNLOCKED, SPINLOCK_LOCKED);
if (prev != SPINLOCK_UNLOCKED) {
return ERROR_BUSY;
@@ -53,7 +54,7 @@ spinlock_unlock_fast(struct spinlock *lock)
{
unsigned int prev;
- prev = atomic_cas_uint(&lock->value, SPINLOCK_LOCKED, SPINLOCK_UNLOCKED);
+ prev = atomic_cas_seq_cst(&lock->value, SPINLOCK_LOCKED, SPINLOCK_UNLOCKED);
if (prev != SPINLOCK_LOCKED) {
return ERROR_BUSY;