Add stack unwinding directives to atomic-android-arm.S.
For bug 2182296. Eclair branch Dr. No approved by: hiroshi
This commit is contained in:
parent
065694b32e
commit
21ec779abe
1 changed files with 18 additions and 0 deletions
|
|
@ -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
|
||||
|
||||
/*
|
||||
* ----------------------------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue