mirror of https://gitee.com/openkylin/linux.git
powerpc/64s: Consolidate Softpatch 0x1500 interrupt
Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
4e96dbbfe3
commit
d7e898491c
|
@ -1163,35 +1163,16 @@ EXC_REAL_BEGIN(denorm_exception_hv, 0x1500, 0x1600)
|
||||||
EXCEPTION_PROLOG_PSERIES_1(denorm_common, EXC_HV)
|
EXCEPTION_PROLOG_PSERIES_1(denorm_common, EXC_HV)
|
||||||
EXC_REAL_END(denorm_exception_hv, 0x1500, 0x1600)
|
EXC_REAL_END(denorm_exception_hv, 0x1500, 0x1600)
|
||||||
|
|
||||||
|
#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
|
||||||
|
|
||||||
TRAMP_KVM_SKIP(PACA_EXGEN, 0x1500)
|
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)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*** Out of line interrupts support ***/
|
|
||||||
|
|
||||||
/* moved from 0x200 */
|
|
||||||
|
|
||||||
#ifdef CONFIG_PPC_DENORMALISATION
|
#ifdef CONFIG_PPC_DENORMALISATION
|
||||||
TRAMP_REAL_BEGIN(denorm_assist)
|
TRAMP_REAL_BEGIN(denorm_assist)
|
||||||
BEGIN_FTR_SECTION
|
BEGIN_FTR_SECTION
|
||||||
|
@ -1256,6 +1237,36 @@ END_FTR_SECTION_IFSET(CPU_FTR_CFAR)
|
||||||
b .
|
b .
|
||||||
#endif
|
#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:
|
* 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.
|
* - 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 ***/
|
/*** Common interrupt handlers ***/
|
||||||
|
|
||||||
|
|
||||||
EXC_COMMON_HV(denorm_common, 0x1500, unknown_exception)
|
|
||||||
#ifdef CONFIG_ALTIVEC
|
#ifdef CONFIG_ALTIVEC
|
||||||
EXC_COMMON(altivec_assist_common, 0x1700, altivec_assist_exception)
|
EXC_COMMON(altivec_assist_common, 0x1700, altivec_assist_exception)
|
||||||
#else
|
#else
|
||||||
|
@ -1399,14 +1409,6 @@ EXC_COMMON(altivec_assist_common, 0x1700, unknown_exception)
|
||||||
* come here.
|
* 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_NONE(0x5600, 0x5700)
|
||||||
|
|
||||||
EXC_VIRT(altivec_assist, 0x5700, 0x5800, 0x1700)
|
EXC_VIRT(altivec_assist, 0x5700, 0x5800, 0x1700)
|
||||||
|
|
Loading…
Reference in New Issue