]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - arch/powerpc/kernel/exceptions-64s.S
powerpc: Make room in exception vector area
[mirror_ubuntu-zesty-kernel.git] / arch / powerpc / kernel / exceptions-64s.S
index a28a65fd0f07b5da9f63d1ddb8a2a94ce3024f65..7a1c87cbb890f9c02508c088176186e8b3e74a42 100644 (file)
@@ -1180,6 +1180,61 @@ END_FTR_SECTION_IFSET(CPU_FTR_VSX)
        .globl  __end_handlers
 __end_handlers:
 
+       /* Equivalents to the above handlers for relocation-on interrupt vectors */
+       STD_RELON_EXCEPTION_HV(., 0xe00, h_data_storage)
+       KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe00)
+       STD_RELON_EXCEPTION_HV(., 0xe20, h_instr_storage)
+       KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe20)
+       STD_RELON_EXCEPTION_HV(., 0xe40, emulation_assist)
+       KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe40)
+       STD_RELON_EXCEPTION_HV(., 0xe60, hmi_exception)
+       KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe60)
+       MASKABLE_RELON_EXCEPTION_HV(., 0xe80, h_doorbell)
+       KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe80)
+
+       STD_RELON_EXCEPTION_PSERIES(., 0xf00, performance_monitor)
+       STD_RELON_EXCEPTION_PSERIES(., 0xf20, altivec_unavailable)
+       STD_RELON_EXCEPTION_PSERIES(., 0xf40, vsx_unavailable)
+
+#if defined(CONFIG_PPC_PSERIES) || defined(CONFIG_PPC_POWERNV)
+/*
+ * Data area reserved for FWNMI option.
+ * This address (0x7000) is fixed by the RPA.
+ */
+       .= 0x7000
+       .globl fwnmi_data_area
+fwnmi_data_area:
+
+       /* pseries and powernv need to keep the whole page from
+        * 0x7000 to 0x8000 free for use by the firmware
+        */
+       . = 0x8000
+#endif /* defined(CONFIG_PPC_PSERIES) || defined(CONFIG_PPC_POWERNV) */
+
+/* Space for CPU0's segment table */
+       .balign 4096
+       .globl initial_stab
+initial_stab:
+       .space  4096
+
+#ifdef CONFIG_PPC_POWERNV
+_GLOBAL(opal_mc_secondary_handler)
+       HMT_MEDIUM_PPR_DISCARD
+       SET_SCRATCH0(r13)
+       GET_PACA(r13)
+       clrldi  r3,r3,2
+       tovirt(r3,r3)
+       std     r3,PACA_OPAL_MC_EVT(r13)
+       ld      r13,OPAL_MC_SRR0(r3)
+       mtspr   SPRN_SRR0,r13
+       ld      r13,OPAL_MC_SRR1(r3)
+       mtspr   SPRN_SRR1,r13
+       ld      r3,OPAL_MC_GPR3(r3)
+       GET_SCRATCH0(r13)
+       b       machine_check_pSeries
+#endif /* CONFIG_PPC_POWERNV */
+
+
 /*
  * Hash table stuff
  */
@@ -1373,58 +1428,3 @@ _GLOBAL(do_stab_bolted)
        ld      r13,PACA_EXSLB+EX_R13(r13)
        rfid
        b       .       /* prevent speculative execution */
-
-
-       /* Equivalents to the above handlers for relocation-on interrupt vectors */
-       STD_RELON_EXCEPTION_HV(., 0xe00, h_data_storage)
-       KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe00)
-       STD_RELON_EXCEPTION_HV(., 0xe20, h_instr_storage)
-       KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe20)
-       STD_RELON_EXCEPTION_HV(., 0xe40, emulation_assist)
-       KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe40)
-       STD_RELON_EXCEPTION_HV(., 0xe60, hmi_exception)
-       KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe60)
-       MASKABLE_RELON_EXCEPTION_HV(., 0xe80, h_doorbell)
-       KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe80)
-
-       STD_RELON_EXCEPTION_PSERIES(., 0xf00, performance_monitor)
-       STD_RELON_EXCEPTION_PSERIES(., 0xf20, altivec_unavailable)
-       STD_RELON_EXCEPTION_PSERIES(., 0xf40, vsx_unavailable)
-
-#if defined(CONFIG_PPC_PSERIES) || defined(CONFIG_PPC_POWERNV)
-/*
- * Data area reserved for FWNMI option.
- * This address (0x7000) is fixed by the RPA.
- */
-       .= 0x7000
-       .globl fwnmi_data_area
-fwnmi_data_area:
-
-       /* pseries and powernv need to keep the whole page from
-        * 0x7000 to 0x8000 free for use by the firmware
-        */
-       . = 0x8000
-#endif /* defined(CONFIG_PPC_PSERIES) || defined(CONFIG_PPC_POWERNV) */
-
-/* Space for CPU0's segment table */
-       .balign 4096
-       .globl initial_stab
-initial_stab:
-       .space  4096
-
-#ifdef CONFIG_PPC_POWERNV
-_GLOBAL(opal_mc_secondary_handler)
-       HMT_MEDIUM_PPR_DISCARD
-       SET_SCRATCH0(r13)
-       GET_PACA(r13)
-       clrldi  r3,r3,2
-       tovirt(r3,r3)
-       std     r3,PACA_OPAL_MC_EVT(r13)
-       ld      r13,OPAL_MC_SRR0(r3)
-       mtspr   SPRN_SRR0,r13
-       ld      r13,OPAL_MC_SRR1(r3)
-       mtspr   SPRN_SRR1,r13
-       ld      r3,OPAL_MC_GPR3(r3)
-       GET_SCRATCH0(r13)
-       b       machine_check_pSeries
-#endif /* CONFIG_PPC_POWERNV */