|
@@ -177,41 +177,42 @@ int __down_trylock(struct semaphore * sem)
|
|
* ip contains the semaphore pointer on entry. Save the C-clobbered
|
|
* ip contains the semaphore pointer on entry. Save the C-clobbered
|
|
* registers (r0 to r3 and lr), but not ip, as we use it as a return
|
|
* registers (r0 to r3 and lr), but not ip, as we use it as a return
|
|
* value in some cases..
|
|
* value in some cases..
|
|
|
|
+ * To remain AAPCS compliant (64-bit stack align) we save r4 as well.
|
|
*/
|
|
*/
|
|
asm(" .section .sched.text,\"ax\",%progbits \n\
|
|
asm(" .section .sched.text,\"ax\",%progbits \n\
|
|
.align 5 \n\
|
|
.align 5 \n\
|
|
.globl __down_failed \n\
|
|
.globl __down_failed \n\
|
|
__down_failed: \n\
|
|
__down_failed: \n\
|
|
- stmfd sp!, {r0 - r3, lr} \n\
|
|
|
|
|
|
+ stmfd sp!, {r0 - r4, lr} \n\
|
|
mov r0, ip \n\
|
|
mov r0, ip \n\
|
|
bl __down \n\
|
|
bl __down \n\
|
|
- ldmfd sp!, {r0 - r3, pc} \n\
|
|
|
|
|
|
+ ldmfd sp!, {r0 - r4, pc} \n\
|
|
\n\
|
|
\n\
|
|
.align 5 \n\
|
|
.align 5 \n\
|
|
.globl __down_interruptible_failed \n\
|
|
.globl __down_interruptible_failed \n\
|
|
__down_interruptible_failed: \n\
|
|
__down_interruptible_failed: \n\
|
|
- stmfd sp!, {r0 - r3, lr} \n\
|
|
|
|
|
|
+ stmfd sp!, {r0 - r4, lr} \n\
|
|
mov r0, ip \n\
|
|
mov r0, ip \n\
|
|
bl __down_interruptible \n\
|
|
bl __down_interruptible \n\
|
|
mov ip, r0 \n\
|
|
mov ip, r0 \n\
|
|
- ldmfd sp!, {r0 - r3, pc} \n\
|
|
|
|
|
|
+ ldmfd sp!, {r0 - r4, pc} \n\
|
|
\n\
|
|
\n\
|
|
.align 5 \n\
|
|
.align 5 \n\
|
|
.globl __down_trylock_failed \n\
|
|
.globl __down_trylock_failed \n\
|
|
__down_trylock_failed: \n\
|
|
__down_trylock_failed: \n\
|
|
- stmfd sp!, {r0 - r3, lr} \n\
|
|
|
|
|
|
+ stmfd sp!, {r0 - r4, lr} \n\
|
|
mov r0, ip \n\
|
|
mov r0, ip \n\
|
|
bl __down_trylock \n\
|
|
bl __down_trylock \n\
|
|
mov ip, r0 \n\
|
|
mov ip, r0 \n\
|
|
- ldmfd sp!, {r0 - r3, pc} \n\
|
|
|
|
|
|
+ ldmfd sp!, {r0 - r4, pc} \n\
|
|
\n\
|
|
\n\
|
|
.align 5 \n\
|
|
.align 5 \n\
|
|
.globl __up_wakeup \n\
|
|
.globl __up_wakeup \n\
|
|
__up_wakeup: \n\
|
|
__up_wakeup: \n\
|
|
- stmfd sp!, {r0 - r3, lr} \n\
|
|
|
|
|
|
+ stmfd sp!, {r0 - r4, lr} \n\
|
|
mov r0, ip \n\
|
|
mov r0, ip \n\
|
|
bl __up \n\
|
|
bl __up \n\
|
|
- ldmfd sp!, {r0 - r3, pc} \n\
|
|
|
|
|
|
+ ldmfd sp!, {r0 - r4, pc} \n\
|
|
");
|
|
");
|
|
|
|
|
|
EXPORT_SYMBOL(__down_failed);
|
|
EXPORT_SYMBOL(__down_failed);
|