mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
66fb5a29bb
Apply the pre-commit hook whitespace fixes to all files in the repo. (Line endings, blank lines at end of file, trailing whitespace)
52 lines
847 B
ArmAsm
52 lines
847 B
ArmAsm
/*
|
|
This little bit of code is executed in-place by one CPU, but copied to a different memory region
|
|
by the other CPU. Make sure it stays position-independent.
|
|
*/
|
|
.text
|
|
.align 4
|
|
.global test_s32c1i_lock
|
|
.type test_s32c1i_lock,@function
|
|
//Args:
|
|
//a2 - lock addr
|
|
//a3 - val to lock with
|
|
//a4 - val to unlock with
|
|
//a5 - addr to increase
|
|
test_s32c1i_lock:
|
|
entry a1, 64
|
|
wsr a4, SCOMPARE1
|
|
lockloop:
|
|
mov a6, a3
|
|
s32c1i a6, a2, 0
|
|
bne a4, a6, lockloop
|
|
|
|
l32i a6, a5, 0
|
|
//Give other CPU the time to mess up the inc if the lock somehow malfunctions
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
addi a6, a6, 1
|
|
s32i a6, a5, 0
|
|
|
|
|
|
//No need to actually let this loop but hey, a hang indicates an error, right?
|
|
wsr a3, SCOMPARE1
|
|
unlockloop:
|
|
mov a6, a4
|
|
s32c1i a6, a2, 0
|
|
bne a3, a6, unlockloop
|
|
|
|
retw
|