powerpc/of: Remove useless register save/restore when calling OF back

enter_prom() used to save and restore registers such as CTR, XER etc..
which are volatile, or SRR0,1... which we don't care about. This
removes a bunch of useless code and while at it turns an mtmsrd into
an MTMSRD macro which will be useful to Book3E.
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 7d60b02c
...@@ -823,30 +823,17 @@ _GLOBAL(enter_prom) ...@@ -823,30 +823,17 @@ _GLOBAL(enter_prom)
* of all registers that it saves. We therefore save those registers * of all registers that it saves. We therefore save those registers
* PROM might touch to the stack. (r0, r3-r13 are caller saved) * PROM might touch to the stack. (r0, r3-r13 are caller saved)
*/ */
SAVE_8GPRS(2, r1) SAVE_GPR(2, r1)
SAVE_GPR(13, r1) SAVE_GPR(13, r1)
SAVE_8GPRS(14, r1) SAVE_8GPRS(14, r1)
SAVE_10GPRS(22, r1) SAVE_10GPRS(22, r1)
mfcr r4 mfcr r10
std r4,_CCR(r1)
mfctr r5
std r5,_CTR(r1)
mfspr r6,SPRN_XER
std r6,_XER(r1)
mfdar r7
std r7,_DAR(r1)
mfdsisr r8
std r8,_DSISR(r1)
mfsrr0 r9
std r9,_SRR0(r1)
mfsrr1 r10
std r10,_SRR1(r1)
mfmsr r11 mfmsr r11
std r10,_CCR(r1)
std r11,_MSR(r1) std r11,_MSR(r1)
/* Get the PROM entrypoint */ /* Get the PROM entrypoint */
ld r0,GPR4(r1) mtlr r4
mtlr r0
/* Switch MSR to 32 bits mode /* Switch MSR to 32 bits mode
*/ */
...@@ -860,8 +847,7 @@ _GLOBAL(enter_prom) ...@@ -860,8 +847,7 @@ _GLOBAL(enter_prom)
mtmsrd r11 mtmsrd r11
isync isync
/* Restore arguments & enter PROM here... */ /* Enter PROM here... */
ld r3,GPR3(r1)
blrl blrl
/* Just make sure that r1 top 32 bits didn't get /* Just make sure that r1 top 32 bits didn't get
...@@ -871,7 +857,7 @@ _GLOBAL(enter_prom) ...@@ -871,7 +857,7 @@ _GLOBAL(enter_prom)
/* Restore the MSR (back to 64 bits) */ /* Restore the MSR (back to 64 bits) */
ld r0,_MSR(r1) ld r0,_MSR(r1)
mtmsrd r0 MTMSRD(r0)
isync isync
/* Restore other registers */ /* Restore other registers */
...@@ -881,18 +867,6 @@ _GLOBAL(enter_prom) ...@@ -881,18 +867,6 @@ _GLOBAL(enter_prom)
REST_10GPRS(22, r1) REST_10GPRS(22, r1)
ld r4,_CCR(r1) ld r4,_CCR(r1)
mtcr r4 mtcr r4
ld r5,_CTR(r1)
mtctr r5
ld r6,_XER(r1)
mtspr SPRN_XER,r6
ld r7,_DAR(r1)
mtdar r7
ld r8,_DSISR(r1)
mtdsisr r8
ld r9,_SRR0(r1)
mtsrr0 r9
ld r10,_SRR1(r1)
mtsrr1 r10
addi r1,r1,PROM_FRAME_SIZE addi r1,r1,PROM_FRAME_SIZE
ld r0,16(r1) ld r0,16(r1)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment