Skip to content

Commit

Permalink
powerpc/rtas: PACA can be restored directly from SPRG
Browse files Browse the repository at this point in the history
On 64-bit, PACA is saved in a SPRG so it does not need to be saved on
stack. We also don't need to mask off the top bits for real mode
addresses because the architecture does this for us.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Laurent Dufour <ldufour@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20220308135047.478297-8-npiggin@gmail.com
  • Loading branch information
Nicholas Piggin authored and Michael Ellerman committed May 19, 2022
1 parent c5a65e0 commit 5c86bd0
Showing 1 changed file with 4 additions and 9 deletions.
13 changes: 4 additions & 9 deletions arch/powerpc/kernel/rtas_entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,9 @@ _GLOBAL(enter_rtas)

/* Because RTAS is running in 32b mode, it clobbers the high order half
* of all registers that it saves. We therefore save those registers
* RTAS might touch to the stack. (r0, r3-r13 are caller saved)
* RTAS might touch to the stack. (r0, r3-r12 are caller saved)
*/
SAVE_GPR(2, r1) /* Save the TOC */
SAVE_GPR(13, r1) /* Save paca */
SAVE_NVGPRS(r1) /* Save the non-volatiles */

mfcr r4
Expand Down Expand Up @@ -135,15 +134,14 @@ rtas_return_loc:
mtmsrd r6

/* relocation is off at this point */
GET_PACA(r4)
clrldi r4,r4,2 /* convert to realmode address */
GET_PACA(r13)

bcl 20,31,$+4
0: mflr r3
ld r3,(1f-0b)(r3) /* get &rtas_restore_regs */

ld r1,PACAR1(r4) /* Restore our SP */
ld r4,PACASAVEDMSR(r4) /* Restore our MSR */
ld r1,PACAR1(r13) /* Restore our SP */
ld r4,PACASAVEDMSR(r13) /* Restore our MSR */

mtspr SPRN_SRR0,r3
mtspr SPRN_SRR1,r4
Expand All @@ -159,11 +157,8 @@ _ASM_NOKPROBE_SYMBOL(rtas_return_loc)
rtas_restore_regs:
/* relocation is on at this point */
REST_GPR(2, r1) /* Restore the TOC */
REST_GPR(13, r1) /* Restore paca */
REST_NVGPRS(r1) /* Restore the non-volatiles */

GET_PACA(r13)

ld r4,_CCR(r1)
mtcr r4
ld r5,_CTR(r1)
Expand Down

0 comments on commit 5c86bd0

Please sign in to comment.