diff options
Diffstat (limited to 'arch/sparc/kernel/head_64.S')
| -rw-r--r-- | arch/sparc/kernel/head_64.S | 25 | 
1 files changed, 22 insertions, 3 deletions
diff --git a/arch/sparc/kernel/head_64.S b/arch/sparc/kernel/head_64.S index 0eac1b2fc53..0d810c2f1d0 100644 --- a/arch/sparc/kernel/head_64.S +++ b/arch/sparc/kernel/head_64.S @@ -133,7 +133,7 @@ prom_sun4v_name:  prom_niagara_prefix:  	.asciz	"SUNW,UltraSPARC-T"  prom_sparc_prefix: -	.asciz	"SPARC-T" +	.asciz	"SPARC-"  	.align	4  prom_root_compatible:  	.skip	64 @@ -396,7 +396,7 @@ sun4v_chip_type:  	or	%g1, %lo(prom_cpu_compatible), %g1  	sethi	%hi(prom_sparc_prefix), %g7  	or	%g7, %lo(prom_sparc_prefix), %g7 -	mov	7, %g3 +	mov	6, %g3  90:	ldub	[%g7], %g2  	ldub	[%g1], %g4  	cmp	%g2, %g4 @@ -408,10 +408,23 @@ sun4v_chip_type:  	sethi	%hi(prom_cpu_compatible), %g1  	or	%g1, %lo(prom_cpu_compatible), %g1 -	ldub	[%g1 + 7], %g2 +	ldub	[%g1 + 6], %g2 +	cmp	%g2, 'T' +	be,pt	%xcc, 70f +	 cmp	%g2, 'M' +	bne,pn	%xcc, 4f +	 nop + +70:	ldub	[%g1 + 7], %g2  	cmp	%g2, '3'  	be,pt	%xcc, 5f  	 mov	SUN4V_CHIP_NIAGARA3, %g4 +	cmp	%g2, '4' +	be,pt	%xcc, 5f +	 mov	SUN4V_CHIP_NIAGARA4, %g4 +	cmp	%g2, '5' +	be,pt	%xcc, 5f +	 mov	SUN4V_CHIP_NIAGARA5, %g4  	ba,pt	%xcc, 4f  	 nop @@ -545,6 +558,12 @@ niagara_tlb_fixup:  	cmp	%g1, SUN4V_CHIP_NIAGARA3  	be,pt	%xcc, niagara2_patch  	 nop +	cmp	%g1, SUN4V_CHIP_NIAGARA4 +	be,pt	%xcc, niagara2_patch +	 nop +	cmp	%g1, SUN4V_CHIP_NIAGARA5 +	be,pt	%xcc, niagara2_patch +	 nop  	call	generic_patch_copyops  	 nop  |