diff options
Diffstat (limited to 'arch/powerpc/kernel/exceptions-64e.S')
| -rw-r--r-- | arch/powerpc/kernel/exceptions-64e.S | 140 |
1 files changed, 70 insertions, 70 deletions
diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S index c1bee3ce9d1f..771b4e92e5d9 100644 --- a/arch/powerpc/kernel/exceptions-64e.S +++ b/arch/powerpc/kernel/exceptions-64e.S | |||
| @@ -499,7 +499,7 @@ exc_##n##_bad_stack: \ | |||
| 499 | CHECK_NAPPING(); \ | 499 | CHECK_NAPPING(); \ |
| 500 | addi r3,r1,STACK_FRAME_OVERHEAD; \ | 500 | addi r3,r1,STACK_FRAME_OVERHEAD; \ |
| 501 | bl hdlr; \ | 501 | bl hdlr; \ |
| 502 | b .ret_from_except_lite; | 502 | b ret_from_except_lite; |
| 503 | 503 | ||
| 504 | /* This value is used to mark exception frames on the stack. */ | 504 | /* This value is used to mark exception frames on the stack. */ |
| 505 | .section ".toc","aw" | 505 | .section ".toc","aw" |
| @@ -550,11 +550,11 @@ interrupt_end_book3e: | |||
| 550 | CRIT_EXCEPTION_PROLOG(0x100, BOOKE_INTERRUPT_CRITICAL, | 550 | CRIT_EXCEPTION_PROLOG(0x100, BOOKE_INTERRUPT_CRITICAL, |
| 551 | PROLOG_ADDITION_NONE) | 551 | PROLOG_ADDITION_NONE) |
| 552 | EXCEPTION_COMMON_CRIT(0x100) | 552 | EXCEPTION_COMMON_CRIT(0x100) |
| 553 | bl .save_nvgprs | 553 | bl save_nvgprs |
| 554 | bl special_reg_save | 554 | bl special_reg_save |
| 555 | CHECK_NAPPING(); | 555 | CHECK_NAPPING(); |
| 556 | addi r3,r1,STACK_FRAME_OVERHEAD | 556 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 557 | bl .unknown_exception | 557 | bl unknown_exception |
| 558 | b ret_from_crit_except | 558 | b ret_from_crit_except |
| 559 | 559 | ||
| 560 | /* Machine Check Interrupt */ | 560 | /* Machine Check Interrupt */ |
| @@ -562,11 +562,11 @@ interrupt_end_book3e: | |||
| 562 | MC_EXCEPTION_PROLOG(0x000, BOOKE_INTERRUPT_MACHINE_CHECK, | 562 | MC_EXCEPTION_PROLOG(0x000, BOOKE_INTERRUPT_MACHINE_CHECK, |
| 563 | PROLOG_ADDITION_NONE) | 563 | PROLOG_ADDITION_NONE) |
| 564 | EXCEPTION_COMMON_MC(0x000) | 564 | EXCEPTION_COMMON_MC(0x000) |
| 565 | bl .save_nvgprs | 565 | bl save_nvgprs |
| 566 | bl special_reg_save | 566 | bl special_reg_save |
| 567 | CHECK_NAPPING(); | 567 | CHECK_NAPPING(); |
| 568 | addi r3,r1,STACK_FRAME_OVERHEAD | 568 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 569 | bl .machine_check_exception | 569 | bl machine_check_exception |
| 570 | b ret_from_mc_except | 570 | b ret_from_mc_except |
| 571 | 571 | ||
| 572 | /* Data Storage Interrupt */ | 572 | /* Data Storage Interrupt */ |
| @@ -591,7 +591,7 @@ interrupt_end_book3e: | |||
| 591 | 591 | ||
| 592 | /* External Input Interrupt */ | 592 | /* External Input Interrupt */ |
| 593 | MASKABLE_EXCEPTION(0x500, BOOKE_INTERRUPT_EXTERNAL, | 593 | MASKABLE_EXCEPTION(0x500, BOOKE_INTERRUPT_EXTERNAL, |
| 594 | external_input, .do_IRQ, ACK_NONE) | 594 | external_input, do_IRQ, ACK_NONE) |
| 595 | 595 | ||
| 596 | /* Alignment */ | 596 | /* Alignment */ |
| 597 | START_EXCEPTION(alignment); | 597 | START_EXCEPTION(alignment); |
| @@ -612,9 +612,9 @@ interrupt_end_book3e: | |||
| 612 | std r14,_DSISR(r1) | 612 | std r14,_DSISR(r1) |
| 613 | addi r3,r1,STACK_FRAME_OVERHEAD | 613 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 614 | ld r14,PACA_EXGEN+EX_R14(r13) | 614 | ld r14,PACA_EXGEN+EX_R14(r13) |
| 615 | bl .save_nvgprs | 615 | bl save_nvgprs |
| 616 | bl .program_check_exception | 616 | bl program_check_exception |
| 617 | b .ret_from_except | 617 | b ret_from_except |
| 618 | 618 | ||
| 619 | /* Floating Point Unavailable Interrupt */ | 619 | /* Floating Point Unavailable Interrupt */ |
| 620 | START_EXCEPTION(fp_unavailable); | 620 | START_EXCEPTION(fp_unavailable); |
| @@ -625,13 +625,13 @@ interrupt_end_book3e: | |||
| 625 | ld r12,_MSR(r1) | 625 | ld r12,_MSR(r1) |
| 626 | andi. r0,r12,MSR_PR; | 626 | andi. r0,r12,MSR_PR; |
| 627 | beq- 1f | 627 | beq- 1f |
| 628 | bl .load_up_fpu | 628 | bl load_up_fpu |
| 629 | b fast_exception_return | 629 | b fast_exception_return |
| 630 | 1: INTS_DISABLE | 630 | 1: INTS_DISABLE |
| 631 | bl .save_nvgprs | 631 | bl save_nvgprs |
| 632 | addi r3,r1,STACK_FRAME_OVERHEAD | 632 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 633 | bl .kernel_fp_unavailable_exception | 633 | bl kernel_fp_unavailable_exception |
| 634 | b .ret_from_except | 634 | b ret_from_except |
| 635 | 635 | ||
| 636 | /* Altivec Unavailable Interrupt */ | 636 | /* Altivec Unavailable Interrupt */ |
| 637 | START_EXCEPTION(altivec_unavailable); | 637 | START_EXCEPTION(altivec_unavailable); |
| @@ -644,16 +644,16 @@ BEGIN_FTR_SECTION | |||
| 644 | ld r12,_MSR(r1) | 644 | ld r12,_MSR(r1) |
| 645 | andi. r0,r12,MSR_PR; | 645 | andi. r0,r12,MSR_PR; |
| 646 | beq- 1f | 646 | beq- 1f |
| 647 | bl .load_up_altivec | 647 | bl load_up_altivec |
| 648 | b fast_exception_return | 648 | b fast_exception_return |
| 649 | 1: | 649 | 1: |
| 650 | END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) | 650 | END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) |
| 651 | #endif | 651 | #endif |
| 652 | INTS_DISABLE | 652 | INTS_DISABLE |
| 653 | bl .save_nvgprs | 653 | bl save_nvgprs |
| 654 | addi r3,r1,STACK_FRAME_OVERHEAD | 654 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 655 | bl .altivec_unavailable_exception | 655 | bl altivec_unavailable_exception |
| 656 | b .ret_from_except | 656 | b ret_from_except |
| 657 | 657 | ||
| 658 | /* AltiVec Assist */ | 658 | /* AltiVec Assist */ |
| 659 | START_EXCEPTION(altivec_assist); | 659 | START_EXCEPTION(altivec_assist); |
| @@ -662,39 +662,39 @@ END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) | |||
| 662 | PROLOG_ADDITION_NONE) | 662 | PROLOG_ADDITION_NONE) |
| 663 | EXCEPTION_COMMON(0x220) | 663 | EXCEPTION_COMMON(0x220) |
| 664 | INTS_DISABLE | 664 | INTS_DISABLE |
| 665 | bl .save_nvgprs | 665 | bl save_nvgprs |
| 666 | addi r3,r1,STACK_FRAME_OVERHEAD | 666 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 667 | #ifdef CONFIG_ALTIVEC | 667 | #ifdef CONFIG_ALTIVEC |
| 668 | BEGIN_FTR_SECTION | 668 | BEGIN_FTR_SECTION |
| 669 | bl .altivec_assist_exception | 669 | bl altivec_assist_exception |
| 670 | END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) | 670 | END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) |
| 671 | #else | 671 | #else |
| 672 | bl .unknown_exception | 672 | bl unknown_exception |
| 673 | #endif | 673 | #endif |
| 674 | b .ret_from_except | 674 | b ret_from_except |
| 675 | 675 | ||
| 676 | 676 | ||
| 677 | /* Decrementer Interrupt */ | 677 | /* Decrementer Interrupt */ |
| 678 | MASKABLE_EXCEPTION(0x900, BOOKE_INTERRUPT_DECREMENTER, | 678 | MASKABLE_EXCEPTION(0x900, BOOKE_INTERRUPT_DECREMENTER, |
| 679 | decrementer, .timer_interrupt, ACK_DEC) | 679 | decrementer, timer_interrupt, ACK_DEC) |
| 680 | 680 | ||
| 681 | /* Fixed Interval Timer Interrupt */ | 681 | /* Fixed Interval Timer Interrupt */ |
| 682 | MASKABLE_EXCEPTION(0x980, BOOKE_INTERRUPT_FIT, | 682 | MASKABLE_EXCEPTION(0x980, BOOKE_INTERRUPT_FIT, |
| 683 | fixed_interval, .unknown_exception, ACK_FIT) | 683 | fixed_interval, unknown_exception, ACK_FIT) |
| 684 | 684 | ||
| 685 | /* Watchdog Timer Interrupt */ | 685 | /* Watchdog Timer Interrupt */ |
| 686 | START_EXCEPTION(watchdog); | 686 | START_EXCEPTION(watchdog); |
| 687 | CRIT_EXCEPTION_PROLOG(0x9f0, BOOKE_INTERRUPT_WATCHDOG, | 687 | CRIT_EXCEPTION_PROLOG(0x9f0, BOOKE_INTERRUPT_WATCHDOG, |
| 688 | PROLOG_ADDITION_NONE) | 688 | PROLOG_ADDITION_NONE) |
| 689 | EXCEPTION_COMMON_CRIT(0x9f0) | 689 | EXCEPTION_COMMON_CRIT(0x9f0) |
| 690 | bl .save_nvgprs | 690 | bl save_nvgprs |
| 691 | bl special_reg_save | 691 | bl special_reg_save |
| 692 | CHECK_NAPPING(); | 692 | CHECK_NAPPING(); |
| 693 | addi r3,r1,STACK_FRAME_OVERHEAD | 693 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 694 | #ifdef CONFIG_BOOKE_WDT | 694 | #ifdef CONFIG_BOOKE_WDT |
| 695 | bl .WatchdogException | 695 | bl WatchdogException |
| 696 | #else | 696 | #else |
| 697 | bl .unknown_exception | 697 | bl unknown_exception |
| 698 | #endif | 698 | #endif |
| 699 | b ret_from_crit_except | 699 | b ret_from_crit_except |
| 700 | 700 | ||
| @@ -712,10 +712,10 @@ END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) | |||
| 712 | PROLOG_ADDITION_NONE) | 712 | PROLOG_ADDITION_NONE) |
| 713 | EXCEPTION_COMMON(0xf20) | 713 | EXCEPTION_COMMON(0xf20) |
| 714 | INTS_DISABLE | 714 | INTS_DISABLE |
| 715 | bl .save_nvgprs | 715 | bl save_nvgprs |
| 716 | addi r3,r1,STACK_FRAME_OVERHEAD | 716 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 717 | bl .unknown_exception | 717 | bl unknown_exception |
| 718 | b .ret_from_except | 718 | b ret_from_except |
| 719 | 719 | ||
| 720 | /* Debug exception as a critical interrupt*/ | 720 | /* Debug exception as a critical interrupt*/ |
| 721 | START_EXCEPTION(debug_crit); | 721 | START_EXCEPTION(debug_crit); |
| @@ -774,9 +774,9 @@ END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC) | |||
| 774 | mr r4,r14 | 774 | mr r4,r14 |
| 775 | ld r14,PACA_EXCRIT+EX_R14(r13) | 775 | ld r14,PACA_EXCRIT+EX_R14(r13) |
| 776 | ld r15,PACA_EXCRIT+EX_R15(r13) | 776 | ld r15,PACA_EXCRIT+EX_R15(r13) |
| 777 | bl .save_nvgprs | 777 | bl save_nvgprs |
| 778 | bl .DebugException | 778 | bl DebugException |
| 779 | b .ret_from_except | 779 | b ret_from_except |
| 780 | 780 | ||
| 781 | kernel_dbg_exc: | 781 | kernel_dbg_exc: |
| 782 | b . /* NYI */ | 782 | b . /* NYI */ |
| @@ -839,9 +839,9 @@ kernel_dbg_exc: | |||
| 839 | mr r4,r14 | 839 | mr r4,r14 |
| 840 | ld r14,PACA_EXDBG+EX_R14(r13) | 840 | ld r14,PACA_EXDBG+EX_R14(r13) |
| 841 | ld r15,PACA_EXDBG+EX_R15(r13) | 841 | ld r15,PACA_EXDBG+EX_R15(r13) |
| 842 | bl .save_nvgprs | 842 | bl save_nvgprs |
| 843 | bl .DebugException | 843 | bl DebugException |
| 844 | b .ret_from_except | 844 | b ret_from_except |
| 845 | 845 | ||
| 846 | START_EXCEPTION(perfmon); | 846 | START_EXCEPTION(perfmon); |
| 847 | NORMAL_EXCEPTION_PROLOG(0x260, BOOKE_INTERRUPT_PERFORMANCE_MONITOR, | 847 | NORMAL_EXCEPTION_PROLOG(0x260, BOOKE_INTERRUPT_PERFORMANCE_MONITOR, |
| @@ -850,23 +850,23 @@ kernel_dbg_exc: | |||
| 850 | INTS_DISABLE | 850 | INTS_DISABLE |
| 851 | CHECK_NAPPING() | 851 | CHECK_NAPPING() |
| 852 | addi r3,r1,STACK_FRAME_OVERHEAD | 852 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 853 | bl .performance_monitor_exception | 853 | bl performance_monitor_exception |
| 854 | b .ret_from_except_lite | 854 | b ret_from_except_lite |
| 855 | 855 | ||
| 856 | /* Doorbell interrupt */ | 856 | /* Doorbell interrupt */ |
| 857 | MASKABLE_EXCEPTION(0x280, BOOKE_INTERRUPT_DOORBELL, | 857 | MASKABLE_EXCEPTION(0x280, BOOKE_INTERRUPT_DOORBELL, |
| 858 | doorbell, .doorbell_exception, ACK_NONE) | 858 | doorbell, doorbell_exception, ACK_NONE) |
| 859 | 859 | ||
| 860 | /* Doorbell critical Interrupt */ | 860 | /* Doorbell critical Interrupt */ |
| 861 | START_EXCEPTION(doorbell_crit); | 861 | START_EXCEPTION(doorbell_crit); |
| 862 | CRIT_EXCEPTION_PROLOG(0x2a0, BOOKE_INTERRUPT_DOORBELL_CRITICAL, | 862 | CRIT_EXCEPTION_PROLOG(0x2a0, BOOKE_INTERRUPT_DOORBELL_CRITICAL, |
| 863 | PROLOG_ADDITION_NONE) | 863 | PROLOG_ADDITION_NONE) |
| 864 | EXCEPTION_COMMON_CRIT(0x2a0) | 864 | EXCEPTION_COMMON_CRIT(0x2a0) |
| 865 | bl .save_nvgprs | 865 | bl save_nvgprs |
| 866 | bl special_reg_save | 866 | bl special_reg_save |
| 867 | CHECK_NAPPING(); | 867 | CHECK_NAPPING(); |
| 868 | addi r3,r1,STACK_FRAME_OVERHEAD | 868 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 869 | bl .unknown_exception | 869 | bl unknown_exception |
| 870 | b ret_from_crit_except | 870 | b ret_from_crit_except |
| 871 | 871 | ||
| 872 | /* | 872 | /* |
| @@ -878,21 +878,21 @@ kernel_dbg_exc: | |||
| 878 | PROLOG_ADDITION_NONE) | 878 | PROLOG_ADDITION_NONE) |
| 879 | EXCEPTION_COMMON(0x2c0) | 879 | EXCEPTION_COMMON(0x2c0) |
| 880 | addi r3,r1,STACK_FRAME_OVERHEAD | 880 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 881 | bl .save_nvgprs | 881 | bl save_nvgprs |
| 882 | INTS_RESTORE_HARD | 882 | INTS_RESTORE_HARD |
| 883 | bl .unknown_exception | 883 | bl unknown_exception |
| 884 | b .ret_from_except | 884 | b ret_from_except |
| 885 | 885 | ||
| 886 | /* Guest Doorbell critical Interrupt */ | 886 | /* Guest Doorbell critical Interrupt */ |
| 887 | START_EXCEPTION(guest_doorbell_crit); | 887 | START_EXCEPTION(guest_doorbell_crit); |
| 888 | CRIT_EXCEPTION_PROLOG(0x2e0, BOOKE_INTERRUPT_GUEST_DBELL_CRIT, | 888 | CRIT_EXCEPTION_PROLOG(0x2e0, BOOKE_INTERRUPT_GUEST_DBELL_CRIT, |
| 889 | PROLOG_ADDITION_NONE) | 889 | PROLOG_ADDITION_NONE) |
| 890 | EXCEPTION_COMMON_CRIT(0x2e0) | 890 | EXCEPTION_COMMON_CRIT(0x2e0) |
| 891 | bl .save_nvgprs | 891 | bl save_nvgprs |
| 892 | bl special_reg_save | 892 | bl special_reg_save |
| 893 | CHECK_NAPPING(); | 893 | CHECK_NAPPING(); |
| 894 | addi r3,r1,STACK_FRAME_OVERHEAD | 894 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 895 | bl .unknown_exception | 895 | bl unknown_exception |
| 896 | b ret_from_crit_except | 896 | b ret_from_crit_except |
| 897 | 897 | ||
| 898 | /* Hypervisor call */ | 898 | /* Hypervisor call */ |
| @@ -901,10 +901,10 @@ kernel_dbg_exc: | |||
| 901 | PROLOG_ADDITION_NONE) | 901 | PROLOG_ADDITION_NONE) |
| 902 | EXCEPTION_COMMON(0x310) | 902 | EXCEPTION_COMMON(0x310) |
| 903 | addi r3,r1,STACK_FRAME_OVERHEAD | 903 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 904 | bl .save_nvgprs | 904 | bl save_nvgprs |
| 905 | INTS_RESTORE_HARD | 905 | INTS_RESTORE_HARD |
| 906 | bl .unknown_exception | 906 | bl unknown_exception |
| 907 | b .ret_from_except | 907 | b ret_from_except |
| 908 | 908 | ||
| 909 | /* Embedded Hypervisor priviledged */ | 909 | /* Embedded Hypervisor priviledged */ |
| 910 | START_EXCEPTION(ehpriv); | 910 | START_EXCEPTION(ehpriv); |
| @@ -912,10 +912,10 @@ kernel_dbg_exc: | |||
| 912 | PROLOG_ADDITION_NONE) | 912 | PROLOG_ADDITION_NONE) |
| 913 | EXCEPTION_COMMON(0x320) | 913 | EXCEPTION_COMMON(0x320) |
| 914 | addi r3,r1,STACK_FRAME_OVERHEAD | 914 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 915 | bl .save_nvgprs | 915 | bl save_nvgprs |
| 916 | INTS_RESTORE_HARD | 916 | INTS_RESTORE_HARD |
| 917 | bl .unknown_exception | 917 | bl unknown_exception |
| 918 | b .ret_from_except | 918 | b ret_from_except |
| 919 | 919 | ||
| 920 | /* LRAT Error interrupt */ | 920 | /* LRAT Error interrupt */ |
| 921 | START_EXCEPTION(lrat_error); | 921 | START_EXCEPTION(lrat_error); |
| @@ -1014,16 +1014,16 @@ storage_fault_common: | |||
| 1014 | mr r5,r15 | 1014 | mr r5,r15 |
| 1015 | ld r14,PACA_EXGEN+EX_R14(r13) | 1015 | ld r14,PACA_EXGEN+EX_R14(r13) |
| 1016 | ld r15,PACA_EXGEN+EX_R15(r13) | 1016 | ld r15,PACA_EXGEN+EX_R15(r13) |
| 1017 | bl .do_page_fault | 1017 | bl do_page_fault |
| 1018 | cmpdi r3,0 | 1018 | cmpdi r3,0 |
| 1019 | bne- 1f | 1019 | bne- 1f |
| 1020 | b .ret_from_except_lite | 1020 | b ret_from_except_lite |
| 1021 | 1: bl .save_nvgprs | 1021 | 1: bl save_nvgprs |
| 1022 | mr r5,r3 | 1022 | mr r5,r3 |
| 1023 | addi r3,r1,STACK_FRAME_OVERHEAD | 1023 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 1024 | ld r4,_DAR(r1) | 1024 | ld r4,_DAR(r1) |
| 1025 | bl .bad_page_fault | 1025 | bl bad_page_fault |
| 1026 | b .ret_from_except | 1026 | b ret_from_except |
| 1027 | 1027 | ||
| 1028 | /* | 1028 | /* |
| 1029 | * Alignment exception doesn't fit entirely in the 0x100 bytes so it | 1029 | * Alignment exception doesn't fit entirely in the 0x100 bytes so it |
| @@ -1035,10 +1035,10 @@ alignment_more: | |||
| 1035 | addi r3,r1,STACK_FRAME_OVERHEAD | 1035 | addi r3,r1,STACK_FRAME_OVERHEAD |
| 1036 | ld r14,PACA_EXGEN+EX_R14(r13) | 1036 | ld r14,PACA_EXGEN+EX_R14(r13) |
| 1037 | ld r15,PACA_EXGEN+EX_R15(r13) | 1037 | ld r15,PACA_EXGEN+EX_R15(r13) |
| 1038 | bl .save_nvgprs | 1038 | bl save_nvgprs |
| 1039 | INTS_RESTORE_HARD | 1039 | INTS_RESTORE_HARD |
| 1040 | bl .alignment_exception | 1040 | bl alignment_exception |
| 1041 | b .ret_from_except | 1041 | b ret_from_except |
| 1042 | 1042 | ||
| 1043 | /* | 1043 | /* |
| 1044 | * We branch here from entry_64.S for the last stage of the exception | 1044 | * We branch here from entry_64.S for the last stage of the exception |
| @@ -1172,7 +1172,7 @@ bad_stack_book3e: | |||
| 1172 | std r12,0(r11) | 1172 | std r12,0(r11) |
| 1173 | ld r2,PACATOC(r13) | 1173 | ld r2,PACATOC(r13) |
| 1174 | 1: addi r3,r1,STACK_FRAME_OVERHEAD | 1174 | 1: addi r3,r1,STACK_FRAME_OVERHEAD |
| 1175 | bl .kernel_bad_stack | 1175 | bl kernel_bad_stack |
| 1176 | b 1b | 1176 | b 1b |
| 1177 | 1177 | ||
| 1178 | /* | 1178 | /* |
| @@ -1521,13 +1521,13 @@ _GLOBAL(start_initialization_book3e) | |||
| 1521 | * and always use AS 0, so we just set it up to match our link | 1521 | * and always use AS 0, so we just set it up to match our link |
| 1522 | * address and never use 0 based addresses. | 1522 | * address and never use 0 based addresses. |
| 1523 | */ | 1523 | */ |
| 1524 | bl .initial_tlb_book3e | 1524 | bl initial_tlb_book3e |
| 1525 | 1525 | ||
| 1526 | /* Init global core bits */ | 1526 | /* Init global core bits */ |
| 1527 | bl .init_core_book3e | 1527 | bl init_core_book3e |
| 1528 | 1528 | ||
| 1529 | /* Init per-thread bits */ | 1529 | /* Init per-thread bits */ |
| 1530 | bl .init_thread_book3e | 1530 | bl init_thread_book3e |
| 1531 | 1531 | ||
| 1532 | /* Return to common init code */ | 1532 | /* Return to common init code */ |
| 1533 | tovirt(r28,r28) | 1533 | tovirt(r28,r28) |
| @@ -1548,7 +1548,7 @@ _GLOBAL(start_initialization_book3e) | |||
| 1548 | */ | 1548 | */ |
| 1549 | _GLOBAL(book3e_secondary_core_init_tlb_set) | 1549 | _GLOBAL(book3e_secondary_core_init_tlb_set) |
| 1550 | li r4,1 | 1550 | li r4,1 |
| 1551 | b .generic_secondary_smp_init | 1551 | b generic_secondary_smp_init |
| 1552 | 1552 | ||
| 1553 | _GLOBAL(book3e_secondary_core_init) | 1553 | _GLOBAL(book3e_secondary_core_init) |
| 1554 | mflr r28 | 1554 | mflr r28 |
| @@ -1558,18 +1558,18 @@ _GLOBAL(book3e_secondary_core_init) | |||
| 1558 | bne 2f | 1558 | bne 2f |
| 1559 | 1559 | ||
| 1560 | /* Setup TLB for this core */ | 1560 | /* Setup TLB for this core */ |
| 1561 | bl .initial_tlb_book3e | 1561 | bl initial_tlb_book3e |
| 1562 | 1562 | ||
| 1563 | /* We can return from the above running at a different | 1563 | /* We can return from the above running at a different |
| 1564 | * address, so recalculate r2 (TOC) | 1564 | * address, so recalculate r2 (TOC) |
| 1565 | */ | 1565 | */ |
| 1566 | bl .relative_toc | 1566 | bl relative_toc |
| 1567 | 1567 | ||
| 1568 | /* Init global core bits */ | 1568 | /* Init global core bits */ |
| 1569 | 2: bl .init_core_book3e | 1569 | 2: bl init_core_book3e |
| 1570 | 1570 | ||
| 1571 | /* Init per-thread bits */ | 1571 | /* Init per-thread bits */ |
| 1572 | 3: bl .init_thread_book3e | 1572 | 3: bl init_thread_book3e |
| 1573 | 1573 | ||
| 1574 | /* Return to common init code at proper virtual address. | 1574 | /* Return to common init code at proper virtual address. |
| 1575 | * | 1575 | * |
| @@ -1596,14 +1596,14 @@ _GLOBAL(book3e_secondary_thread_init) | |||
| 1596 | mflr r28 | 1596 | mflr r28 |
| 1597 | b 3b | 1597 | b 3b |
| 1598 | 1598 | ||
| 1599 | _STATIC(init_core_book3e) | 1599 | init_core_book3e: |
| 1600 | /* Establish the interrupt vector base */ | 1600 | /* Establish the interrupt vector base */ |
| 1601 | LOAD_REG_IMMEDIATE(r3, interrupt_base_book3e) | 1601 | LOAD_REG_IMMEDIATE(r3, interrupt_base_book3e) |
| 1602 | mtspr SPRN_IVPR,r3 | 1602 | mtspr SPRN_IVPR,r3 |
| 1603 | sync | 1603 | sync |
| 1604 | blr | 1604 | blr |
| 1605 | 1605 | ||
| 1606 | _STATIC(init_thread_book3e) | 1606 | init_thread_book3e: |
| 1607 | lis r3,(SPRN_EPCR_ICM | SPRN_EPCR_GICM)@h | 1607 | lis r3,(SPRN_EPCR_ICM | SPRN_EPCR_GICM)@h |
| 1608 | mtspr SPRN_EPCR,r3 | 1608 | mtspr SPRN_EPCR,r3 |
| 1609 | 1609 | ||
