diff options
author | Nicholas Piggin <npiggin@gmail.com> | 2019-08-02 12:56:50 +0200 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2019-08-30 03:14:57 +0200 |
commit | 4515c5fa41936088a57efe0b64d1bb46a4943582 (patch) | |
tree | 2e435c16fc69377d17fa1191707cd6b5224c6840 /arch/powerpc/kernel/exceptions-64s.S | |
parent | powerpc/64s/exception: Add the virt variant of the denorm interrupt handler (diff) | |
download | linux-4515c5fa41936088a57efe0b64d1bb46a4943582.tar.xz linux-4515c5fa41936088a57efe0b64d1bb46a4943582.zip |
powerpc/64s/exception: INT_HANDLER support HDAR/HDSISR and use it in HDSI
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20190802105709.27696-26-npiggin@gmail.com
Diffstat (limited to '')
-rw-r--r-- | arch/powerpc/kernel/exceptions-64s.S | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S index d2aa63b6a8a8..476e4bbf1bf5 100644 --- a/arch/powerpc/kernel/exceptions-64s.S +++ b/arch/powerpc/kernel/exceptions-64s.S @@ -620,11 +620,19 @@ END_FTR_SECTION_IFSET(CPU_FTR_CAN_NAP) GET_SCRATCH0(r10) std r10,\area\()+EX_R13(r13) .if \dar + .if \hsrr + mfspr r10,SPRN_HDAR + .else mfspr r10,SPRN_DAR + .endif std r10,\area\()+EX_DAR(r13) .endif .if \dsisr + .if \hsrr + mfspr r10,SPRN_HDSISR + .else mfspr r10,SPRN_DSISR + .endif stw r10,\area\()+EX_DSISR(r13) .endif @@ -1563,17 +1571,13 @@ EXC_COMMON(single_step_common, 0xd00, single_step_exception) EXC_REAL_BEGIN(h_data_storage, 0xe00, 0x20) - INT_HANDLER h_data_storage, 0xe00, ool=1, hsrr=EXC_HV, kvm=1 + INT_HANDLER h_data_storage, 0xe00, ool=1, hsrr=EXC_HV, dar=1, dsisr=1, kvm=1 EXC_REAL_END(h_data_storage, 0xe00, 0x20) EXC_VIRT_BEGIN(h_data_storage, 0x4e00, 0x20) - INT_HANDLER h_data_storage, 0xe00, ool=1, virt=1, hsrr=EXC_HV, kvm=1 + INT_HANDLER h_data_storage, 0xe00, ool=1, virt=1, hsrr=EXC_HV, dar=1, dsisr=1, kvm=1 EXC_VIRT_END(h_data_storage, 0x4e00, 0x20) TRAMP_KVM_HV_SKIP(PACA_EXGEN, 0xe00) EXC_COMMON_BEGIN(h_data_storage_common) - mfspr r10,SPRN_HDAR - std r10,PACA_EXGEN+EX_DAR(r13) - mfspr r10,SPRN_HDSISR - stw r10,PACA_EXGEN+EX_DSISR(r13) EXCEPTION_COMMON(PACA_EXGEN, 0xe00) bl save_nvgprs RECONCILE_IRQ_STATE(r10, r11) |