On 08/03/2022, 14:50:40, Nicholas Piggin wrote:
> 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 <npig...@gmail.com>

Reviewed-by: Laurent Dufour <lduf...@linux.ibm.com>

> ---
>  arch/powerpc/kernel/rtas_entry.S | 13 ++++---------
>  1 file changed, 4 insertions(+), 9 deletions(-)
> 
> diff --git a/arch/powerpc/kernel/rtas_entry.S 
> b/arch/powerpc/kernel/rtas_entry.S
> index 08eb731f08b8..5f65ea4436c6 100644
> --- a/arch/powerpc/kernel/rtas_entry.S
> +++ b/arch/powerpc/kernel/rtas_entry.S
> @@ -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
> @@ -129,15 +128,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
> @@ -153,11 +151,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)

Reply via email to