diff options
Diffstat (limited to 'arch/powerpc/platforms')
-rw-r--r-- | arch/powerpc/platforms/iseries/exception.S | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/arch/powerpc/platforms/iseries/exception.S b/arch/powerpc/platforms/iseries/exception.S index 5369653dcf6a..fba5bf915073 100644 --- a/arch/powerpc/platforms/iseries/exception.S +++ b/arch/powerpc/platforms/iseries/exception.S | |||
@@ -43,17 +43,14 @@ system_reset_iSeries: | |||
43 | LOAD_REG_ADDR(r23, alpaca) | 43 | LOAD_REG_ADDR(r23, alpaca) |
44 | li r0,ALPACA_SIZE | 44 | li r0,ALPACA_SIZE |
45 | sub r23,r13,r23 | 45 | sub r23,r13,r23 |
46 | divdu r23,r23,r0 /* r23 has cpu number */ | 46 | divdu r24,r23,r0 /* r24 has cpu number */ |
47 | LOAD_REG_ADDR(r13, paca) | ||
48 | mulli r0,r23,PACA_SIZE | ||
49 | add r13,r13,r0 | ||
50 | mtspr SPRN_SPRG_PACA,r13 /* Save it away for the future */ | ||
51 | mfmsr r24 | ||
52 | ori r24,r24,MSR_RI | ||
53 | mtmsrd r24 /* RI on */ | ||
54 | mr r24,r23 | ||
55 | cmpwi 0,r24,0 /* Are we processor 0? */ | 47 | cmpwi 0,r24,0 /* Are we processor 0? */ |
56 | bne 1f | 48 | bne 1f |
49 | LOAD_REG_ADDR(r13, boot_paca) | ||
50 | mtspr SPRN_SPRG_PACA,r13 /* Save it away for the future */ | ||
51 | mfmsr r23 | ||
52 | ori r23,r23,MSR_RI | ||
53 | mtmsrd r23 /* RI on */ | ||
57 | b .__start_initialization_iSeries /* Start up the first processor */ | 54 | b .__start_initialization_iSeries /* Start up the first processor */ |
58 | 1: mfspr r4,SPRN_CTRLF | 55 | 1: mfspr r4,SPRN_CTRLF |
59 | li r5,CTRL_RUNLATCH /* Turn off the run light */ | 56 | li r5,CTRL_RUNLATCH /* Turn off the run light */ |
@@ -86,6 +83,16 @@ system_reset_iSeries: | |||
86 | #endif | 83 | #endif |
87 | 84 | ||
88 | 2: | 85 | 2: |
86 | /* Load our paca now that it's been allocated */ | ||
87 | LOAD_REG_ADDR(r13, paca) | ||
88 | ld r13,0(r13) | ||
89 | mulli r0,r24,PACA_SIZE | ||
90 | add r13,r13,r0 | ||
91 | mtspr SPRN_SPRG_PACA,r13 /* Save it away for the future */ | ||
92 | mfmsr r23 | ||
93 | ori r23,r23,MSR_RI | ||
94 | mtmsrd r23 /* RI on */ | ||
95 | |||
89 | HMT_LOW | 96 | HMT_LOW |
90 | #ifdef CONFIG_SMP | 97 | #ifdef CONFIG_SMP |
91 | lbz r23,PACAPROCSTART(r13) /* Test if this processor | 98 | lbz r23,PACAPROCSTART(r13) /* Test if this processor |