aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/head.S
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2006-02-11 13:56:43 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 04:12:21 -0500
commit6cebb52094baddd4c167bb5100a7cf6f7bee6910 (patch)
tree5fef397fbb773f7d8aa40aecc303d18ddf88803e /arch/sparc64/kernel/head.S
parent0d4bc95b9c205a7374afbe93b38d9c2757a45862 (diff)
[SPARC64]: Fix sun4v early bootup.
prom_sun4v_name should be "sun4v" not "SUNW,sun4v" Also, this is too early to make use of the .sun4v_Xinsn_patch code patching, so just check things manually. This gets us at least to prom_init() on Niagara. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel/head.S')
-rw-r--r--arch/sparc64/kernel/head.S35
1 files changed, 20 insertions, 15 deletions
diff --git a/arch/sparc64/kernel/head.S b/arch/sparc64/kernel/head.S
index f581f0e917f7..3222c8205b57 100644
--- a/arch/sparc64/kernel/head.S
+++ b/arch/sparc64/kernel/head.S
@@ -123,7 +123,7 @@ prom_map_name:
123prom_unmap_name: 123prom_unmap_name:
124 .asciz "unmap" 124 .asciz "unmap"
125prom_sun4v_name: 125prom_sun4v_name:
126 .asciz "SUNW,sun4v" 126 .asciz "sun4v"
127 .align 4 127 .align 4
128prom_root_compatible: 128prom_root_compatible:
129 .skip 64 129 .skip 64
@@ -300,7 +300,7 @@ sparc64_boot_after_remap:
300 or %g1, %lo(prom_root_compatible), %g1 300 or %g1, %lo(prom_root_compatible), %g1
301 sethi %hi(prom_sun4v_name), %g7 301 sethi %hi(prom_sun4v_name), %g7
302 or %g7, %lo(prom_sun4v_name), %g7 302 or %g7, %lo(prom_sun4v_name), %g7
303 mov 10, %g3 303 mov 5, %g3
3041: ldub [%g7], %g2 3041: ldub [%g7], %g2
305 ldub [%g1], %g4 305 ldub [%g1], %g4
306 cmp %g2, %g4 306 cmp %g2, %g4
@@ -380,28 +380,33 @@ jump_to_sun4u_init:
380 nop 380 nop
381 381
382sun4u_init: 382sun4u_init:
383 BRANCH_IF_SUN4V(g1, sun4v_init)
384
383 /* Set ctx 0 */ 385 /* Set ctx 0 */
384 mov PRIMARY_CONTEXT, %g7 386 mov PRIMARY_CONTEXT, %g7
385 387 stxa %g0, [%g7] ASI_DMMU
386661: stxa %g0, [%g7] ASI_DMMU
387 .section .sun4v_1insn_patch, "ax"
388 .word 661b
389 stxa %g0, [%g7] ASI_MMU
390 .previous
391
392 membar #Sync 388 membar #Sync
393 389
394 mov SECONDARY_CONTEXT, %g7 390 mov SECONDARY_CONTEXT, %g7
391 stxa %g0, [%g7] ASI_DMMU
392 membar #Sync
395 393
396661: stxa %g0, [%g7] ASI_DMMU 394 ba,pt %xcc, sun4u_continue
397 .section .sun4v_1insn_patch, "ax" 395 nop
398 .word 661b 396
397sun4v_init:
398 /* Set ctx 0 */
399 mov PRIMARY_CONTEXT, %g7
399 stxa %g0, [%g7] ASI_MMU 400 stxa %g0, [%g7] ASI_MMU
400 .previous 401 membar #Sync
401 402
402 membar #Sync 403 mov SECONDARY_CONTEXT, %g7
404 stxa %g0, [%g7] ASI_MMU
405 membar #Sync
406 ba,pt %xcc, niagara_tlb_fixup
407 nop
403 408
404 BRANCH_IF_SUN4V(g1, niagara_tlb_fixup) 409sun4u_continue:
405 BRANCH_IF_ANY_CHEETAH(g1, g7, cheetah_tlb_fixup) 410 BRANCH_IF_ANY_CHEETAH(g1, g7, cheetah_tlb_fixup)
406 411
407 ba,pt %xcc, spitfire_tlb_fixup 412 ba,pt %xcc, spitfire_tlb_fixup