On Mon, Jun 12, 2017 at 09:58:27AM +1000, Nicholas Piggin wrote:
> The __replay_interrupt code is branched to with bl, but the caller is
> returned to directly with rfid from the interrupt.
> 
> Instead return to a return stub that returns to the caller with blr,
> which should do better with the return predictor.
> 
> Signed-off-by: Nicholas Piggin <npig...@gmail.com>

Reviewed-by: Gautham R. Shenoy <e...@linux.vnet.ibm.com>
> ---
>  arch/powerpc/kernel/exceptions-64s.S | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/kernel/exceptions-64s.S 
> b/arch/powerpc/kernel/exceptions-64s.S
> index a04ee0d7f88e..d55201625ea3 100644
> --- a/arch/powerpc/kernel/exceptions-64s.S
> +++ b/arch/powerpc/kernel/exceptions-64s.S
> @@ -1586,7 +1586,7 @@ _GLOBAL(__replay_interrupt)
>        * we don't give a damn about, so we don't bother storing them.
>        */
>       mfmsr   r12
> -     mflr    r11
> +     LOAD_REG_ADDR(r11, __replay_interrupt_return)
>       mfcr    r9
>       ori     r12,r12,MSR_EE
>       cmpwi   r3,0x900
> @@ -1604,4 +1604,5 @@ FTR_SECTION_ELSE
>       cmpwi   r3,0xa00
>       beq     doorbell_super_common_msgclr
>  ALT_FTR_SECTION_END_IFSET(CPU_FTR_HVMODE)
> +__replay_interrupt_return:
>       blr
> -- 
> 2.11.0
> 

Reply via email to