summaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel/cpu/shmobile/sleep.S
diff options
context:
space:
mode:
authorMagnus Damm <damm@opensource.se>2009-10-30 04:24:40 +0000
committerPaul Mundt <lethal@linux-sh.org>2009-10-30 14:38:45 +0900
commitbb3e0eed9dd51987c7462bae2880a3d4d750c55a (patch)
tree3e8bb7465ab8e39c7836562dccb539817fe3c5f3 /arch/sh/kernel/cpu/shmobile/sleep.S
parent03625e7107cde46e2851557ec06426799e6ae7f2 (diff)
downloadop-kernel-dev-bb3e0eed9dd51987c7462bae2880a3d4d750c55a.zip
op-kernel-dev-bb3e0eed9dd51987c7462bae2880a3d4d750c55a.tar.gz
sh: Add R-standby sleep mode support
Add R-standby specific bits to the SuperH Mobile sleep code. Signed-off-by: Magnus Damm <damm@opensource.se> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/cpu/shmobile/sleep.S')
-rw-r--r--arch/sh/kernel/cpu/shmobile/sleep.S12
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/sh/kernel/cpu/shmobile/sleep.S b/arch/sh/kernel/cpu/shmobile/sleep.S
index e620bf3..e9dd7fa 100644
--- a/arch/sh/kernel/cpu/shmobile/sleep.S
+++ b/arch/sh/kernel/cpu/shmobile/sleep.S
@@ -48,6 +48,9 @@ ENTRY(sh_mobile_sleep_enter_start)
stc sr, r0
mov.l r0, @(SH_SLEEP_SR, r5)
+ /* save sp */
+ mov.l r15, @(SH_SLEEP_SP, r5)
+
/* save stbcr */
bsr save_register
mov #SH_SLEEP_REG_STBCR, r0
@@ -125,6 +128,12 @@ test_rstandby:
tst #SUSP_SH_RSTANDBY, r0
bt test_ustandby
+ /* setup BAR register */
+ bsr get_register
+ mov #SH_SLEEP_REG_BAR, r0
+ mov.l @(SH_SLEEP_RESUME, r5), r1
+ mov.l r1, @r0
+
/* set mode to "r-standby mode" */
bra do_sleep
mov #0x20, r1
@@ -203,6 +212,9 @@ ENTRY(sh_mobile_sleep_resume_start)
mov.l @(SH_SLEEP_SR, r5), r0
ldc r0, ssr
+ /* restore sp */
+ mov.l @(SH_SLEEP_SP, r5), r15
+
/* restore sleep mode register */
bsr restore_register
mov #SH_SLEEP_REG_STBCR, r0
OpenPOWER on IntegriCloud