diff options
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r-- | arch/powerpc/kernel/entry_64.S | 10 | ||||
-rw-r--r-- | arch/powerpc/kernel/exceptions-64s.S | 18 | ||||
-rw-r--r-- | arch/powerpc/kernel/head_64.S | 9 |
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) | 1048 | rtas_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 |
1056 | 0: mflr r3 | 1056 | 0: 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 |
1074 | 1: .llong .rtas_restore_regs | 1074 | 1: .llong rtas_restore_regs |
1075 | 1075 | ||
1076 | _STATIC(rtas_restore_regs) | 1076 | rtas_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) | 1471 | slb_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) | 1649 | do_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) | 655 | start_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 | |
790 | start_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 | ||