aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2016-07-24 09:27:12 +1000
committerStewart Smith <stewart@linux.vnet.ibm.com>2016-08-22 15:26:51 +1000
commit2238dd778f56115bec8a39816a660f573e5db213 (patch)
tree97e1cc6b1eedebd4e4eee26c55b5115690e13f87
parentad0eb2ca2ca7cab621f990a694746198cbc94ed1 (diff)
downloadskiboot-2238dd778f56115bec8a39816a660f573e5db213.zip
skiboot-2238dd778f56115bec8a39816a660f573e5db213.tar.gz
skiboot-2238dd778f56115bec8a39816a660f573e5db213.tar.bz2
slw: Move SPR setup calls away from assembly
Move them to the C code so that rvwinkle_restore() is more generic and suitable for use for nap mode wakeup as well Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
-rw-r--r--asm/head.S9
-rw-r--r--hw/slw.c4
2 files changed, 4 insertions, 9 deletions
diff --git a/asm/head.S b/asm/head.S
index 05715e9..eb0054a 100644
--- a/asm/head.S
+++ b/asm/head.S
@@ -623,15 +623,6 @@ rvwinkle_restore:
/* Get PIR */
mfspr %r31,SPR_PIR
- /* Initialize per-core SPRs
- *
- * XXX We do it on each thread ... oh well, improve that later
- */
- bl init_shared_sprs
-
- /* Initialize thread SPRs */
- bl init_replicated_sprs
-
/* Get that CPU stack base and use it to restore r13 */
GET_STACK(%r1,%r31)
GET_CPU()
diff --git a/hw/slw.c b/hw/slw.c
index 9336679..aeb4ff1 100644
--- a/hw/slw.c
+++ b/hw/slw.c
@@ -87,6 +87,10 @@ static void slw_do_rvwinkle(void *data)
enter_pm_state(1);
+ /* Restore SPRs */
+ init_shared_sprs();
+ init_replicated_sprs();
+
/* Ok, it's ours again */
cpu->state = cpu_state_active;