aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/trampoline.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc64/kernel/trampoline.S')
-rw-r--r--arch/sparc64/kernel/trampoline.S32
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
276661: 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
285661: 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 320661: 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