aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-29 11:29:30 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-29 11:29:30 -0500
commit547598d3a91f11b1f802bf0b122f777c3c22f26d (patch)
treeb2177817268babf6755e151b6e3c5d385d1748a7 /arch
parent5ad587283cc15f71bb0e9cb9e0933dd8ebd66e1c (diff)
parentbe71716e464f4ea38f08034dc666f2feb55535d9 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6: [SPARC64]: Adjust kernel PC validation test in fault handler. [SPARC64]: Loosen checks in exception table handling. [SPARC64]: Fix section mismatch from kernel_map_range [SPARC64]: Fix section mismatchs from dr_cpu_data [SPARC]: Fix build in arch/sparc/kernel/led.c
Diffstat (limited to 'arch')
-rw-r--r--arch/sparc/kernel/led.c3
-rw-r--r--arch/sparc64/kernel/ds.c14
-rw-r--r--arch/sparc64/kernel/mdesc.c2
-rw-r--r--arch/sparc64/mm/fault.c14
-rw-r--r--arch/sparc64/mm/init.c3
5 files changed, 16 insertions, 20 deletions
diff --git a/arch/sparc/kernel/led.c b/arch/sparc/kernel/led.c
index 313d1620ae8e..59e9344e7a0d 100644
--- a/arch/sparc/kernel/led.c
+++ b/arch/sparc/kernel/led.c
@@ -3,6 +3,9 @@
3#include <linux/init.h> 3#include <linux/init.h>
4#include <linux/proc_fs.h> 4#include <linux/proc_fs.h>
5#include <linux/string.h> 5#include <linux/string.h>
6#include <linux/jiffies.h>
7#include <linux/timer.h>
8#include <linux/uaccess.h>
6 9
7#include <asm/auxio.h> 10#include <asm/auxio.h>
8 11
diff --git a/arch/sparc64/kernel/ds.c b/arch/sparc64/kernel/ds.c
index eeb5a2fc788d..bd76482077be 100644
--- a/arch/sparc64/kernel/ds.c
+++ b/arch/sparc64/kernel/ds.c
@@ -525,10 +525,10 @@ static void dr_cpu_mark(struct ds_data *resp, int cpu, int ncpus,
525 } 525 }
526} 526}
527 527
528static int dr_cpu_configure(struct ds_info *dp, 528static int __cpuinit dr_cpu_configure(struct ds_info *dp,
529 struct ds_cap_state *cp, 529 struct ds_cap_state *cp,
530 u64 req_num, 530 u64 req_num,
531 cpumask_t *mask) 531 cpumask_t *mask)
532{ 532{
533 struct ds_data *resp; 533 struct ds_data *resp;
534 int resp_len, ncpus, cpu; 534 int resp_len, ncpus, cpu;
@@ -623,9 +623,9 @@ static int dr_cpu_unconfigure(struct ds_info *dp,
623 return 0; 623 return 0;
624} 624}
625 625
626static void dr_cpu_data(struct ds_info *dp, 626static void __cpuinit dr_cpu_data(struct ds_info *dp,
627 struct ds_cap_state *cp, 627 struct ds_cap_state *cp,
628 void *buf, int len) 628 void *buf, int len)
629{ 629{
630 struct ds_data *data = buf; 630 struct ds_data *data = buf;
631 struct dr_cpu_tag *tag = (struct dr_cpu_tag *) (data + 1); 631 struct dr_cpu_tag *tag = (struct dr_cpu_tag *) (data + 1);
diff --git a/arch/sparc64/kernel/mdesc.c b/arch/sparc64/kernel/mdesc.c
index 856659bb1311..910083589569 100644
--- a/arch/sparc64/kernel/mdesc.c
+++ b/arch/sparc64/kernel/mdesc.c
@@ -758,7 +758,7 @@ static void __devinit get_mondo_data(struct mdesc_handle *hp, u64 mp,
758 get_one_mondo_bits(val, &tb->nonresum_qmask, 2); 758 get_one_mondo_bits(val, &tb->nonresum_qmask, 2);
759} 759}
760 760
761void __devinit mdesc_fill_in_cpu_data(cpumask_t mask) 761void __cpuinit mdesc_fill_in_cpu_data(cpumask_t mask)
762{ 762{
763 struct mdesc_handle *hp = mdesc_grab(); 763 struct mdesc_handle *hp = mdesc_grab();
764 u64 mp; 764 u64 mp;
diff --git a/arch/sparc64/mm/fault.c b/arch/sparc64/mm/fault.c
index e2027f27c0fe..2650d0d33ac2 100644
--- a/arch/sparc64/mm/fault.c
+++ b/arch/sparc64/mm/fault.c
@@ -244,16 +244,8 @@ static void do_kernel_fault(struct pt_regs *regs, int si_code, int fault_code,
244 if (regs->tstate & TSTATE_PRIV) { 244 if (regs->tstate & TSTATE_PRIV) {
245 const struct exception_table_entry *entry; 245 const struct exception_table_entry *entry;
246 246
247 if (asi == ASI_P && (insn & 0xc0800000) == 0xc0800000) { 247 entry = search_exception_tables(regs->tpc);
248 if (insn & 0x2000) 248 if (entry) {
249 asi = (regs->tstate >> 24);
250 else
251 asi = (insn >> 5);
252 }
253
254 /* Look in asi.h: All _S asis have LS bit set */
255 if ((asi & 0x1) &&
256 (entry = search_exception_tables(regs->tpc))) {
257 regs->tpc = entry->fixup; 249 regs->tpc = entry->fixup;
258 regs->tnpc = regs->tpc + 4; 250 regs->tnpc = regs->tpc + 4;
259 return; 251 return;
@@ -294,7 +286,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
294 unsigned long tpc = regs->tpc; 286 unsigned long tpc = regs->tpc;
295 287
296 /* Sanity check the PC. */ 288 /* Sanity check the PC. */
297 if ((tpc >= KERNBASE && tpc < (unsigned long) _etext) || 289 if ((tpc >= KERNBASE && tpc < (unsigned long) __init_end) ||
298 (tpc >= MODULES_VADDR && tpc < MODULES_END)) { 290 (tpc >= MODULES_VADDR && tpc < MODULES_END)) {
299 /* Valid, no problems... */ 291 /* Valid, no problems... */
300 } else { 292 } else {
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c
index 9e6bca266d88..b5c30416fdac 100644
--- a/arch/sparc64/mm/init.c
+++ b/arch/sparc64/mm/init.c
@@ -1010,7 +1010,8 @@ static struct linux_prom64_registers pall[MAX_BANKS] __initdata;
1010static int pall_ents __initdata; 1010static int pall_ents __initdata;
1011 1011
1012#ifdef CONFIG_DEBUG_PAGEALLOC 1012#ifdef CONFIG_DEBUG_PAGEALLOC
1013static unsigned long kernel_map_range(unsigned long pstart, unsigned long pend, pgprot_t prot) 1013static unsigned long __ref kernel_map_range(unsigned long pstart,
1014 unsigned long pend, pgprot_t prot)
1014{ 1015{
1015 unsigned long vstart = PAGE_OFFSET + pstart; 1016 unsigned long vstart = PAGE_OFFSET + pstart;
1016 unsigned long vend = PAGE_OFFSET + pend; 1017 unsigned long vend = PAGE_OFFSET + pend;