aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/entry_64.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/kernel/entry_64.S')
-rw-r--r--arch/powerpc/kernel/entry_64.S16
1 files changed, 7 insertions, 9 deletions
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index 55445f1dba8..fd8b4bae9b0 100644
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@ -690,10 +690,6 @@ _GLOBAL(enter_rtas)
690 std r7,_DAR(r1) 690 std r7,_DAR(r1)
691 mfdsisr r8 691 mfdsisr r8
692 std r8,_DSISR(r1) 692 std r8,_DSISR(r1)
693 mfsrr0 r9
694 std r9,_SRR0(r1)
695 mfsrr1 r10
696 std r10,_SRR1(r1)
697 693
698 /* Temporary workaround to clear CR until RTAS can be modified to 694 /* Temporary workaround to clear CR until RTAS can be modified to
699 * ignore all bits. 695 * ignore all bits.
@@ -754,6 +750,10 @@ _STATIC(rtas_return_loc)
754 mfspr r4,SPRN_SPRG3 /* Get PACA */ 750 mfspr r4,SPRN_SPRG3 /* Get PACA */
755 clrldi r4,r4,2 /* convert to realmode address */ 751 clrldi r4,r4,2 /* convert to realmode address */
756 752
753 bcl 20,31,$+4
7540: mflr r3
755 ld r3,(1f-0b)(r3) /* get &.rtas_restore_regs */
756
757 mfmsr r6 757 mfmsr r6
758 li r0,MSR_RI 758 li r0,MSR_RI
759 andc r6,r6,r0 759 andc r6,r6,r0
@@ -761,7 +761,6 @@ _STATIC(rtas_return_loc)
761 mtmsrd r6 761 mtmsrd r6
762 762
763 ld r1,PACAR1(r4) /* Restore our SP */ 763 ld r1,PACAR1(r4) /* Restore our SP */
764 LOAD_REG_IMMEDIATE(r3,.rtas_restore_regs)
765 ld r4,PACASAVEDMSR(r4) /* Restore our MSR */ 764 ld r4,PACASAVEDMSR(r4) /* Restore our MSR */
766 765
767 mtspr SPRN_SRR0,r3 766 mtspr SPRN_SRR0,r3
@@ -769,6 +768,9 @@ _STATIC(rtas_return_loc)
769 rfid 768 rfid
770 b . /* prevent speculative execution */ 769 b . /* prevent speculative execution */
771 770
771 .align 3
7721: .llong .rtas_restore_regs
773
772_STATIC(rtas_restore_regs) 774_STATIC(rtas_restore_regs)
773 /* relocation is on at this point */ 775 /* relocation is on at this point */
774 REST_GPR(2, r1) /* Restore the TOC */ 776 REST_GPR(2, r1) /* Restore the TOC */
@@ -788,10 +790,6 @@ _STATIC(rtas_restore_regs)
788 mtdar r7 790 mtdar r7
789 ld r8,_DSISR(r1) 791 ld r8,_DSISR(r1)
790 mtdsisr r8 792 mtdsisr r8
791 ld r9,_SRR0(r1)
792 mtsrr0 r9
793 ld r10,_SRR1(r1)
794 mtsrr1 r10
795 793
796 addi r1,r1,RTAS_FRAME_SIZE /* Unstack our frame */ 794 addi r1,r1,RTAS_FRAME_SIZE /* Unstack our frame */
797 ld r0,16(r1) /* get return address */ 795 ld r0,16(r1) /* get return address */