diff options
| author | Jean-Baptiste Queru <jbq@google.com> | 2009-11-12 18:45:14 -0800 |
|---|---|---|
| committer | Jean-Baptiste Queru <jbq@google.com> | 2009-11-12 18:45:14 -0800 |
| commit | 194d3fa048cf909ca592dd56fa538dc9cd3f5ddb (patch) | |
| tree | 3a00bb9e267cf952d7d1140ff9a39ca07ee6c994 /libc/arch-arm/bionic/atomics_arm.S | |
| parent | fde8642fc43bdd224e43e5ee9583a49a758fb03c (diff) | |
| download | bionic-194d3fa048cf909ca592dd56fa538dc9cd3f5ddb.zip bionic-194d3fa048cf909ca592dd56fa538dc9cd3f5ddb.tar.gz bionic-194d3fa048cf909ca592dd56fa538dc9cd3f5ddb.tar.bz2 | |
eclair snapshot
Diffstat (limited to 'libc/arch-arm/bionic/atomics_arm.S')
| -rw-r--r-- | libc/arch-arm/bionic/atomics_arm.S | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/libc/arch-arm/bionic/atomics_arm.S b/libc/arch-arm/bionic/atomics_arm.S index b2da09f..f8b23e6 100644 --- a/libc/arch-arm/bionic/atomics_arm.S +++ b/libc/arch-arm/bionic/atomics_arm.S @@ -41,6 +41,8 @@ .equ kernel_cmpxchg, 0xFFFF0FC0 .equ kernel_atomic_base, 0xFFFF0FFF __atomic_dec: + .fnstart + .save {r4, lr} stmdb sp!, {r4, lr} mov r2, r0 1: @ atomic_dec @@ -53,8 +55,11 @@ __atomic_dec: add r0, r1, #1 ldmia sp!, {r4, lr} bx lr + .fnend __atomic_inc: + .fnstart + .save {r4, lr} stmdb sp!, {r4, lr} mov r2, r0 1: @ atomic_inc @@ -67,9 +72,12 @@ __atomic_inc: sub r0, r1, #1 ldmia sp!, {r4, lr} bx lr + .fnend /* r0(old) r1(new) r2(addr) -> r0(zero_if_succeeded) */ __atomic_cmpxchg: + .fnstart + .save {r4, lr} stmdb sp!, {r4, lr} mov r4, r0 /* r4 = save oldvalue */ 1: @ atomic_cmpxchg @@ -84,6 +92,7 @@ __atomic_cmpxchg: 2: @ atomic_cmpxchg ldmia sp!, {r4, lr} bx lr + .fnend #else #define KUSER_CMPXCHG 0xffffffc0 |
