summaryrefslogtreecommitdiffstats
path: root/libcutils
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2009-10-12 16:51:23 -0700
committerAndy McFadden <fadden@android.com>2009-10-21 10:47:31 -0700
commit21ec779abe2df0c2e9e170a40c8cf7c2f2eb4ac9 (patch)
tree293b0c5e3a8ebbfc372ee31b0c57c324176f632a /libcutils
parent065694b32e481a50e57a793d61181494fbf6ef04 (diff)
downloadsystem_core-21ec779abe2df0c2e9e170a40c8cf7c2f2eb4ac9.zip
system_core-21ec779abe2df0c2e9e170a40c8cf7c2f2eb4ac9.tar.gz
system_core-21ec779abe2df0c2e9e170a40c8cf7c2f2eb4ac9.tar.bz2
Add stack unwinding directives to atomic-android-arm.S.
For bug 2182296. Eclair branch Dr. No approved by: hiroshi
Diffstat (limited to 'libcutils')
-rw-r--r--libcutils/atomic-android-arm.S18
1 files changed, 18 insertions, 0 deletions
diff --git a/libcutils/atomic-android-arm.S b/libcutils/atomic-android-arm.S
index f4299fd..7befd78 100644
--- a/libcutils/atomic-android-arm.S
+++ b/libcutils/atomic-android-arm.S
@@ -66,6 +66,8 @@ android_atomic_write:
*/
android_atomic_inc:
+ .fnstart
+ .save {r4, lr}
stmdb sp!, {r4, lr}
mov r2, r0
1: @ android_atomic_inc
@@ -85,6 +87,7 @@ android_atomic_inc:
sub r0, r1, #1
ldmia sp!, {r4, lr}
bx lr
+ .fnend
/*
* ----------------------------------------------------------------------------
@@ -94,6 +97,8 @@ android_atomic_inc:
*/
android_atomic_dec:
+ .fnstart
+ .save {r4, lr}
stmdb sp!, {r4, lr}
mov r2, r0
1: @ android_atomic_dec
@@ -113,6 +118,7 @@ android_atomic_dec:
add r0, r1, #1
ldmia sp!, {r4, lr}
bx lr
+ .fnend
/*
* ----------------------------------------------------------------------------
@@ -122,6 +128,8 @@ android_atomic_dec:
*/
android_atomic_add:
+ .fnstart
+ .save {r4, lr}
stmdb sp!, {r4, lr}
mov r2, r1
mov r4, r0
@@ -142,6 +150,7 @@ android_atomic_add:
sub r0, r1, r4
ldmia sp!, {r4, lr}
bx lr
+ .fnend
/*
@@ -152,6 +161,8 @@ android_atomic_add:
*/
android_atomic_and:
+ .fnstart
+ .save {r4, r5, lr}
stmdb sp!, {r4, r5, lr}
mov r2, r1 /* r2 = address */
mov r4, r0 /* r4 = the value */
@@ -174,6 +185,7 @@ android_atomic_and:
mov r0, r5
ldmia sp!, {r4, r5, lr}
bx lr
+ .fnend
/*
* ----------------------------------------------------------------------------
@@ -183,6 +195,8 @@ android_atomic_and:
*/
android_atomic_or:
+ .fnstart
+ .save {r4, r5, lr}
stmdb sp!, {r4, r5, lr}
mov r2, r1 /* r2 = address */
mov r4, r0 /* r4 = the value */
@@ -205,6 +219,7 @@ android_atomic_or:
mov r0, r5
ldmia sp!, {r4, r5, lr}
bx lr
+ .fnend
/*
* ----------------------------------------------------------------------------
@@ -228,6 +243,8 @@ android_atomic_swap:
*/
android_atomic_cmpxchg:
+ .fnstart
+ .save {r4, lr}
stmdb sp!, {r4, lr}
mov r4, r0 /* r4 = save oldvalue */
1: @ android_atomic_cmpxchg
@@ -249,6 +266,7 @@ android_atomic_cmpxchg:
2: @ android_atomic_cmpxchg
ldmia sp!, {r4, lr}
bx lr
+ .fnend
/*
* ----------------------------------------------------------------------------