aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/exceptions-64s.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/kernel/exceptions-64s.S')
-rw-r--r--arch/powerpc/kernel/exceptions-64s.S39
1 files changed, 23 insertions, 16 deletions
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
index 902ca3c6b4b6..3a9ed6ac224b 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -293,27 +293,31 @@ system_call_pSeries:
293 * out of line to handle them 293 * out of line to handle them
294 */ 294 */
295 . = 0xe00 295 . = 0xe00
296hv_exception_trampoline: 296hv_data_storage_trampoline:
297 SET_SCRATCH0(r13) 297 SET_SCRATCH0(r13)
298 EXCEPTION_PROLOG_0(PACA_EXGEN) 298 EXCEPTION_PROLOG_0(PACA_EXGEN)
299 b h_data_storage_hv 299 b h_data_storage_hv
300 300
301 . = 0xe20 301 . = 0xe20
302hv_instr_storage_trampoline:
302 SET_SCRATCH0(r13) 303 SET_SCRATCH0(r13)
303 EXCEPTION_PROLOG_0(PACA_EXGEN) 304 EXCEPTION_PROLOG_0(PACA_EXGEN)
304 b h_instr_storage_hv 305 b h_instr_storage_hv
305 306
306 . = 0xe40 307 . = 0xe40
308emulation_assist_trampoline:
307 SET_SCRATCH0(r13) 309 SET_SCRATCH0(r13)
308 EXCEPTION_PROLOG_0(PACA_EXGEN) 310 EXCEPTION_PROLOG_0(PACA_EXGEN)
309 b emulation_assist_hv 311 b emulation_assist_hv
310 312
311 . = 0xe60 313 . = 0xe60
314hv_exception_trampoline:
312 SET_SCRATCH0(r13) 315 SET_SCRATCH0(r13)
313 EXCEPTION_PROLOG_0(PACA_EXGEN) 316 EXCEPTION_PROLOG_0(PACA_EXGEN)
314 b hmi_exception_hv 317 b hmi_exception_hv
315 318
316 . = 0xe80 319 . = 0xe80
320hv_doorbell_trampoline:
317 SET_SCRATCH0(r13) 321 SET_SCRATCH0(r13)
318 EXCEPTION_PROLOG_0(PACA_EXGEN) 322 EXCEPTION_PROLOG_0(PACA_EXGEN)
319 b h_doorbell_hv 323 b h_doorbell_hv
@@ -323,32 +327,32 @@ hv_exception_trampoline:
323 * prolog code of the PerformanceMonitor one. A little 327 * prolog code of the PerformanceMonitor one. A little
324 * trickery is thus necessary 328 * trickery is thus necessary
325 */ 329 */
326performance_monitor_pSeries_1:
327 . = 0xf00 330 . = 0xf00
331performance_monitor_pseries_trampoline:
328 SET_SCRATCH0(r13) 332 SET_SCRATCH0(r13)
329 EXCEPTION_PROLOG_0(PACA_EXGEN) 333 EXCEPTION_PROLOG_0(PACA_EXGEN)
330 b performance_monitor_pSeries 334 b performance_monitor_pSeries
331 335
332altivec_unavailable_pSeries_1:
333 . = 0xf20 336 . = 0xf20
337altivec_unavailable_pseries_trampoline:
334 SET_SCRATCH0(r13) 338 SET_SCRATCH0(r13)
335 EXCEPTION_PROLOG_0(PACA_EXGEN) 339 EXCEPTION_PROLOG_0(PACA_EXGEN)
336 b altivec_unavailable_pSeries 340 b altivec_unavailable_pSeries
337 341
338vsx_unavailable_pSeries_1:
339 . = 0xf40 342 . = 0xf40
343vsx_unavailable_pseries_trampoline:
340 SET_SCRATCH0(r13) 344 SET_SCRATCH0(r13)
341 EXCEPTION_PROLOG_0(PACA_EXGEN) 345 EXCEPTION_PROLOG_0(PACA_EXGEN)
342 b vsx_unavailable_pSeries 346 b vsx_unavailable_pSeries
343 347
344facility_unavailable_trampoline:
345 . = 0xf60 348 . = 0xf60
349facility_unavailable_trampoline:
346 SET_SCRATCH0(r13) 350 SET_SCRATCH0(r13)
347 EXCEPTION_PROLOG_0(PACA_EXGEN) 351 EXCEPTION_PROLOG_0(PACA_EXGEN)
348 b facility_unavailable_pSeries 352 b facility_unavailable_pSeries
349 353
350hv_facility_unavailable_trampoline:
351 . = 0xf80 354 . = 0xf80
355hv_facility_unavailable_trampoline:
352 SET_SCRATCH0(r13) 356 SET_SCRATCH0(r13)
353 EXCEPTION_PROLOG_0(PACA_EXGEN) 357 EXCEPTION_PROLOG_0(PACA_EXGEN)
354 b facility_unavailable_hv 358 b facility_unavailable_hv
@@ -367,11 +371,7 @@ denorm_exception_hv:
367 HMT_MEDIUM_PPR_DISCARD 371 HMT_MEDIUM_PPR_DISCARD
368 mtspr SPRN_SPRG_HSCRATCH0,r13 372 mtspr SPRN_SPRG_HSCRATCH0,r13
369 EXCEPTION_PROLOG_0(PACA_EXGEN) 373 EXCEPTION_PROLOG_0(PACA_EXGEN)
370 std r11,PACA_EXGEN+EX_R11(r13) 374 EXCEPTION_PROLOG_1(PACA_EXGEN, NOTEST, 0x1500)
371 std r12,PACA_EXGEN+EX_R12(r13)
372 mfspr r9,SPRN_SPRG_HSCRATCH0
373 std r9,PACA_EXGEN+EX_R13(r13)
374 mfcr r9
375 375
376#ifdef CONFIG_PPC_DENORMALISATION 376#ifdef CONFIG_PPC_DENORMALISATION
377 mfspr r10,SPRN_HSRR1 377 mfspr r10,SPRN_HSRR1
@@ -381,6 +381,7 @@ denorm_exception_hv:
381 bne+ denorm_assist 381 bne+ denorm_assist
382#endif 382#endif
383 383
384 KVMTEST(0x1500)
384 EXCEPTION_PROLOG_PSERIES_1(denorm_common, EXC_HV) 385 EXCEPTION_PROLOG_PSERIES_1(denorm_common, EXC_HV)
385 KVM_HANDLER_SKIP(PACA_EXGEN, EXC_STD, 0x1500) 386 KVM_HANDLER_SKIP(PACA_EXGEN, EXC_STD, 0x1500)
386 387
@@ -501,6 +502,10 @@ denorm_done:
501 mtcrf 0x80,r9 502 mtcrf 0x80,r9
502 ld r9,PACA_EXGEN+EX_R9(r13) 503 ld r9,PACA_EXGEN+EX_R9(r13)
503 RESTORE_PPR_PACA(PACA_EXGEN, r10) 504 RESTORE_PPR_PACA(PACA_EXGEN, r10)
505BEGIN_FTR_SECTION
506 ld r10,PACA_EXGEN+EX_CFAR(r13)
507 mtspr SPRN_CFAR,r10
508END_FTR_SECTION_IFSET(CPU_FTR_CFAR)
504 ld r10,PACA_EXGEN+EX_R10(r13) 509 ld r10,PACA_EXGEN+EX_R10(r13)
505 ld r11,PACA_EXGEN+EX_R11(r13) 510 ld r11,PACA_EXGEN+EX_R11(r13)
506 ld r12,PACA_EXGEN+EX_R12(r13) 511 ld r12,PACA_EXGEN+EX_R12(r13)
@@ -808,6 +813,7 @@ system_call_relon_pSeries:
808 b . /* Can't happen, see v2.07 Book III-S section 6.5 */ 813 b . /* Can't happen, see v2.07 Book III-S section 6.5 */
809 814
810 . = 0x4e40 815 . = 0x4e40
816emulation_assist_relon_trampoline:
811 SET_SCRATCH0(r13) 817 SET_SCRATCH0(r13)
812 EXCEPTION_PROLOG_0(PACA_EXGEN) 818 EXCEPTION_PROLOG_0(PACA_EXGEN)
813 b emulation_assist_relon_hv 819 b emulation_assist_relon_hv
@@ -816,36 +822,37 @@ system_call_relon_pSeries:
816 b . /* Can't happen, see v2.07 Book III-S section 6.5 */ 822 b . /* Can't happen, see v2.07 Book III-S section 6.5 */
817 823
818 . = 0x4e80 824 . = 0x4e80
825h_doorbell_relon_trampoline:
819 SET_SCRATCH0(r13) 826 SET_SCRATCH0(r13)
820 EXCEPTION_PROLOG_0(PACA_EXGEN) 827 EXCEPTION_PROLOG_0(PACA_EXGEN)
821 b h_doorbell_relon_hv 828 b h_doorbell_relon_hv
822 829
823performance_monitor_relon_pSeries_1:
824 . = 0x4f00 830 . = 0x4f00
831performance_monitor_relon_pseries_trampoline:
825 SET_SCRATCH0(r13) 832 SET_SCRATCH0(r13)
826 EXCEPTION_PROLOG_0(PACA_EXGEN) 833 EXCEPTION_PROLOG_0(PACA_EXGEN)
827 b performance_monitor_relon_pSeries 834 b performance_monitor_relon_pSeries
828 835
829altivec_unavailable_relon_pSeries_1:
830 . = 0x4f20 836 . = 0x4f20
837altivec_unavailable_relon_pseries_trampoline:
831 SET_SCRATCH0(r13) 838 SET_SCRATCH0(r13)
832 EXCEPTION_PROLOG_0(PACA_EXGEN) 839 EXCEPTION_PROLOG_0(PACA_EXGEN)
833 b altivec_unavailable_relon_pSeries 840 b altivec_unavailable_relon_pSeries
834 841
835vsx_unavailable_relon_pSeries_1:
836 . = 0x4f40 842 . = 0x4f40
843vsx_unavailable_relon_pseries_trampoline:
837 SET_SCRATCH0(r13) 844 SET_SCRATCH0(r13)
838 EXCEPTION_PROLOG_0(PACA_EXGEN) 845 EXCEPTION_PROLOG_0(PACA_EXGEN)
839 b vsx_unavailable_relon_pSeries 846 b vsx_unavailable_relon_pSeries
840 847
841facility_unavailable_relon_trampoline:
842 . = 0x4f60 848 . = 0x4f60
849facility_unavailable_relon_trampoline:
843 SET_SCRATCH0(r13) 850 SET_SCRATCH0(r13)
844 EXCEPTION_PROLOG_0(PACA_EXGEN) 851 EXCEPTION_PROLOG_0(PACA_EXGEN)
845 b facility_unavailable_relon_pSeries 852 b facility_unavailable_relon_pSeries
846 853
847hv_facility_unavailable_relon_trampoline:
848 . = 0x4f80 854 . = 0x4f80
855hv_facility_unavailable_relon_trampoline:
849 SET_SCRATCH0(r13) 856 SET_SCRATCH0(r13)
850 EXCEPTION_PROLOG_0(PACA_EXGEN) 857 EXCEPTION_PROLOG_0(PACA_EXGEN)
851 b hv_facility_unavailable_relon_hv 858 b hv_facility_unavailable_relon_hv