diff options
Diffstat (limited to 'arch/sparc/kernel')
| -rw-r--r-- | arch/sparc/kernel/cpu.c | 12 | ||||
| -rw-r--r-- | arch/sparc/kernel/cpumap.c | 2 | ||||
| -rw-r--r-- | arch/sparc/kernel/head_64.S | 25 | ||||
| -rw-r--r-- | arch/sparc/kernel/process_32.c | 3 | ||||
| -rw-r--r-- | arch/sparc/kernel/process_64.c | 3 | ||||
| -rw-r--r-- | arch/sparc/kernel/setup_32.c | 2 | ||||
| -rw-r--r-- | arch/sparc/kernel/setup_64.c | 18 | 
7 files changed, 51 insertions, 14 deletions
diff --git a/arch/sparc/kernel/cpu.c b/arch/sparc/kernel/cpu.c index 9810fd88105..ba9b1cec4e6 100644 --- a/arch/sparc/kernel/cpu.c +++ b/arch/sparc/kernel/cpu.c @@ -481,6 +481,18 @@ static void __init sun4v_cpu_probe(void)  		sparc_pmu_type = "niagara3";  		break; +	case SUN4V_CHIP_NIAGARA4: +		sparc_cpu_type = "UltraSparc T4 (Niagara4)"; +		sparc_fpu_type = "UltraSparc T4 integrated FPU"; +		sparc_pmu_type = "niagara4"; +		break; + +	case SUN4V_CHIP_NIAGARA5: +		sparc_cpu_type = "UltraSparc T5 (Niagara5)"; +		sparc_fpu_type = "UltraSparc T5 integrated FPU"; +		sparc_pmu_type = "niagara5"; +		break; +  	default:  		printk(KERN_WARNING "CPU: Unknown sun4v cpu type [%s]\n",  		       prom_cpu_compatible); diff --git a/arch/sparc/kernel/cpumap.c b/arch/sparc/kernel/cpumap.c index 4197e8d62d4..9323eafccb9 100644 --- a/arch/sparc/kernel/cpumap.c +++ b/arch/sparc/kernel/cpumap.c @@ -325,6 +325,8 @@ static int iterate_cpu(struct cpuinfo_tree *t, unsigned int root_index)  	case SUN4V_CHIP_NIAGARA1:  	case SUN4V_CHIP_NIAGARA2:  	case SUN4V_CHIP_NIAGARA3: +	case SUN4V_CHIP_NIAGARA4: +	case SUN4V_CHIP_NIAGARA5:  		rover_inc_table = niagara_iterate_method;  		break;  	default: 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 diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c index c8cc461ff75..f793742eec2 100644 --- a/arch/sparc/kernel/process_32.c +++ b/arch/sparc/kernel/process_32.c @@ -380,8 +380,7 @@ void flush_thread(void)  #endif  	} -	/* Now, this task is no longer a kernel thread. */ -	current->thread.current_ds = USER_DS; +	/* This task is no longer a kernel thread. */  	if (current->thread.flags & SPARC_FLAG_KTHREAD) {  		current->thread.flags &= ~SPARC_FLAG_KTHREAD; diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c index c158a95ec66..d959cd0a4aa 100644 --- a/arch/sparc/kernel/process_64.c +++ b/arch/sparc/kernel/process_64.c @@ -368,9 +368,6 @@ void flush_thread(void)  	/* Clear FPU register state. */  	t->fpsaved[0] = 0; -	 -	if (get_thread_current_ds() != ASI_AIUS) -		set_fs(USER_DS);  }  /* It's a bit more tricky when 64-bit tasks are involved... */ diff --git a/arch/sparc/kernel/setup_32.c b/arch/sparc/kernel/setup_32.c index d26e1f6c717..3e3e2914c70 100644 --- a/arch/sparc/kernel/setup_32.c +++ b/arch/sparc/kernel/setup_32.c @@ -137,7 +137,7 @@ static void __init process_switch(char c)  		prom_halt();  		break;  	case 'p': -		/* Just ignore, this behavior is now the default.  */ +		prom_early_console.flags &= ~CON_BOOT;  		break;  	default:  		printk("Unknown boot switch (-%c)\n", c); diff --git a/arch/sparc/kernel/setup_64.c b/arch/sparc/kernel/setup_64.c index 3c5bb784214..c965595aa7e 100644 --- a/arch/sparc/kernel/setup_64.c +++ b/arch/sparc/kernel/setup_64.c @@ -106,7 +106,7 @@ static void __init process_switch(char c)  		prom_halt();  		break;  	case 'p': -		/* Just ignore, this behavior is now the default.  */ +		prom_early_console.flags &= ~CON_BOOT;  		break;  	case 'P':  		/* Force UltraSPARC-III P-Cache on. */ @@ -425,10 +425,14 @@ static void __init init_sparc64_elf_hwcap(void)  	else if (tlb_type == hypervisor) {  		if (sun4v_chip_type == SUN4V_CHIP_NIAGARA1 ||  		    sun4v_chip_type == SUN4V_CHIP_NIAGARA2 || -		    sun4v_chip_type == SUN4V_CHIP_NIAGARA3) +		    sun4v_chip_type == SUN4V_CHIP_NIAGARA3 || +		    sun4v_chip_type == SUN4V_CHIP_NIAGARA4 || +		    sun4v_chip_type == SUN4V_CHIP_NIAGARA5)  			cap |= HWCAP_SPARC_BLKINIT;  		if (sun4v_chip_type == SUN4V_CHIP_NIAGARA2 || -		    sun4v_chip_type == SUN4V_CHIP_NIAGARA3) +		    sun4v_chip_type == SUN4V_CHIP_NIAGARA3 || +		    sun4v_chip_type == SUN4V_CHIP_NIAGARA4 || +		    sun4v_chip_type == SUN4V_CHIP_NIAGARA5)  			cap |= HWCAP_SPARC_N2;  	} @@ -452,11 +456,15 @@ static void __init init_sparc64_elf_hwcap(void)  			if (sun4v_chip_type == SUN4V_CHIP_NIAGARA1)  				cap |= AV_SPARC_ASI_BLK_INIT;  			if (sun4v_chip_type == SUN4V_CHIP_NIAGARA2 || -			    sun4v_chip_type == SUN4V_CHIP_NIAGARA3) +			    sun4v_chip_type == SUN4V_CHIP_NIAGARA3 || +			    sun4v_chip_type == SUN4V_CHIP_NIAGARA4 || +			    sun4v_chip_type == SUN4V_CHIP_NIAGARA5)  				cap |= (AV_SPARC_VIS | AV_SPARC_VIS2 |  					AV_SPARC_ASI_BLK_INIT |  					AV_SPARC_POPC); -			if (sun4v_chip_type == SUN4V_CHIP_NIAGARA3) +			if (sun4v_chip_type == SUN4V_CHIP_NIAGARA3 || +			    sun4v_chip_type == SUN4V_CHIP_NIAGARA4 || +			    sun4v_chip_type == SUN4V_CHIP_NIAGARA5)  				cap |= (AV_SPARC_VIS3 | AV_SPARC_HPC |  					AV_SPARC_FMAF);  		}  |