forked from Bananymous/banan-os
Kernel: Implement basic SpinLock
This commit is contained in:
17
kernel/arch/i386/SpinLock.S
Normal file
17
kernel/arch/i386/SpinLock.S
Normal file
@@ -0,0 +1,17 @@
|
||||
.global spinlock_lock_asm
|
||||
spinlock_lock_asm:
|
||||
lock; btsl $0, (%edi)
|
||||
jnc .done
|
||||
.retry:
|
||||
pause
|
||||
testl $1, (%edi)
|
||||
jne .retry
|
||||
lock; btsl $0, (%edi)
|
||||
jc .retry
|
||||
.done:
|
||||
ret
|
||||
|
||||
.global spinlock_unlock_asm
|
||||
spinlock_unlock_asm:
|
||||
movl $0, (%edi)
|
||||
ret
|
||||
@@ -7,4 +7,5 @@ KERNEL_ARCH_OBJS= \
|
||||
$(ARCHDIR)/boot.o \
|
||||
$(ARCHDIR)/IDT.o \
|
||||
$(ARCHDIR)/MMU.o \
|
||||
$(ARCHDIR)/SpinLock.o \
|
||||
|
||||
Reference in New Issue
Block a user