diff options
| -rw-r--r-- | arch/sparc/include/asm/io.h | 13 | ||||
| -rw-r--r-- | arch/sparc/kernel/apc.c | 2 | ||||
| -rw-r--r-- | arch/sparc/kernel/pmc.c | 2 | ||||
| -rw-r--r-- | arch/sparc/kernel/smp_32.c | 10 | ||||
| -rw-r--r-- | arch/sparc/kernel/time_32.c | 2 | ||||
| -rw-r--r-- | arch/sparc/lib/checksum_32.S | 12 | 
6 files changed, 32 insertions, 9 deletions
diff --git a/arch/sparc/include/asm/io.h b/arch/sparc/include/asm/io.h index a34b2994937a..f6902cf3cbe9 100644 --- a/arch/sparc/include/asm/io.h +++ b/arch/sparc/include/asm/io.h @@ -5,4 +5,17 @@  #else  #include <asm/io_32.h>  #endif + +/* + * Defines used for both SPARC32 and SPARC64 + */ + +/* Big endian versions of memory read/write routines */ +#define readb_be(__addr)	__raw_readb(__addr) +#define readw_be(__addr)	__raw_readw(__addr) +#define readl_be(__addr)	__raw_readl(__addr) +#define writeb_be(__b, __addr)	__raw_writeb(__b, __addr) +#define writel_be(__w, __addr)	__raw_writel(__w, __addr) +#define writew_be(__l, __addr)	__raw_writew(__l, __addr) +  #endif diff --git a/arch/sparc/kernel/apc.c b/arch/sparc/kernel/apc.c index f679c57644d5..1e34f29e58bb 100644 --- a/arch/sparc/kernel/apc.c +++ b/arch/sparc/kernel/apc.c @@ -165,7 +165,7 @@ static int __devinit apc_probe(struct platform_device *op)  	return 0;  } -static struct of_device_id __initdata apc_match[] = { +static struct of_device_id apc_match[] = {  	{  		.name = APC_OBPNAME,  	}, diff --git a/arch/sparc/kernel/pmc.c b/arch/sparc/kernel/pmc.c index 93d7b4465f8d..6a585d393580 100644 --- a/arch/sparc/kernel/pmc.c +++ b/arch/sparc/kernel/pmc.c @@ -69,7 +69,7 @@ static int __devinit pmc_probe(struct platform_device *op)  	return 0;  } -static struct of_device_id __initdata pmc_match[] = { +static struct of_device_id pmc_match[] = {  	{  		.name = PMC_OBPNAME,  	}, diff --git a/arch/sparc/kernel/smp_32.c b/arch/sparc/kernel/smp_32.c index 139c312a41f7..41102c5a6702 100644 --- a/arch/sparc/kernel/smp_32.c +++ b/arch/sparc/kernel/smp_32.c @@ -51,6 +51,7 @@ cpumask_t smp_commenced_mask = CPU_MASK_NONE;  void __cpuinit smp_store_cpu_info(int id)  {  	int cpu_node; +	int mid;  	cpu_data(id).udelay_val = loops_per_jiffy; @@ -58,10 +59,13 @@ void __cpuinit smp_store_cpu_info(int id)  	cpu_data(id).clock_tick = prom_getintdefault(cpu_node,  						     "clock-frequency", 0);  	cpu_data(id).prom_node = cpu_node; -	cpu_data(id).mid = cpu_get_hwmid(cpu_node); +	mid = cpu_get_hwmid(cpu_node); -	if (cpu_data(id).mid < 0) -		panic("No MID found for CPU%d at node 0x%08d", id, cpu_node); +	if (mid < 0) { +		printk(KERN_NOTICE "No MID found for CPU%d at node 0x%08d", id, cpu_node); +		mid = 0; +	} +	cpu_data(id).mid = mid;  }  void __init smp_cpus_done(unsigned int max_cpus) diff --git a/arch/sparc/kernel/time_32.c b/arch/sparc/kernel/time_32.c index b61840300101..1060e0672a4b 100644 --- a/arch/sparc/kernel/time_32.c +++ b/arch/sparc/kernel/time_32.c @@ -168,7 +168,7 @@ static int __devinit clock_probe(struct platform_device *op)  	return 0;  } -static struct of_device_id __initdata clock_match[] = { +static struct of_device_id clock_match[] = {  	{  		.name = "eeprom",  	}, diff --git a/arch/sparc/lib/checksum_32.S b/arch/sparc/lib/checksum_32.S index 3632cb34e914..0084c3361e15 100644 --- a/arch/sparc/lib/checksum_32.S +++ b/arch/sparc/lib/checksum_32.S @@ -289,10 +289,16 @@ cc_end_cruft:  	/* Also, handle the alignment code out of band. */  cc_dword_align: -	cmp	%g1, 6 -	bl,a	ccte +	cmp	%g1, 16 +	bge	1f +	 srl	%g1, 1, %o3 +2:	cmp	%o3, 0 +	be,a	ccte  	 andcc	%g1, 0xf, %o3 -	andcc	%o0, 0x1, %g0 +	andcc	%o3, %o0, %g0	! Check %o0 only (%o1 has the same last 2 bits) +	be,a	2b +	 srl	%o3, 1, %o3 +1:	andcc	%o0, 0x1, %g0  	bne	ccslow  	 andcc	%o0, 0x2, %g0  	be	1f  | 
