diff options
| -rw-r--r-- | arch/powerpc/kernel/entry_64.S | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index 724733b74744..2748584b767d 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
| @@ -892,7 +892,7 @@ BEGIN_FTR_SECTION | |||
| 892 | END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR) | 892 | END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR) |
| 893 | ACCOUNT_CPU_USER_EXIT(r13, r2, r4) | 893 | ACCOUNT_CPU_USER_EXIT(r13, r2, r4) |
| 894 | REST_GPR(13, r1) | 894 | REST_GPR(13, r1) |
| 895 | 1: | 895 | |
| 896 | mtspr SPRN_SRR1,r3 | 896 | mtspr SPRN_SRR1,r3 |
| 897 | 897 | ||
| 898 | ld r2,_CCR(r1) | 898 | ld r2,_CCR(r1) |
| @@ -905,8 +905,22 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR) | |||
| 905 | ld r3,GPR3(r1) | 905 | ld r3,GPR3(r1) |
| 906 | ld r4,GPR4(r1) | 906 | ld r4,GPR4(r1) |
| 907 | ld r1,GPR1(r1) | 907 | ld r1,GPR1(r1) |
| 908 | RFI_TO_USER | ||
| 909 | b . /* prevent speculative execution */ | ||
| 910 | |||
| 911 | 1: mtspr SPRN_SRR1,r3 | ||
| 912 | |||
| 913 | ld r2,_CCR(r1) | ||
| 914 | mtcrf 0xFF,r2 | ||
| 915 | ld r2,_NIP(r1) | ||
| 916 | mtspr SPRN_SRR0,r2 | ||
| 908 | 917 | ||
| 909 | rfid | 918 | ld r0,GPR0(r1) |
| 919 | ld r2,GPR2(r1) | ||
| 920 | ld r3,GPR3(r1) | ||
| 921 | ld r4,GPR4(r1) | ||
| 922 | ld r1,GPR1(r1) | ||
| 923 | RFI_TO_KERNEL | ||
| 910 | b . /* prevent speculative execution */ | 924 | b . /* prevent speculative execution */ |
| 911 | 925 | ||
| 912 | #endif /* CONFIG_PPC_BOOK3E */ | 926 | #endif /* CONFIG_PPC_BOOK3E */ |
