diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-07-07 19:53:26 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-07-07 19:53:26 +0200 |
commit | cd92790c50433ee99fc3a3b3a95792e1daf2aed1 (patch) | |
tree | b660b045e948d522e9e0bc3c53d4e0ca068fe76e /sys/src/ape/lib/ap/arm/tas.s | |
parent | 65061470665b3f91f01d23bad6a54704e8aa5851 (diff) |
ape: port libc smp tas() for arm
Diffstat (limited to 'sys/src/ape/lib/ap/arm/tas.s')
-rw-r--r-- | sys/src/ape/lib/ap/arm/tas.s | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/sys/src/ape/lib/ap/arm/tas.s b/sys/src/ape/lib/ap/arm/tas.s index f1269209e..25d0e1cfe 100644 --- a/sys/src/ape/lib/ap/arm/tas.s +++ b/sys/src/ape/lib/ap/arm/tas.s @@ -1,5 +1,14 @@ -TEXT tas(SB), $-4 - MOVW R0,R1 - MOVW $1,R0 - SWPW R0,(R1) +TEXT tas(SB), 1, $-4 + MOVW $1, R2 +_tas1: + LDREX (R0), R1 + STREX R2, (R0), R3 + CMP.S $0, R3 + BNE _tas1 + MOVW R1, R0 + MOVW _barrier(SB), R4 + B (R4) + +TEXT _dmb(SB), 1, $-4 + WORD $0xf57ff05f RET |