aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2011-04-04 23:59:58 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2011-04-19 21:03:23 -0400
commit673b189a2e3353061fa8c49515d1014dab6ad9b9 (patch)
tree71d5842f2dcfcd24370ef25f35c97f0f81ebae87
parentb3e6b5dfcf0974069a8ddcce7dd071120d20d79c (diff)
powerpc: Always use SPRN_SPRG_HSCRATCH0 when running in HV mode
This uses feature sections to arrange that we always use HSPRG1 as the scratch register in the interrupt entry code rather than SPRG2 when we're running in hypervisor mode on POWER7. This will ensure that we don't trash the guest's SPRG2 when we are running KVM guests. To simplify the code, we define GET_SCRATCH0() and SET_SCRATCH0() macros like the GET_PACA/SET_PACA macros. Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r--arch/powerpc/include/asm/exception-64s.h15
-rw-r--r--arch/powerpc/include/asm/reg.h14
-rw-r--r--arch/powerpc/kernel/exceptions-64s.S26
-rw-r--r--arch/powerpc/kvm/book3s_rmhandlers.S6
-rw-r--r--arch/powerpc/kvm/book3s_segment.S2
-rw-r--r--arch/powerpc/platforms/iseries/exception.S2
-rw-r--r--arch/powerpc/platforms/iseries/exception.h4
7 files changed, 41 insertions, 28 deletions
diff --git a/arch/powerpc/include/asm/exception-64s.h b/arch/powerpc/include/asm/exception-64s.h
index fb5b0af30fcf..d6b4849df9b1 100644
--- a/arch/powerpc/include/asm/exception-64s.h
+++ b/arch/powerpc/include/asm/exception-64s.h
@@ -60,16 +60,15 @@
60#define EXC_HV H 60#define EXC_HV H
61#define EXC_STD 61#define EXC_STD
62 62
63#define __EXCEPTION_PROLOG_1(area, h) \ 63#define EXCEPTION_PROLOG_1(area) \
64 GET_PACA(r13); \ 64 GET_PACA(r13); \
65 std r9,area+EX_R9(r13); /* save r9 - r12 */ \ 65 std r9,area+EX_R9(r13); /* save r9 - r12 */ \
66 std r10,area+EX_R10(r13); \ 66 std r10,area+EX_R10(r13); \
67 std r11,area+EX_R11(r13); \ 67 std r11,area+EX_R11(r13); \
68 std r12,area+EX_R12(r13); \ 68 std r12,area+EX_R12(r13); \
69 mfspr r9,SPRN_SPRG_##h##SCRATCH0; \ 69 GET_SCRATCH0(r9); \
70 std r9,area+EX_R13(r13); \ 70 std r9,area+EX_R13(r13); \
71 mfcr r9 71 mfcr r9
72#define EXCEPTION_PROLOG_1(area, h) __EXCEPTION_PROLOG_1(area, h)
73 72
74#define __EXCEPTION_PROLOG_PSERIES_1(label, h) \ 73#define __EXCEPTION_PROLOG_PSERIES_1(label, h) \
75 ld r12,PACAKBASE(r13); /* get high part of &label */ \ 74 ld r12,PACAKBASE(r13); /* get high part of &label */ \
@@ -85,7 +84,7 @@
85 __EXCEPTION_PROLOG_PSERIES_1(label, h) 84 __EXCEPTION_PROLOG_PSERIES_1(label, h)
86 85
87#define EXCEPTION_PROLOG_PSERIES(area, label, h) \ 86#define EXCEPTION_PROLOG_PSERIES(area, label, h) \
88 EXCEPTION_PROLOG_1(area, h); \ 87 EXCEPTION_PROLOG_1(area); \
89 EXCEPTION_PROLOG_PSERIES_1(label, h); 88 EXCEPTION_PROLOG_PSERIES_1(label, h);
90 89
91/* 90/*
@@ -156,7 +155,7 @@
156label##_pSeries: \ 155label##_pSeries: \
157 HMT_MEDIUM; \ 156 HMT_MEDIUM; \
158 DO_KVM vec; \ 157 DO_KVM vec; \
159 mtspr SPRN_SPRG_SCRATCH0,r13; /* save r13 */ \ 158 SET_SCRATCH0(r13); /* save r13 */ \
160 EXCEPTION_PROLOG_PSERIES(PACA_EXGEN, label##_common, EXC_STD) 159 EXCEPTION_PROLOG_PSERIES(PACA_EXGEN, label##_common, EXC_STD)
161 160
162#define STD_EXCEPTION_HV(loc, vec, label) \ 161#define STD_EXCEPTION_HV(loc, vec, label) \
@@ -165,13 +164,13 @@ label##_pSeries: \
165label##_hv: \ 164label##_hv: \
166 HMT_MEDIUM; \ 165 HMT_MEDIUM; \
167 DO_KVM vec; \ 166 DO_KVM vec; \
168 mtspr SPRN_SPRG_HSCRATCH0,r13;/* save r13 */ \ 167 SET_SCRATCH0(r13); /* save r13 */ \
169 EXCEPTION_PROLOG_PSERIES(PACA_EXGEN, label##_common, EXC_HV) 168 EXCEPTION_PROLOG_PSERIES(PACA_EXGEN, label##_common, EXC_HV)
170 169
171#define __MASKABLE_EXCEPTION_PSERIES(vec, label, h) \ 170#define __MASKABLE_EXCEPTION_PSERIES(vec, label, h) \
172 HMT_MEDIUM; \ 171 HMT_MEDIUM; \
173 DO_KVM vec; \ 172 DO_KVM vec; \
174 mtspr SPRN_SPRG_##h##SCRATCH0,r13; /* save r13 */ \ 173 SET_SCRATCH0(r13); /* save r13 */ \
175 GET_PACA(r13); \ 174 GET_PACA(r13); \
176 std r9,PACA_EXGEN+EX_R9(r13); /* save r9, r10 */ \ 175 std r9,PACA_EXGEN+EX_R9(r13); /* save r9, r10 */ \
177 std r10,PACA_EXGEN+EX_R10(r13); \ 176 std r10,PACA_EXGEN+EX_R10(r13); \
@@ -179,7 +178,7 @@ label##_hv: \
179 mfcr r9; \ 178 mfcr r9; \
180 cmpwi r10,0; \ 179 cmpwi r10,0; \
181 beq masked_##h##interrupt; \ 180 beq masked_##h##interrupt; \
182 mfspr r10,SPRN_SPRG_##h##SCRATCH0; \ 181 GET_SCRATCH0(r10); \
183 std r10,PACA_EXGEN+EX_R13(r13); \ 182 std r10,PACA_EXGEN+EX_R13(r13); \
184 std r11,PACA_EXGEN+EX_R11(r13); \ 183 std r11,PACA_EXGEN+EX_R11(r13); \
185 std r12,PACA_EXGEN+EX_R12(r13); \ 184 std r12,PACA_EXGEN+EX_R12(r13); \
diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
index 13429a0eba09..76d7d5fea5be 100644
--- a/arch/powerpc/include/asm/reg.h
+++ b/arch/powerpc/include/asm/reg.h
@@ -802,6 +802,20 @@
802 FTR_SECTION_ELSE_NESTED(66); \ 802 FTR_SECTION_ELSE_NESTED(66); \
803 mtspr SPRN_SPRG_HPACA,rX; \ 803 mtspr SPRN_SPRG_HPACA,rX; \
804 ALT_FTR_SECTION_END_NESTED_IFCLR(CPU_FTR_HVMODE_206, 66) 804 ALT_FTR_SECTION_END_NESTED_IFCLR(CPU_FTR_HVMODE_206, 66)
805
806#define GET_SCRATCH0(rX) \
807 BEGIN_FTR_SECTION_NESTED(66); \
808 mfspr rX,SPRN_SPRG_SCRATCH0; \
809 FTR_SECTION_ELSE_NESTED(66); \
810 mfspr rX,SPRN_SPRG_HSCRATCH0; \
811 ALT_FTR_SECTION_END_NESTED_IFCLR(CPU_FTR_HVMODE_206, 66)
812
813#define SET_SCRATCH0(rX) \
814 BEGIN_FTR_SECTION_NESTED(66); \
815 mtspr SPRN_SPRG_SCRATCH0,rX; \
816 FTR_SECTION_ELSE_NESTED(66); \
817 mtspr SPRN_SPRG_HSCRATCH0,rX; \
818 ALT_FTR_SECTION_END_NESTED_IFCLR(CPU_FTR_HVMODE_206, 66)
805#endif 819#endif
806 820
807#ifdef CONFIG_PPC_BOOK3E_64 821#ifdef CONFIG_PPC_BOOK3E_64
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
index 805e20657868..e513c1d35b2a 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -43,7 +43,7 @@ __start_interrupts:
43_machine_check_pSeries: 43_machine_check_pSeries:
44 HMT_MEDIUM 44 HMT_MEDIUM
45 DO_KVM 0x200 45 DO_KVM 0x200
46 mtspr SPRN_SPRG_SCRATCH0,r13 /* save r13 */ 46 SET_SCRATCH0(r13)
47 EXCEPTION_PROLOG_PSERIES(PACA_EXMC, machine_check_common, EXC_STD) 47 EXCEPTION_PROLOG_PSERIES(PACA_EXMC, machine_check_common, EXC_STD)
48 48
49 . = 0x300 49 . = 0x300
@@ -51,7 +51,7 @@ _machine_check_pSeries:
51data_access_pSeries: 51data_access_pSeries:
52 HMT_MEDIUM 52 HMT_MEDIUM
53 DO_KVM 0x300 53 DO_KVM 0x300
54 mtspr SPRN_SPRG_SCRATCH0,r13 54 SET_SCRATCH0(r13)
55BEGIN_FTR_SECTION 55BEGIN_FTR_SECTION
56 GET_PACA(r13) 56 GET_PACA(r13)
57 std r9,PACA_EXSLB+EX_R9(r13) 57 std r9,PACA_EXSLB+EX_R9(r13)
@@ -67,7 +67,7 @@ BEGIN_FTR_SECTION
67 std r11,PACA_EXGEN+EX_R11(r13) 67 std r11,PACA_EXGEN+EX_R11(r13)
68 ld r11,PACA_EXSLB+EX_R9(r13) 68 ld r11,PACA_EXSLB+EX_R9(r13)
69 std r12,PACA_EXGEN+EX_R12(r13) 69 std r12,PACA_EXGEN+EX_R12(r13)
70 mfspr r12,SPRN_SPRG_SCRATCH0 70 GET_SCRATCH0(r12)
71 std r10,PACA_EXGEN+EX_R10(r13) 71 std r10,PACA_EXGEN+EX_R10(r13)
72 std r11,PACA_EXGEN+EX_R9(r13) 72 std r11,PACA_EXGEN+EX_R9(r13)
73 std r12,PACA_EXGEN+EX_R13(r13) 73 std r12,PACA_EXGEN+EX_R13(r13)
@@ -81,7 +81,7 @@ ALT_FTR_SECTION_END_IFCLR(CPU_FTR_SLB)
81data_access_slb_pSeries: 81data_access_slb_pSeries:
82 HMT_MEDIUM 82 HMT_MEDIUM
83 DO_KVM 0x380 83 DO_KVM 0x380
84 mtspr SPRN_SPRG_SCRATCH0,r13 84 SET_SCRATCH0(r13)
85 GET_PACA(r13) 85 GET_PACA(r13)
86 std r3,PACA_EXSLB+EX_R3(r13) 86 std r3,PACA_EXSLB+EX_R3(r13)
87 mfspr r3,SPRN_DAR 87 mfspr r3,SPRN_DAR
@@ -95,7 +95,7 @@ data_access_slb_pSeries:
95 std r10,PACA_EXSLB+EX_R10(r13) 95 std r10,PACA_EXSLB+EX_R10(r13)
96 std r11,PACA_EXSLB+EX_R11(r13) 96 std r11,PACA_EXSLB+EX_R11(r13)
97 std r12,PACA_EXSLB+EX_R12(r13) 97 std r12,PACA_EXSLB+EX_R12(r13)
98 mfspr r10,SPRN_SPRG_SCRATCH0 98 GET_SCRATCH0(r10)
99 std r10,PACA_EXSLB+EX_R13(r13) 99 std r10,PACA_EXSLB+EX_R13(r13)
100 mfspr r12,SPRN_SRR1 /* and SRR1 */ 100 mfspr r12,SPRN_SRR1 /* and SRR1 */
101#ifndef CONFIG_RELOCATABLE 101#ifndef CONFIG_RELOCATABLE
@@ -120,7 +120,7 @@ data_access_slb_pSeries:
120instruction_access_slb_pSeries: 120instruction_access_slb_pSeries:
121 HMT_MEDIUM 121 HMT_MEDIUM
122 DO_KVM 0x480 122 DO_KVM 0x480
123 mtspr SPRN_SPRG_SCRATCH0,r13 123 SET_SCRATCH0(r13)
124 GET_PACA(r13) 124 GET_PACA(r13)
125 std r3,PACA_EXSLB+EX_R3(r13) 125 std r3,PACA_EXSLB+EX_R3(r13)
126 mfspr r3,SPRN_SRR0 /* SRR0 is faulting address */ 126 mfspr r3,SPRN_SRR0 /* SRR0 is faulting address */
@@ -134,7 +134,7 @@ instruction_access_slb_pSeries:
134 std r10,PACA_EXSLB+EX_R10(r13) 134 std r10,PACA_EXSLB+EX_R10(r13)
135 std r11,PACA_EXSLB+EX_R11(r13) 135 std r11,PACA_EXSLB+EX_R11(r13)
136 std r12,PACA_EXSLB+EX_R12(r13) 136 std r12,PACA_EXSLB+EX_R12(r13)
137 mfspr r10,SPRN_SPRG_SCRATCH0 137 GET_SCRATCH0(r10)
138 std r10,PACA_EXSLB+EX_R13(r13) 138 std r10,PACA_EXSLB+EX_R13(r13)
139 mfspr r12,SPRN_SRR1 /* and SRR1 */ 139 mfspr r12,SPRN_SRR1 /* and SRR1 */
140#ifndef CONFIG_RELOCATABLE 140#ifndef CONFIG_RELOCATABLE
@@ -272,7 +272,7 @@ masked_interrupt:
272 rotldi r10,r10,16 272 rotldi r10,r10,16
273 mtspr SPRN_SRR1,r10 273 mtspr SPRN_SRR1,r10
274 ld r10,PACA_EXGEN+EX_R10(r13) 274 ld r10,PACA_EXGEN+EX_R10(r13)
275 mfspr r13,SPRN_SPRG_SCRATCH0 275 GET_SCRATCH0(r13)
276 rfid 276 rfid
277 b . 277 b .
278 278
@@ -285,7 +285,7 @@ masked_Hinterrupt:
285 rotldi r10,r10,16 285 rotldi r10,r10,16
286 mtspr SPRN_HSRR1,r10 286 mtspr SPRN_HSRR1,r10
287 ld r10,PACA_EXGEN+EX_R10(r13) 287 ld r10,PACA_EXGEN+EX_R10(r13)
288 mfspr r13,SPRN_SPRG_HSCRATCH0 288 GET_SCRATCH0(r13)
289 hrfid 289 hrfid
290 b . 290 b .
291 291
@@ -293,7 +293,7 @@ masked_Hinterrupt:
293do_stab_bolted_pSeries: 293do_stab_bolted_pSeries:
294 std r11,PACA_EXSLB+EX_R11(r13) 294 std r11,PACA_EXSLB+EX_R11(r13)
295 std r12,PACA_EXSLB+EX_R12(r13) 295 std r12,PACA_EXSLB+EX_R12(r13)
296 mfspr r10,SPRN_SPRG_SCRATCH0 296 GET_SCRATCH0(r10)
297 std r10,PACA_EXSLB+EX_R13(r13) 297 std r10,PACA_EXSLB+EX_R13(r13)
298 EXCEPTION_PROLOG_PSERIES_1(.do_stab_bolted, EXC_STD) 298 EXCEPTION_PROLOG_PSERIES_1(.do_stab_bolted, EXC_STD)
299 299
@@ -305,14 +305,14 @@ do_stab_bolted_pSeries:
305 .align 7 305 .align 7
306system_reset_fwnmi: 306system_reset_fwnmi:
307 HMT_MEDIUM 307 HMT_MEDIUM
308 mtspr SPRN_SPRG_SCRATCH0,r13 /* save r13 */ 308 SET_SCRATCH0(r13) /* save r13 */
309 EXCEPTION_PROLOG_PSERIES(PACA_EXGEN, system_reset_common, EXC_STD) 309 EXCEPTION_PROLOG_PSERIES(PACA_EXGEN, system_reset_common, EXC_STD)
310 310
311 .globl machine_check_fwnmi 311 .globl machine_check_fwnmi
312 .align 7 312 .align 7
313machine_check_fwnmi: 313machine_check_fwnmi:
314 HMT_MEDIUM 314 HMT_MEDIUM
315 mtspr SPRN_SPRG_SCRATCH0,r13 /* save r13 */ 315 SET_SCRATCH0(r13) /* save r13 */
316 EXCEPTION_PROLOG_PSERIES(PACA_EXMC, machine_check_common, EXC_STD) 316 EXCEPTION_PROLOG_PSERIES(PACA_EXMC, machine_check_common, EXC_STD)
317 317
318#endif /* CONFIG_PPC_PSERIES */ 318#endif /* CONFIG_PPC_PSERIES */
@@ -327,7 +327,7 @@ slb_miss_user_pseries:
327 std r10,PACA_EXGEN+EX_R10(r13) 327 std r10,PACA_EXGEN+EX_R10(r13)
328 std r11,PACA_EXGEN+EX_R11(r13) 328 std r11,PACA_EXGEN+EX_R11(r13)
329 std r12,PACA_EXGEN+EX_R12(r13) 329 std r12,PACA_EXGEN+EX_R12(r13)
330 mfspr r10,SPRG_SCRATCH0 330 GET_SCRATCH0(r10)
331 ld r11,PACA_EXSLB+EX_R9(r13) 331 ld r11,PACA_EXSLB+EX_R9(r13)
332 ld r12,PACA_EXSLB+EX_R3(r13) 332 ld r12,PACA_EXSLB+EX_R3(r13)
333 std r10,PACA_EXGEN+EX_R13(r13) 333 std r10,PACA_EXGEN+EX_R13(r13)
diff --git a/arch/powerpc/kvm/book3s_rmhandlers.S b/arch/powerpc/kvm/book3s_rmhandlers.S
index 046e1f3d4432..ae99af66ca34 100644
--- a/arch/powerpc/kvm/book3s_rmhandlers.S
+++ b/arch/powerpc/kvm/book3s_rmhandlers.S
@@ -70,7 +70,7 @@
70.global kvmppc_trampoline_\intno 70.global kvmppc_trampoline_\intno
71kvmppc_trampoline_\intno: 71kvmppc_trampoline_\intno:
72 72
73 mtspr SPRN_SPRG_SCRATCH0, r13 /* Save r13 */ 73 SET_SCRATCH0(r13) /* Save r13 */
74 74
75 /* 75 /*
76 * First thing to do is to find out if we're coming 76 * First thing to do is to find out if we're coming
@@ -89,7 +89,7 @@ kvmppc_trampoline_\intno:
89 lwz r12, (SHADOW_VCPU_OFF + SVCPU_SCRATCH1)(r13) 89 lwz r12, (SHADOW_VCPU_OFF + SVCPU_SCRATCH1)(r13)
90 mtcr r12 90 mtcr r12
91 PPC_LL r12, (SHADOW_VCPU_OFF + SVCPU_SCRATCH0)(r13) 91 PPC_LL r12, (SHADOW_VCPU_OFF + SVCPU_SCRATCH0)(r13)
92 mfspr r13, SPRN_SPRG_SCRATCH0 /* r13 = original r13 */ 92 GET_SCRATCH0(r13) /* r13 = original r13 */
93 b kvmppc_resume_\intno /* Get back original handler */ 93 b kvmppc_resume_\intno /* Get back original handler */
94 94
95 /* Now we know we're handling a KVM guest */ 95 /* Now we know we're handling a KVM guest */
@@ -157,7 +157,7 @@ kvmppc_handler_skip_ins:
157 lwz r12, (SHADOW_VCPU_OFF + SVCPU_SCRATCH1)(r13) 157 lwz r12, (SHADOW_VCPU_OFF + SVCPU_SCRATCH1)(r13)
158 mtcr r12 158 mtcr r12
159 PPC_LL r12, (SHADOW_VCPU_OFF + SVCPU_SCRATCH0)(r13) 159 PPC_LL r12, (SHADOW_VCPU_OFF + SVCPU_SCRATCH0)(r13)
160 mfspr r13, SPRN_SPRG_SCRATCH0 160 GET_SCRATCH0(r13)
161 161
162 /* And get back into the code */ 162 /* And get back into the code */
163 RFI 163 RFI
diff --git a/arch/powerpc/kvm/book3s_segment.S b/arch/powerpc/kvm/book3s_segment.S
index d842795d0f23..451264274b8c 100644
--- a/arch/powerpc/kvm/book3s_segment.S
+++ b/arch/powerpc/kvm/book3s_segment.S
@@ -168,7 +168,7 @@ kvmppc_handler_trampoline_exit:
168 PPC_STL r4, (SHADOW_VCPU_OFF + SVCPU_SHADOW_SRR1)(r13) 168 PPC_STL r4, (SHADOW_VCPU_OFF + SVCPU_SHADOW_SRR1)(r13)
169 169
170 /* Get scratch'ed off registers */ 170 /* Get scratch'ed off registers */
171 mfspr r9, SPRN_SPRG_SCRATCH0 171 GET_SCRATCH0(r9)
172 PPC_LL r8, (SHADOW_VCPU_OFF + SVCPU_SCRATCH0)(r13) 172 PPC_LL r8, (SHADOW_VCPU_OFF + SVCPU_SCRATCH0)(r13)
173 lwz r7, (SHADOW_VCPU_OFF + SVCPU_SCRATCH1)(r13) 173 lwz r7, (SHADOW_VCPU_OFF + SVCPU_SCRATCH1)(r13)
174 174
diff --git a/arch/powerpc/platforms/iseries/exception.S b/arch/powerpc/platforms/iseries/exception.S
index f7a487231a11..32a56c6dfa72 100644
--- a/arch/powerpc/platforms/iseries/exception.S
+++ b/arch/powerpc/platforms/iseries/exception.S
@@ -155,7 +155,7 @@ BEGIN_FTR_SECTION
155 std r12,PACA_EXGEN+EX_R13(r13) 155 std r12,PACA_EXGEN+EX_R13(r13)
156 EXCEPTION_PROLOG_ISERIES_1 156 EXCEPTION_PROLOG_ISERIES_1
157FTR_SECTION_ELSE 157FTR_SECTION_ELSE
158 EXCEPTION_PROLOG_1(PACA_EXGEN, EXC_STD) 158 EXCEPTION_PROLOG_1(PACA_EXGEN)
159 EXCEPTION_PROLOG_ISERIES_1 159 EXCEPTION_PROLOG_ISERIES_1
160ALT_FTR_SECTION_END_IFCLR(CPU_FTR_SLB) 160ALT_FTR_SECTION_END_IFCLR(CPU_FTR_SLB)
161 b data_access_common 161 b data_access_common
diff --git a/arch/powerpc/platforms/iseries/exception.h b/arch/powerpc/platforms/iseries/exception.h
index 57127d805fe3..bae3fba5ad8e 100644
--- a/arch/powerpc/platforms/iseries/exception.h
+++ b/arch/powerpc/platforms/iseries/exception.h
@@ -39,7 +39,7 @@
39label##_iSeries: \ 39label##_iSeries: \
40 HMT_MEDIUM; \ 40 HMT_MEDIUM; \
41 mtspr SPRN_SPRG_SCRATCH0,r13; /* save r13 */ \ 41 mtspr SPRN_SPRG_SCRATCH0,r13; /* save r13 */ \
42 EXCEPTION_PROLOG_1(area, EXC_STD); \ 42 EXCEPTION_PROLOG_1(area); \
43 EXCEPTION_PROLOG_ISERIES_1; \ 43 EXCEPTION_PROLOG_ISERIES_1; \
44 b label##_common 44 b label##_common
45 45
@@ -48,7 +48,7 @@ label##_iSeries: \
48label##_iSeries: \ 48label##_iSeries: \
49 HMT_MEDIUM; \ 49 HMT_MEDIUM; \
50 mtspr SPRN_SPRG_SCRATCH0,r13; /* save r13 */ \ 50 mtspr SPRN_SPRG_SCRATCH0,r13; /* save r13 */ \
51 EXCEPTION_PROLOG_1(PACA_EXGEN, EXC_STD); \ 51 EXCEPTION_PROLOG_1(PACA_EXGEN); \
52 lbz r10,PACASOFTIRQEN(r13); \ 52 lbz r10,PACASOFTIRQEN(r13); \
53 cmpwi 0,r10,0; \ 53 cmpwi 0,r10,0; \
54 beq- label##_iSeries_masked; \ 54 beq- label##_iSeries_masked; \