diff options
Diffstat (limited to 'arch/sparc/kernel/head_64.S')
| -rw-r--r-- | arch/sparc/kernel/head_64.S | 25 | 
1 files changed, 23 insertions, 2 deletions
diff --git a/arch/sparc/kernel/head_64.S b/arch/sparc/kernel/head_64.S index 2feb15c35d9..26b706a1867 100644 --- a/arch/sparc/kernel/head_64.S +++ b/arch/sparc/kernel/head_64.S @@ -134,6 +134,8 @@ prom_niagara_prefix:  	.asciz	"SUNW,UltraSPARC-T"  prom_sparc_prefix:  	.asciz	"SPARC-" +prom_sparc64x_prefix: +	.asciz	"SPARC64-X"  	.align	4  prom_root_compatible:  	.skip	64 @@ -412,7 +414,7 @@ sun4v_chip_type:  	cmp	%g2, 'T'  	be,pt	%xcc, 70f  	 cmp	%g2, 'M' -	bne,pn	%xcc, 4f +	bne,pn	%xcc, 49f  	 nop  70:	ldub	[%g1 + 7], %g2 @@ -425,7 +427,7 @@ sun4v_chip_type:  	cmp	%g2, '5'  	be,pt	%xcc, 5f  	 mov	SUN4V_CHIP_NIAGARA5, %g4 -	ba,pt	%xcc, 4f +	ba,pt	%xcc, 49f  	 nop  91:	sethi	%hi(prom_cpu_compatible), %g1 @@ -439,6 +441,25 @@ sun4v_chip_type:  	 mov	SUN4V_CHIP_NIAGARA2, %g4  4: +	/* Athena */ +	sethi	%hi(prom_cpu_compatible), %g1 +	or	%g1, %lo(prom_cpu_compatible), %g1 +	sethi	%hi(prom_sparc64x_prefix), %g7 +	or	%g7, %lo(prom_sparc64x_prefix), %g7 +	mov	9, %g3 +41:	ldub	[%g7], %g2 +	ldub	[%g1], %g4 +	cmp	%g2, %g4 +	bne,pn	%icc, 49f +	add	%g7, 1, %g7 +	subcc	%g3, 1, %g3 +	bne,pt	%xcc, 41b +	add	%g1, 1, %g1 +	mov	SUN4V_CHIP_SPARC64X, %g4 +	ba,pt	%xcc, 5f +	nop + +49:  	mov	SUN4V_CHIP_UNKNOWN, %g4  5:	sethi	%hi(sun4v_chip_type), %g2  	or	%g2, %lo(sun4v_chip_type), %g2  |