diff options
author | Nicholas Piggin <npiggin@gmail.com> | 2016-09-21 17:44:01 +1000 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2016-10-04 13:07:13 +1100 |
commit | d7e898491c6f5d363c2528351254e8499aef5dd3 (patch) | |
tree | ec29c0ef51e16299766e87b8d491c26dce911bc4 /arch/powerpc/kernel | |
parent | 4e96dbbfe3dc165c02c5760599c4fab1dd019276 (diff) | |
download | lwn-d7e898491c6f5d363c2528351254e8499aef5dd3.tar.gz lwn-d7e898491c6f5d363c2528351254e8499aef5dd3.zip |
powerpc/64s: Consolidate Softpatch 0x1500 interrupt
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r-- | arch/powerpc/kernel/exceptions-64s.S | 72 |
1 files changed, 37 insertions, 35 deletions
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S index 0214c97c117d..04d25c76adee 100644 --- a/arch/powerpc/kernel/exceptions-64s.S +++ b/arch/powerpc/kernel/exceptions-64s.S @@ -1163,34 +1163,15 @@ EXC_REAL_BEGIN(denorm_exception_hv, 0x1500, 0x1600) EXCEPTION_PROLOG_PSERIES_1(denorm_common, EXC_HV) EXC_REAL_END(denorm_exception_hv, 0x1500, 0x1600) -TRAMP_KVM_SKIP(PACA_EXGEN, 0x1500) - -#ifdef CONFIG_CBE_RAS -EXC_REAL_HV(cbe_maintenance, 0x1600, 0x1700) - -TRAMP_KVM_HV_SKIP(PACA_EXGEN, 0x1600) - -#else /* CONFIG_CBE_RAS */ -EXC_REAL_NONE(0x1600, 0x1700) -#endif - -EXC_REAL(altivec_assist, 0x1700, 0x1800) - -TRAMP_KVM(PACA_EXGEN, 0x1700) - -#ifdef CONFIG_CBE_RAS -EXC_REAL_HV(cbe_thermal, 0x1800, 0x1900) - -TRAMP_KVM_HV_SKIP(PACA_EXGEN, 0x1800) - -#else /* CONFIG_CBE_RAS */ -EXC_REAL_NONE(0x1800, 0x1900) +#ifdef CONFIG_PPC_DENORMALISATION +EXC_VIRT_BEGIN(denorm_exception, 0x5500, 0x5600) + b exc_real_0x1500_denorm_exception_hv +EXC_VIRT_END(denorm_exception, 0x5500, 0x5600) +#else +EXC_VIRT_NONE(0x5500, 0x5600) #endif - -/*** Out of line interrupts support ***/ - - /* moved from 0x200 */ +TRAMP_KVM_SKIP(PACA_EXGEN, 0x1500) #ifdef CONFIG_PPC_DENORMALISATION TRAMP_REAL_BEGIN(denorm_assist) @@ -1256,6 +1237,36 @@ END_FTR_SECTION_IFSET(CPU_FTR_CFAR) b . #endif +EXC_COMMON_HV(denorm_common, 0x1500, unknown_exception) + + +#ifdef CONFIG_CBE_RAS +EXC_REAL_HV(cbe_maintenance, 0x1600, 0x1700) + +TRAMP_KVM_HV_SKIP(PACA_EXGEN, 0x1600) + +#else /* CONFIG_CBE_RAS */ +EXC_REAL_NONE(0x1600, 0x1700) +#endif + +EXC_REAL(altivec_assist, 0x1700, 0x1800) + +TRAMP_KVM(PACA_EXGEN, 0x1700) + +#ifdef CONFIG_CBE_RAS +EXC_REAL_HV(cbe_thermal, 0x1800, 0x1900) + +TRAMP_KVM_HV_SKIP(PACA_EXGEN, 0x1800) + +#else /* CONFIG_CBE_RAS */ +EXC_REAL_NONE(0x1800, 0x1900) +#endif + + +/*** Out of line interrupts support ***/ + + /* moved from 0x200 */ + /* * An interrupt came in while soft-disabled. We set paca->irq_happened, then: * - If it was a decrementer interrupt, we bump the dec to max and and return. @@ -1376,7 +1387,6 @@ TRAMP_REAL_BEGIN(kvmppc_skip_Hinterrupt) /*** Common interrupt handlers ***/ -EXC_COMMON_HV(denorm_common, 0x1500, unknown_exception) #ifdef CONFIG_ALTIVEC EXC_COMMON(altivec_assist_common, 0x1700, altivec_assist_exception) #else @@ -1399,14 +1409,6 @@ EXC_COMMON(altivec_assist_common, 0x1700, unknown_exception) * come here. */ -#ifdef CONFIG_PPC_DENORMALISATION -EXC_VIRT_BEGIN(denorm_exception, 0x5500, 0x5600) - b exc_real_0x1500_denorm_exception_hv -EXC_VIRT_END(denorm_exception, 0x5500, 0x5600) -#else -EXC_VIRT_NONE(0x5500, 0x5600) -#endif - EXC_VIRT_NONE(0x5600, 0x5700) EXC_VIRT(altivec_assist, 0x5700, 0x5800, 0x1700) |