diff options
author | Christophe Leroy <christophe.leroy@csgroup.eu> | 2021-03-12 13:50:41 +0100 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2021-03-29 04:22:09 +0200 |
commit | 4c0104a83fc3990a76a01a2f4e504251fa9814c4 (patch) | |
tree | 5e98d03e8e6148c3e75828a511eb13f158f693f9 /arch/powerpc/kernel/head_8xx.S | |
parent | powerpc/32: Only restore non volatile registers when required (diff) | |
download | linux-4c0104a83fc3990a76a01a2f4e504251fa9814c4.tar.xz linux-4c0104a83fc3990a76a01a2f4e504251fa9814c4.zip |
powerpc/32: Dismantle EXC_XFER_STD/LITE/TEMPLATE
In order to get more control in exception prolog, dismantle
all non standard exception macros, finishing with EXC_XFER_STD
and EXC_XFER_LITE and EXC_XFER_TEMPLATE.
Also remove transfer_to_handler_full and ret_from_except and
ret_from_except_full as they are not used anymore.
Last parameter of EXCEPTION() is now ignored, will be removed
in a later patch to avoid too much churn.
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/ca5795d04a220586b7037dbbbe6951dfa9e768eb.1615552867.git.christophe.leroy@csgroup.eu
Diffstat (limited to 'arch/powerpc/kernel/head_8xx.S')
-rw-r--r-- | arch/powerpc/kernel/head_8xx.S | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S index 86f844eb0e5a..4d73549722a1 100644 --- a/arch/powerpc/kernel/head_8xx.S +++ b/arch/powerpc/kernel/head_8xx.S @@ -123,7 +123,9 @@ instruction_counter: /* Machine check */ START_EXCEPTION(0x200, MachineCheck) EXCEPTION_PROLOG 0x200 MachineCheck handle_dar_dsisr=1 - EXC_XFER_STD(0x200, machine_check_exception) + prepare_transfer_to_handler + bl machine_check_exception + b interrupt_return /* External interrupt */ EXCEPTION(0x500, HardwareInterrupt, do_IRQ, EXC_XFER_LITE) @@ -314,7 +316,9 @@ instruction_counter: .Litlbie: stw r12, _DAR(r11) stw r5, _DSISR(r11) - EXC_XFER_LITE(0x400, do_page_fault) + prepare_transfer_to_handler + bl do_page_fault + b interrupt_return /* This is the data TLB error on the MPC8xx. This could be due to * many reasons, including a dirty update to a pte. We bail out to @@ -335,7 +339,9 @@ DARFixed:/* Return from dcbx instruction bug workaround */ beq+ .Ldtlbie tlbie r4 .Ldtlbie: - EXC_XFER_LITE(0x300, do_page_fault) + prepare_transfer_to_handler + bl do_page_fault + b interrupt_return #ifdef CONFIG_VMAP_STACK vmap_stack_overflow_exception |