Files
stm32nanoos/atomic.S

44 lines
968 B
ArmAsm

.thumb
.syntax unified
.text
.globl atomic_inc32
.type atomic_inc32, %function
atomic_inc32:
1: ldrex r2, [r0]
add r2, r2, r1
strex r3, r2, [r0]
teq r3, #0
bne 1b
mov r0, r2
bx lr
.globl atomic_dec32
.type atomic_dec32, %function
atomic_dec32:
1: ldrex r2, [r0]
sub r2, r2, r1
strex r3, r2, [r0]
teq r3, #0
bne 1b
mov r0, r2
bx lr
.globl atomic_dec32le0
.type atomic_dec32le0, %function
atomic_dec32le0:
1: ldrex r2, [r0]
cmp r2, #0
ble 1b
sub r2, r2, r1
strex r3, r2, [r0]
teq r3, #0
bne 1b
mov r0, r2
bx lr