|
@@ -50,18 +50,28 @@ data_access_pSeries:
|
|
|
HMT_MEDIUM
|
|
|
mtspr SPRN_SPRG_SCRATCH0,r13
|
|
|
BEGIN_FTR_SECTION
|
|
|
- mtspr SPRN_SPRG_SCRATCH1,r12
|
|
|
- mfspr r13,SPRN_DAR
|
|
|
- mfspr r12,SPRN_DSISR
|
|
|
- srdi r13,r13,60
|
|
|
- rlwimi r13,r12,16,0x20
|
|
|
- mfcr r12
|
|
|
- cmpwi r13,0x2c
|
|
|
+ mfspr r13,SPRN_SPRG_PACA
|
|
|
+ std r9,PACA_EXSLB+EX_R9(r13)
|
|
|
+ std r10,PACA_EXSLB+EX_R10(r13)
|
|
|
+ mfspr r10,SPRN_DAR
|
|
|
+ mfspr r9,SPRN_DSISR
|
|
|
+ srdi r10,r10,60
|
|
|
+ rlwimi r10,r9,16,0x20
|
|
|
+ mfcr r9
|
|
|
+ cmpwi r10,0x2c
|
|
|
beq do_stab_bolted_pSeries
|
|
|
- mtcrf 0x80,r12
|
|
|
- mfspr r12,SPRN_SPRG_SCRATCH1
|
|
|
-END_FTR_SECTION_IFCLR(CPU_FTR_SLB)
|
|
|
+ ld r10,PACA_EXSLB+EX_R10(r13)
|
|
|
+ std r11,PACA_EXGEN+EX_R11(r13)
|
|
|
+ ld r11,PACA_EXSLB+EX_R9(r13)
|
|
|
+ std r12,PACA_EXGEN+EX_R12(r13)
|
|
|
+ mfspr r12,SPRN_SPRG_SCRATCH0
|
|
|
+ std r10,PACA_EXGEN+EX_R10(r13)
|
|
|
+ std r11,PACA_EXGEN+EX_R9(r13)
|
|
|
+ std r12,PACA_EXGEN+EX_R13(r13)
|
|
|
+ EXCEPTION_PROLOG_PSERIES_1(data_access_common)
|
|
|
+FTR_SECTION_ELSE
|
|
|
EXCEPTION_PROLOG_PSERIES(PACA_EXGEN, data_access_common)
|
|
|
+ALT_FTR_SECTION_END_IFCLR(CPU_FTR_SLB)
|
|
|
|
|
|
. = 0x380
|
|
|
.globl data_access_slb_pSeries
|
|
@@ -224,9 +234,11 @@ masked_interrupt:
|
|
|
|
|
|
.align 7
|
|
|
do_stab_bolted_pSeries:
|
|
|
- mtcrf 0x80,r12
|
|
|
- mfspr r12,SPRN_SPRG_SCRATCH1
|
|
|
- EXCEPTION_PROLOG_PSERIES(PACA_EXSLB, .do_stab_bolted)
|
|
|
+ std r11,PACA_EXSLB+EX_R11(r13)
|
|
|
+ std r12,PACA_EXSLB+EX_R12(r13)
|
|
|
+ mfspr r10,SPRN_SPRG_SCRATCH0
|
|
|
+ std r10,PACA_EXSLB+EX_R13(r13)
|
|
|
+ EXCEPTION_PROLOG_PSERIES_1(.do_stab_bolted)
|
|
|
|
|
|
#ifdef CONFIG_PPC_PSERIES
|
|
|
/*
|