]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/powerpc/kernel/exceptions-64s.S
Merge branch 'merge' into next
[karo-tx-linux.git] / arch / powerpc / kernel / exceptions-64s.S
index 902ca3c6b4b6496d8e606623187c9f1da1500f2a..3a9ed6ac224b323cf4908e3cfed19ec4ea03d613 100644 (file)
@@ -293,27 +293,31 @@ system_call_pSeries:
         * out of line to handle them
         */
        . = 0xe00
-hv_exception_trampoline:
+hv_data_storage_trampoline:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0(PACA_EXGEN)
        b       h_data_storage_hv
 
        . = 0xe20
+hv_instr_storage_trampoline:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0(PACA_EXGEN)
        b       h_instr_storage_hv
 
        . = 0xe40
+emulation_assist_trampoline:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0(PACA_EXGEN)
        b       emulation_assist_hv
 
        . = 0xe60
+hv_exception_trampoline:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0(PACA_EXGEN)
        b       hmi_exception_hv
 
        . = 0xe80
+hv_doorbell_trampoline:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0(PACA_EXGEN)
        b       h_doorbell_hv
@@ -323,32 +327,32 @@ hv_exception_trampoline:
         * prolog code of the PerformanceMonitor one. A little
         * trickery is thus necessary
         */
-performance_monitor_pSeries_1:
        . = 0xf00
+performance_monitor_pseries_trampoline:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0(PACA_EXGEN)
        b       performance_monitor_pSeries
 
-altivec_unavailable_pSeries_1:
        . = 0xf20
+altivec_unavailable_pseries_trampoline:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0(PACA_EXGEN)
        b       altivec_unavailable_pSeries
 
-vsx_unavailable_pSeries_1:
        . = 0xf40
+vsx_unavailable_pseries_trampoline:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0(PACA_EXGEN)
        b       vsx_unavailable_pSeries
 
-facility_unavailable_trampoline:
        . = 0xf60
+facility_unavailable_trampoline:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0(PACA_EXGEN)
        b       facility_unavailable_pSeries
 
-hv_facility_unavailable_trampoline:
        . = 0xf80
+hv_facility_unavailable_trampoline:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0(PACA_EXGEN)
        b       facility_unavailable_hv
@@ -367,11 +371,7 @@ denorm_exception_hv:
        HMT_MEDIUM_PPR_DISCARD
        mtspr   SPRN_SPRG_HSCRATCH0,r13
        EXCEPTION_PROLOG_0(PACA_EXGEN)
-       std     r11,PACA_EXGEN+EX_R11(r13)
-       std     r12,PACA_EXGEN+EX_R12(r13)
-       mfspr   r9,SPRN_SPRG_HSCRATCH0
-       std     r9,PACA_EXGEN+EX_R13(r13)
-       mfcr    r9
+       EXCEPTION_PROLOG_1(PACA_EXGEN, NOTEST, 0x1500)
 
 #ifdef CONFIG_PPC_DENORMALISATION
        mfspr   r10,SPRN_HSRR1
@@ -381,6 +381,7 @@ denorm_exception_hv:
        bne+    denorm_assist
 #endif
 
+       KVMTEST(0x1500)
        EXCEPTION_PROLOG_PSERIES_1(denorm_common, EXC_HV)
        KVM_HANDLER_SKIP(PACA_EXGEN, EXC_STD, 0x1500)
 
@@ -501,6 +502,10 @@ denorm_done:
        mtcrf   0x80,r9
        ld      r9,PACA_EXGEN+EX_R9(r13)
        RESTORE_PPR_PACA(PACA_EXGEN, r10)
+BEGIN_FTR_SECTION
+       ld      r10,PACA_EXGEN+EX_CFAR(r13)
+       mtspr   SPRN_CFAR,r10
+END_FTR_SECTION_IFSET(CPU_FTR_CFAR)
        ld      r10,PACA_EXGEN+EX_R10(r13)
        ld      r11,PACA_EXGEN+EX_R11(r13)
        ld      r12,PACA_EXGEN+EX_R12(r13)
@@ -808,6 +813,7 @@ system_call_relon_pSeries:
        b       .       /* Can't happen, see v2.07 Book III-S section 6.5 */
 
        . = 0x4e40
+emulation_assist_relon_trampoline:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0(PACA_EXGEN)
        b       emulation_assist_relon_hv
@@ -816,36 +822,37 @@ system_call_relon_pSeries:
        b       .       /* Can't happen, see v2.07 Book III-S section 6.5 */
 
        . = 0x4e80
+h_doorbell_relon_trampoline:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0(PACA_EXGEN)
        b       h_doorbell_relon_hv
 
-performance_monitor_relon_pSeries_1:
        . = 0x4f00
+performance_monitor_relon_pseries_trampoline:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0(PACA_EXGEN)
        b       performance_monitor_relon_pSeries
 
-altivec_unavailable_relon_pSeries_1:
        . = 0x4f20
+altivec_unavailable_relon_pseries_trampoline:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0(PACA_EXGEN)
        b       altivec_unavailable_relon_pSeries
 
-vsx_unavailable_relon_pSeries_1:
        . = 0x4f40
+vsx_unavailable_relon_pseries_trampoline:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0(PACA_EXGEN)
        b       vsx_unavailable_relon_pSeries
 
-facility_unavailable_relon_trampoline:
        . = 0x4f60
+facility_unavailable_relon_trampoline:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0(PACA_EXGEN)
        b       facility_unavailable_relon_pSeries
 
-hv_facility_unavailable_relon_trampoline:
        . = 0x4f80
+hv_facility_unavailable_relon_trampoline:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0(PACA_EXGEN)
        b       hv_facility_unavailable_relon_hv