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 @@ | |||
5 | #else | 5 | #else |
6 | #include <asm/io_32.h> | 6 | #include <asm/io_32.h> |
7 | #endif | 7 | #endif |
8 | |||
9 | /* | ||
10 | * Defines used for both SPARC32 and SPARC64 | ||
11 | */ | ||
12 | |||
13 | /* Big endian versions of memory read/write routines */ | ||
14 | #define readb_be(__addr) __raw_readb(__addr) | ||
15 | #define readw_be(__addr) __raw_readw(__addr) | ||
16 | #define readl_be(__addr) __raw_readl(__addr) | ||
17 | #define writeb_be(__b, __addr) __raw_writeb(__b, __addr) | ||
18 | #define writel_be(__w, __addr) __raw_writel(__w, __addr) | ||
19 | #define writew_be(__l, __addr) __raw_writew(__l, __addr) | ||
20 | |||
8 | #endif | 21 | #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) | |||
165 | return 0; | 165 | return 0; |
166 | } | 166 | } |
167 | 167 | ||
168 | static struct of_device_id __initdata apc_match[] = { | 168 | static struct of_device_id apc_match[] = { |
169 | { | 169 | { |
170 | .name = APC_OBPNAME, | 170 | .name = APC_OBPNAME, |
171 | }, | 171 | }, |
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) | |||
69 | return 0; | 69 | return 0; |
70 | } | 70 | } |
71 | 71 | ||
72 | static struct of_device_id __initdata pmc_match[] = { | 72 | static struct of_device_id pmc_match[] = { |
73 | { | 73 | { |
74 | .name = PMC_OBPNAME, | 74 | .name = PMC_OBPNAME, |
75 | }, | 75 | }, |
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; | |||
51 | void __cpuinit smp_store_cpu_info(int id) | 51 | void __cpuinit smp_store_cpu_info(int id) |
52 | { | 52 | { |
53 | int cpu_node; | 53 | int cpu_node; |
54 | int mid; | ||
54 | 55 | ||
55 | cpu_data(id).udelay_val = loops_per_jiffy; | 56 | cpu_data(id).udelay_val = loops_per_jiffy; |
56 | 57 | ||
@@ -58,10 +59,13 @@ void __cpuinit smp_store_cpu_info(int id) | |||
58 | cpu_data(id).clock_tick = prom_getintdefault(cpu_node, | 59 | cpu_data(id).clock_tick = prom_getintdefault(cpu_node, |
59 | "clock-frequency", 0); | 60 | "clock-frequency", 0); |
60 | cpu_data(id).prom_node = cpu_node; | 61 | cpu_data(id).prom_node = cpu_node; |
61 | cpu_data(id).mid = cpu_get_hwmid(cpu_node); | 62 | mid = cpu_get_hwmid(cpu_node); |
62 | 63 | ||
63 | if (cpu_data(id).mid < 0) | 64 | if (mid < 0) { |
64 | panic("No MID found for CPU%d at node 0x%08d", id, cpu_node); | 65 | printk(KERN_NOTICE "No MID found for CPU%d at node 0x%08d", id, cpu_node); |
66 | mid = 0; | ||
67 | } | ||
68 | cpu_data(id).mid = mid; | ||
65 | } | 69 | } |
66 | 70 | ||
67 | void __init smp_cpus_done(unsigned int max_cpus) | 71 | 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) | |||
168 | return 0; | 168 | return 0; |
169 | } | 169 | } |
170 | 170 | ||
171 | static struct of_device_id __initdata clock_match[] = { | 171 | static struct of_device_id clock_match[] = { |
172 | { | 172 | { |
173 | .name = "eeprom", | 173 | .name = "eeprom", |
174 | }, | 174 | }, |
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: | |||
289 | 289 | ||
290 | /* Also, handle the alignment code out of band. */ | 290 | /* Also, handle the alignment code out of band. */ |
291 | cc_dword_align: | 291 | cc_dword_align: |
292 | cmp %g1, 6 | 292 | cmp %g1, 16 |
293 | bl,a ccte | 293 | bge 1f |
294 | srl %g1, 1, %o3 | ||
295 | 2: cmp %o3, 0 | ||
296 | be,a ccte | ||
294 | andcc %g1, 0xf, %o3 | 297 | andcc %g1, 0xf, %o3 |
295 | andcc %o0, 0x1, %g0 | 298 | andcc %o3, %o0, %g0 ! Check %o0 only (%o1 has the same last 2 bits) |
299 | be,a 2b | ||
300 | srl %o3, 1, %o3 | ||
301 | 1: andcc %o0, 0x1, %g0 | ||
296 | bne ccslow | 302 | bne ccslow |
297 | andcc %o0, 0x2, %g0 | 303 | andcc %o0, 0x2, %g0 |
298 | be 1f | 304 | be 1f |