diff options
| -rw-r--r-- | arch/powerpc/kernel/tm.S | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/tm.S b/arch/powerpc/kernel/tm.S index 183e8d75936f..7716374786bd 100644 --- a/arch/powerpc/kernel/tm.S +++ b/arch/powerpc/kernel/tm.S | |||
| @@ -179,6 +179,13 @@ _GLOBAL(tm_reclaim) | |||
| 179 | std r11, GPR11(r1) /* Temporary stash */ | 179 | std r11, GPR11(r1) /* Temporary stash */ |
| 180 | 180 | ||
| 181 | /* | 181 | /* |
| 182 | * Move the saved user r1 to the kernel stack in case PACATMSCRATCH is | ||
| 183 | * clobbered by an exception once we turn on MSR_RI below. | ||
| 184 | */ | ||
| 185 | ld r11, PACATMSCRATCH(r13) | ||
| 186 | std r11, GPR1(r1) | ||
| 187 | |||
| 188 | /* | ||
| 182 | * Store r13 away so we can free up the scratch SPR for the SLB fault | 189 | * Store r13 away so we can free up the scratch SPR for the SLB fault |
| 183 | * handler (needed once we start accessing the thread_struct). | 190 | * handler (needed once we start accessing the thread_struct). |
| 184 | */ | 191 | */ |
| @@ -214,7 +221,7 @@ _GLOBAL(tm_reclaim) | |||
| 214 | SAVE_GPR(8, r7) /* user r8 */ | 221 | SAVE_GPR(8, r7) /* user r8 */ |
| 215 | SAVE_GPR(9, r7) /* user r9 */ | 222 | SAVE_GPR(9, r7) /* user r9 */ |
| 216 | SAVE_GPR(10, r7) /* user r10 */ | 223 | SAVE_GPR(10, r7) /* user r10 */ |
| 217 | ld r3, PACATMSCRATCH(r13) /* user r1 */ | 224 | ld r3, GPR1(r1) /* user r1 */ |
| 218 | ld r4, GPR7(r1) /* user r7 */ | 225 | ld r4, GPR7(r1) /* user r7 */ |
| 219 | ld r5, GPR11(r1) /* user r11 */ | 226 | ld r5, GPR11(r1) /* user r11 */ |
| 220 | ld r6, GPR12(r1) /* user r12 */ | 227 | ld r6, GPR12(r1) /* user r12 */ |
