diff options
Diffstat (limited to 'arch/sparc64/kernel/trampoline.S')
-rw-r--r-- | arch/sparc64/kernel/trampoline.S | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/arch/sparc64/kernel/trampoline.S b/arch/sparc64/kernel/trampoline.S index 18c333f841e3..d9e2af35158d 100644 --- a/arch/sparc64/kernel/trampoline.S +++ b/arch/sparc64/kernel/trampoline.S | |||
@@ -272,10 +272,22 @@ do_unlock: | |||
272 | wr %g0, ASI_P, %asi | 272 | wr %g0, ASI_P, %asi |
273 | 273 | ||
274 | mov PRIMARY_CONTEXT, %g7 | 274 | mov PRIMARY_CONTEXT, %g7 |
275 | stxa %g0, [%g7] ASI_DMMU | 275 | |
276 | 661: stxa %g0, [%g7] ASI_DMMU | ||
277 | .section .sun4v_1insn_patch, "ax" | ||
278 | .word 661b | ||
279 | stxa %g0, [%g7] ASI_MMU | ||
280 | .previous | ||
281 | |||
276 | membar #Sync | 282 | membar #Sync |
277 | mov SECONDARY_CONTEXT, %g7 | 283 | mov SECONDARY_CONTEXT, %g7 |
278 | stxa %g0, [%g7] ASI_DMMU | 284 | |
285 | 661: stxa %g0, [%g7] ASI_DMMU | ||
286 | .section .sun4v_1insn_patch, "ax" | ||
287 | .word 661b | ||
288 | stxa %g0, [%g7] ASI_MMU | ||
289 | .previous | ||
290 | |||
279 | membar #Sync | 291 | membar #Sync |
280 | 292 | ||
281 | mov 1, %g5 | 293 | mov 1, %g5 |
@@ -301,11 +313,17 @@ do_unlock: | |||
301 | nop | 313 | nop |
302 | 314 | ||
303 | /* Start using proper page size encodings in ctx register. */ | 315 | /* Start using proper page size encodings in ctx register. */ |
304 | sethi %hi(sparc64_kern_pri_context), %g3 | 316 | sethi %hi(sparc64_kern_pri_context), %g3 |
305 | ldx [%g3 + %lo(sparc64_kern_pri_context)], %g2 | 317 | ldx [%g3 + %lo(sparc64_kern_pri_context)], %g2 |
306 | mov PRIMARY_CONTEXT, %g1 | 318 | mov PRIMARY_CONTEXT, %g1 |
307 | stxa %g2, [%g1] ASI_DMMU | 319 | |
308 | membar #Sync | 320 | 661: stxa %g2, [%g1] ASI_DMMU |
321 | .section .sun4v_1insn_patch, "ax" | ||
322 | .word 661b | ||
323 | stxa %g2, [%g1] ASI_MMU | ||
324 | .previous | ||
325 | |||
326 | membar #Sync | ||
309 | 327 | ||
310 | rdpr %pstate, %o1 | 328 | rdpr %pstate, %o1 |
311 | or %o1, PSTATE_IE, %o1 | 329 | or %o1, PSTATE_IE, %o1 |