summaryrefslogtreecommitdiff
path: root/arch/arm/mach-pxa/sleep.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-pxa/sleep.S')
-rw-r--r--arch/arm/mach-pxa/sleep.S13
1 files changed, 10 insertions, 3 deletions
diff --git a/arch/arm/mach-pxa/sleep.S b/arch/arm/mach-pxa/sleep.S
index 613ddfa2c295..3a67887e6dbd 100644
--- a/arch/arm/mach-pxa/sleep.S
+++ b/arch/arm/mach-pxa/sleep.S
@@ -35,9 +35,11 @@ ENTRY(pxa3xx_cpu_suspend)
#endif
stmfd sp!, {r2 - r12, lr} @ save registers on stack
mov r1, r0
- ldr r3, =pxa_cpu_resume @ resume function
+ adr r3, BSYM(pxa3xx_finish_suspend)
bl cpu_suspend
+ b pxa_cpu_resume
+pxa3xx_finish_suspend:
mov r0, #0x06 @ S2D3C4 mode
mcr p14, 0, r0, c7, c0, 0 @ enter sleep
@@ -60,9 +62,11 @@ ENTRY(pxa27x_cpu_suspend)
#endif
stmfd sp!, {r2 - r12, lr} @ save registers on stack
mov r2, r0 @ save sleep mode
- ldr r3, =pxa_cpu_resume @ resume function
+ adr r3, BSYM(pxa27x_finish_suspend)
bl cpu_suspend
+ b pxa_cpu_resume
+pxa27x_finish_suspend:
@ Put the processor to sleep
@ (also workaround for sighting 28071)
@@ -110,8 +114,11 @@ ENTRY(pxa27x_cpu_suspend)
ENTRY(pxa25x_cpu_suspend)
stmfd sp!, {r2 - r12, lr} @ save registers on stack
mov r2, r0 @ save sleep mode
- ldr r3, =pxa_cpu_resume @ resume function
+ adr r3, BSYM(pxa25x_finish_suspend)
bl cpu_suspend
+ b pxa_cpu_resume
+
+pxa25x_finish_suspend:
@ prepare value for sleep mode
mov r1, r0 @ sleep mode