Modify _spinlock_lock

This commit is contained in:
songyanguang 2024-12-25 19:31:55 +08:00
parent 9fbb5be499
commit e20ff7483c
1 changed files with 22 additions and 0 deletions

View File

@ -57,6 +57,16 @@ Modification:
.global _spinlock_lock
.func _spinlock_lock
_spinlock_lock:
mv s0, a0
li a0, 0 # cpu_get_current
mv a1, a0
mv a0, s0
li a2, UNLOCKED
1:
lr.w a3, (a0)
beq a3, a1, 1b
sc.w a4, a1, (a0)
bnez a4, 1b
ret
.endfunc
@ -65,6 +75,18 @@ _spinlock_lock:
.global _spinlock_unlock
.func _spinlock_unlock
_spinlock_unlock:
mv s0, a0
li a0, 0 # cpu_get_current
mv a1, a0
mv a0, s0
li a2, UNLOCKED
lw a3, (a0)
bne a3, a1, 1f
sw a2, (a0)
li a0, 0
ret
1:
li a0, -1
ret
.endfunc