We now have r11 available. Use it to avoid reloading DSISR from the stack when needed.
Signed-off-by: Christophe Leroy <christophe.le...@csgroup.eu> --- arch/powerpc/kernel/head_6xx_8xx.h | 4 ++-- arch/powerpc/kernel/head_8xx.S | 3 +-- arch/powerpc/kernel/head_book3s_32.S | 3 +-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/arch/powerpc/kernel/head_6xx_8xx.h b/arch/powerpc/kernel/head_6xx_8xx.h index 5a90bafee536..7116162dae9d 100644 --- a/arch/powerpc/kernel/head_6xx_8xx.h +++ b/arch/powerpc/kernel/head_6xx_8xx.h @@ -72,9 +72,9 @@ tovirt(r12, r12) .if \handle_dar_dsisr lwz r10, DAR(r12) + lwz r11, DSISR(r12) stw r10, _DAR(r1) - lwz r10, DSISR(r12) - stw r10, _DSISR(r1) + stw r11, _DSISR(r1) .endif lwz r9, SRR1(r12) lwz r12, SRR0(r12) diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S index 7a078b26d24c..7e9cbd64efd9 100644 --- a/arch/powerpc/kernel/head_8xx.S +++ b/arch/powerpc/kernel/head_8xx.S @@ -335,9 +335,8 @@ DARFixed:/* Return from dcbx instruction bug workaround */ mtspr SPRN_DAR, r11 /* Tag DAR, to be used in DTLB Error */ EXCEPTION_PROLOG_1 EXCEPTION_PROLOG_2 handle_dar_dsisr=1 + andis. r10,r11,DSISR_NOHPTE@h lwz r4, _DAR(r1) - lwz r5, _DSISR(r1) - andis. r10,r5,DSISR_NOHPTE@h beq+ .Ldtlbie tlbie r4 .Ldtlbie: diff --git a/arch/powerpc/kernel/head_book3s_32.S b/arch/powerpc/kernel/head_book3s_32.S index 40ee63af84f2..c0db295734f5 100644 --- a/arch/powerpc/kernel/head_book3s_32.S +++ b/arch/powerpc/kernel/head_book3s_32.S @@ -653,8 +653,7 @@ alignment_exception_tramp: handle_page_fault_tramp_1: EXCEPTION_PROLOG_2 handle_dar_dsisr=1 - lwz r5, _DSISR(r1) - andis. r0, r5, DSISR_DABRMATCH@h + andis. r0, r11, DSISR_DABRMATCH@h bne- 1f EXC_XFER_LITE(0x300, handle_page_fault) 1: EXC_XFER_STD(0x300, do_break) -- 2.25.0