diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-06-13 10:58:34 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-06-24 03:48:43 -0400 |
commit | e8856a8797e76e6883ae81f8f9ecbb231cc535df (patch) | |
tree | f256d1100f2458e01ca2680052466b24bbabe664 /arch/arm/include | |
parent | dbc125168fd7dda4ffb24a29548746c7bd3b3d87 (diff) |
ARM: pm: convert cpu_suspend() to a normal function
cpu_suspend() has a weird calling method which makes it only possible to
call from assembly code: it returns with a modified stack pointer to
finish the suspend, but on resume, it 'returns' via a provided pointer.
We can make cpu_suspend() appear to be a normal function merely by
swapping the resume pointer argument and the link register.
Do so, and update all callers to take account of this more traditional
behaviour.
Acked-by: Frank Hofmann <frank.hofmann@tomtom.com>
Tested-by: Kevin Hilman <khilman@ti.com>
Acked-by: Jean Pihet <j-pihet@ti.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/include')
-rw-r--r-- | arch/arm/include/asm/system.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h index 832888d0c20c..50be6055df89 100644 --- a/arch/arm/include/asm/system.h +++ b/arch/arm/include/asm/system.h | |||
@@ -106,6 +106,8 @@ extern void __show_regs(struct pt_regs *); | |||
106 | 106 | ||
107 | extern int cpu_architecture(void); | 107 | extern int cpu_architecture(void); |
108 | extern void cpu_init(void); | 108 | extern void cpu_init(void); |
109 | extern void cpu_suspend(int, long, unsigned long, void (*)(unsigned long)); | ||
110 | extern void cpu_resume(void); | ||
109 | 111 | ||
110 | void arm_machine_restart(char mode, const char *cmd); | 112 | void arm_machine_restart(char mode, const char *cmd); |
111 | extern void (*arm_pm_restart)(char str, const char *cmd); | 113 | extern void (*arm_pm_restart)(char str, const char *cmd); |