diff options
author | Nicholas Piggin <npiggin@gmail.com> | 2016-09-21 07:43:33 (GMT) |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2016-10-04 02:06:58 (GMT) |
commit | 2b9af6e40e477fbfe39777dda9a609ae359d3dd8 (patch) | |
tree | 25ed7500254be252ed4fc50055937efb96344e20 /arch | |
parent | 80795e6cbed51cc3bebeb016ba14f0cbb811386f (diff) | |
download | linux-2b9af6e40e477fbfe39777dda9a609ae359d3dd8.tar.xz |
powerpc/64s: Consolidate Data Segment 0x380 interrupt
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/kernel/exceptions-64s.S | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S index edab8cc..c3e1f61 100644 --- a/arch/powerpc/kernel/exceptions-64s.S +++ b/arch/powerpc/kernel/exceptions-64s.S @@ -566,6 +566,31 @@ EXC_REAL_BEGIN(data_access_slb, 0x380, 0x400) #endif EXC_REAL_END(data_access_slb, 0x380, 0x400) +EXC_VIRT_BEGIN(data_access_slb, 0x4380, 0x4400) + SET_SCRATCH0(r13) + EXCEPTION_PROLOG_0(PACA_EXSLB) + EXCEPTION_PROLOG_1(PACA_EXSLB, NOTEST, 0x380) + std r3,PACA_EXSLB+EX_R3(r13) + mfspr r3,SPRN_DAR + mfspr r12,SPRN_SRR1 + crset 4*cr6+eq +#ifndef CONFIG_RELOCATABLE + b slb_miss_realmode +#else + /* + * We can't just use a direct branch to slb_miss_realmode + * because the distance from here to there depends on where + * the kernel ends up being put. + */ + mfctr r11 + LOAD_HANDLER(r10, slb_miss_realmode) + mtctr r10 + bctr +#endif +EXC_VIRT_END(data_access_slb, 0x4380, 0x4400) +TRAMP_KVM_SKIP(PACA_EXSLB, 0x380) + + EXC_REAL(instruction_access, 0x400, 0x480) EXC_REAL_BEGIN(instruction_access_slb, 0x480, 0x500) @@ -747,7 +772,6 @@ EXC_REAL_NONE(0x1800, 0x1900) /*** Out of line interrupts support ***/ /* moved from 0x200 */ -TRAMP_KVM_SKIP(PACA_EXSLB, 0x380) TRAMP_KVM(PACA_EXGEN, 0x400) TRAMP_KVM(PACA_EXSLB, 0x480) TRAMP_KVM(PACA_EXGEN, 0x900) @@ -1016,30 +1040,6 @@ EXC_COMMON(altivec_assist_common, 0x1700, unknown_exception) * come here. */ - -EXC_VIRT_BEGIN(data_access_slb, 0x4380, 0x4400) - SET_SCRATCH0(r13) - EXCEPTION_PROLOG_0(PACA_EXSLB) - EXCEPTION_PROLOG_1(PACA_EXSLB, NOTEST, 0x380) - std r3,PACA_EXSLB+EX_R3(r13) - mfspr r3,SPRN_DAR - mfspr r12,SPRN_SRR1 - crset 4*cr6+eq -#ifndef CONFIG_RELOCATABLE - b slb_miss_realmode -#else - /* - * We can't just use a direct branch to slb_miss_realmode - * because the distance from here to there depends on where - * the kernel ends up being put. - */ - mfctr r11 - LOAD_HANDLER(r10, slb_miss_realmode) - mtctr r10 - bctr -#endif -EXC_VIRT_END(data_access_slb, 0x4380, 0x4400) - EXC_VIRT(instruction_access, 0x4400, 0x4480, 0x400) EXC_VIRT_BEGIN(instruction_access_slb, 0x4480, 0x4500) |