aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r--arch/powerpc/kernel/entry_64.S10
-rw-r--r--arch/powerpc/kernel/exceptions-64s.S18
-rw-r--r--arch/powerpc/kernel/head_64.S9
3 files changed, 19 insertions, 18 deletions
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index b629198b072c..2d92eeb08b76 100644
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@ -1021,7 +1021,7 @@ _GLOBAL(enter_rtas)
1021 std r6,PACASAVEDMSR(r13) 1021 std r6,PACASAVEDMSR(r13)
1022 1022
1023 /* Setup our real return addr */ 1023 /* Setup our real return addr */
1024 LOAD_REG_ADDR(r4,.rtas_return_loc) 1024 LOAD_REG_ADDR(r4,rtas_return_loc)
1025 clrldi r4,r4,2 /* convert to realmode address */ 1025 clrldi r4,r4,2 /* convert to realmode address */
1026 mtlr r4 1026 mtlr r4
1027 1027
@@ -1045,7 +1045,7 @@ _GLOBAL(enter_rtas)
1045 rfid 1045 rfid
1046 b . /* prevent speculative execution */ 1046 b . /* prevent speculative execution */
1047 1047
1048_STATIC(rtas_return_loc) 1048rtas_return_loc:
1049 FIXUP_ENDIAN 1049 FIXUP_ENDIAN
1050 1050
1051 /* relocation is off at this point */ 1051 /* relocation is off at this point */
@@ -1054,7 +1054,7 @@ _STATIC(rtas_return_loc)
1054 1054
1055 bcl 20,31,$+4 1055 bcl 20,31,$+4
10560: mflr r3 10560: mflr r3
1057 ld r3,(1f-0b)(r3) /* get &.rtas_restore_regs */ 1057 ld r3,(1f-0b)(r3) /* get &rtas_restore_regs */
1058 1058
1059 mfmsr r6 1059 mfmsr r6
1060 li r0,MSR_RI 1060 li r0,MSR_RI
@@ -1071,9 +1071,9 @@ _STATIC(rtas_return_loc)
1071 b . /* prevent speculative execution */ 1071 b . /* prevent speculative execution */
1072 1072
1073 .align 3 1073 .align 3
10741: .llong .rtas_restore_regs 10741: .llong rtas_restore_regs
1075 1075
1076_STATIC(rtas_restore_regs) 1076rtas_restore_regs:
1077 /* relocation is on at this point */ 1077 /* relocation is on at this point */
1078 REST_GPR(2, r1) /* Restore the TOC */ 1078 REST_GPR(2, r1) /* Restore the TOC */
1079 REST_GPR(13, r1) /* Restore paca */ 1079 REST_GPR(13, r1) /* Restore paca */
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
index 28391e048120..f2f9d6144ae1 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -214,13 +214,13 @@ data_access_slb_pSeries:
214 b slb_miss_realmode 214 b slb_miss_realmode
215#else 215#else
216 /* 216 /*
217 * We can't just use a direct branch to .slb_miss_realmode 217 * We can't just use a direct branch to slb_miss_realmode
218 * because the distance from here to there depends on where 218 * because the distance from here to there depends on where
219 * the kernel ends up being put. 219 * the kernel ends up being put.
220 */ 220 */
221 mfctr r11 221 mfctr r11
222 ld r10,PACAKBASE(r13) 222 ld r10,PACAKBASE(r13)
223 LOAD_HANDLER(r10, .slb_miss_realmode) 223 LOAD_HANDLER(r10, slb_miss_realmode)
224 mtctr r10 224 mtctr r10
225 bctr 225 bctr
226#endif 226#endif
@@ -247,7 +247,7 @@ instruction_access_slb_pSeries:
247#else 247#else
248 mfctr r11 248 mfctr r11
249 ld r10,PACAKBASE(r13) 249 ld r10,PACAKBASE(r13)
250 LOAD_HANDLER(r10, .slb_miss_realmode) 250 LOAD_HANDLER(r10, slb_miss_realmode)
251 mtctr r10 251 mtctr r10
252 bctr 252 bctr
253#endif 253#endif
@@ -524,7 +524,7 @@ do_stab_bolted_pSeries:
524 std r12,PACA_EXSLB+EX_R12(r13) 524 std r12,PACA_EXSLB+EX_R12(r13)
525 GET_SCRATCH0(r10) 525 GET_SCRATCH0(r10)
526 std r10,PACA_EXSLB+EX_R13(r13) 526 std r10,PACA_EXSLB+EX_R13(r13)
527 EXCEPTION_PROLOG_PSERIES_1(.do_stab_bolted, EXC_STD) 527 EXCEPTION_PROLOG_PSERIES_1(do_stab_bolted, EXC_STD)
528 528
529 KVM_HANDLER_SKIP(PACA_EXGEN, EXC_STD, 0x300) 529 KVM_HANDLER_SKIP(PACA_EXGEN, EXC_STD, 0x300)
530 KVM_HANDLER_SKIP(PACA_EXSLB, EXC_STD, 0x380) 530 KVM_HANDLER_SKIP(PACA_EXSLB, EXC_STD, 0x380)
@@ -832,13 +832,13 @@ data_access_slb_relon_pSeries:
832 b slb_miss_realmode 832 b slb_miss_realmode
833#else 833#else
834 /* 834 /*
835 * We can't just use a direct branch to .slb_miss_realmode 835 * We can't just use a direct branch to slb_miss_realmode
836 * because the distance from here to there depends on where 836 * because the distance from here to there depends on where
837 * the kernel ends up being put. 837 * the kernel ends up being put.
838 */ 838 */
839 mfctr r11 839 mfctr r11
840 ld r10,PACAKBASE(r13) 840 ld r10,PACAKBASE(r13)
841 LOAD_HANDLER(r10, .slb_miss_realmode) 841 LOAD_HANDLER(r10, slb_miss_realmode)
842 mtctr r10 842 mtctr r10
843 bctr 843 bctr
844#endif 844#endif
@@ -858,7 +858,7 @@ instruction_access_slb_relon_pSeries:
858#else 858#else
859 mfctr r11 859 mfctr r11
860 ld r10,PACAKBASE(r13) 860 ld r10,PACAKBASE(r13)
861 LOAD_HANDLER(r10, .slb_miss_realmode) 861 LOAD_HANDLER(r10, slb_miss_realmode)
862 mtctr r10 862 mtctr r10
863 bctr 863 bctr
864#endif 864#endif
@@ -1468,7 +1468,7 @@ machine_check_handle_early:
1468 * r3 is saved in paca->slb_r3 1468 * r3 is saved in paca->slb_r3
1469 * We assume we aren't going to take any exceptions during this procedure. 1469 * We assume we aren't going to take any exceptions during this procedure.
1470 */ 1470 */
1471_GLOBAL(slb_miss_realmode) 1471slb_miss_realmode:
1472 mflr r10 1472 mflr r10
1473#ifdef CONFIG_RELOCATABLE 1473#ifdef CONFIG_RELOCATABLE
1474 mtctr r11 1474 mtctr r11
@@ -1646,7 +1646,7 @@ do_ste_alloc:
1646 * We assume (DAR >> 60) == 0xc. 1646 * We assume (DAR >> 60) == 0xc.
1647 */ 1647 */
1648 .align 7 1648 .align 7
1649_GLOBAL(do_stab_bolted) 1649do_stab_bolted:
1650 stw r9,PACA_EXSLB+EX_CCR(r13) /* save CR in exc. frame */ 1650 stw r9,PACA_EXSLB+EX_CCR(r13) /* save CR in exc. frame */
1651 std r11,PACA_EXSLB+EX_SRR0(r13) /* save SRR0 in exc. frame */ 1651 std r11,PACA_EXSLB+EX_SRR0(r13) /* save SRR0 in exc. frame */
1652 mfspr r11,SPRN_DAR /* ea */ 1652 mfspr r11,SPRN_DAR /* ea */
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S
index afcfd631bf7f..8d7c868e5a43 100644
--- a/arch/powerpc/kernel/head_64.S
+++ b/arch/powerpc/kernel/head_64.S
@@ -639,7 +639,7 @@ __secondary_start:
639 stb r0,PACAIRQHAPPENED(r13) 639 stb r0,PACAIRQHAPPENED(r13)
640 640
641 /* enable MMU and jump to start_secondary */ 641 /* enable MMU and jump to start_secondary */
642 LOAD_REG_ADDR(r3, .start_secondary_prolog) 642 LOAD_REG_ADDR(r3, start_secondary_prolog)
643 LOAD_REG_IMMEDIATE(r4, MSR_KERNEL) 643 LOAD_REG_IMMEDIATE(r4, MSR_KERNEL)
644 644
645 mtspr SPRN_SRR0,r3 645 mtspr SPRN_SRR0,r3
@@ -652,7 +652,7 @@ __secondary_start:
652 * zero the stack back-chain pointer and get the TOC virtual address 652 * zero the stack back-chain pointer and get the TOC virtual address
653 * before going into C code. 653 * before going into C code.
654 */ 654 */
655_GLOBAL(start_secondary_prolog) 655start_secondary_prolog:
656 ld r2,PACATOC(r13) 656 ld r2,PACATOC(r13)
657 li r3,0 657 li r3,0
658 std r3,0(r1) /* Zero the stack frame pointer */ 658 std r3,0(r1) /* Zero the stack frame pointer */
@@ -778,7 +778,7 @@ _INIT_STATIC(start_here_multiplatform)
778 mr r3,r31 778 mr r3,r31
779 bl early_setup /* also sets r13 and SPRG_PACA */ 779 bl early_setup /* also sets r13 and SPRG_PACA */
780 780
781 LOAD_REG_ADDR(r3, .start_here_common) 781 LOAD_REG_ADDR(r3, start_here_common)
782 ld r4,PACAKMSR(r13) 782 ld r4,PACAKMSR(r13)
783 mtspr SPRN_SRR0,r3 783 mtspr SPRN_SRR0,r3
784 mtspr SPRN_SRR1,r4 784 mtspr SPRN_SRR1,r4
@@ -786,7 +786,8 @@ _INIT_STATIC(start_here_multiplatform)
786 b . /* prevent speculative execution */ 786 b . /* prevent speculative execution */
787 787
788 /* This is where all platforms converge execution */ 788 /* This is where all platforms converge execution */
789_INIT_GLOBAL(start_here_common) 789
790start_here_common:
790 /* relocation is on at this point */ 791 /* relocation is on at this point */
791 std r1,PACAKSAVE(r13) 792 std r1,PACAKSAVE(r13)
792 793