mirror of
https://github.com/openhwgroup/cvw
synced 2025-01-30 08:24:40 +00:00
25 lines
490 B
ArmAsm
25 lines
490 B
ArmAsm
|
.section .text.init
|
||
|
.globl rvtest_entry_point
|
||
|
rvtest_entry_point:
|
||
|
|
||
|
|
||
|
la a0, lock
|
||
|
|
||
|
spinlock: # address of lock is in a0
|
||
|
lr.w t0, (a0) # read the lock
|
||
|
bnez t0, retry # spin until free
|
||
|
li t1, 1
|
||
|
sc.w t0, t1, (a0) # try to write a 1 to take lock
|
||
|
bnez t0, retry # spin until successful
|
||
|
ret # got the lock!
|
||
|
retry: # no lock yet
|
||
|
pause # pause hint to reduce spin power
|
||
|
j spinlock # try again
|
||
|
|
||
|
|
||
|
self_loop:
|
||
|
j self_loop
|
||
|
|
||
|
.data
|
||
|
lock:
|
||
|
.word 1
|