summaryrefslogtreecommitdiff
path: root/arch/sparc64/mm/fault.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-29 08:29:30 -0800
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-29 08:29:30 -0800
commit547598d3a91f11b1f802bf0b122f777c3c22f26d (patch)
treeb2177817268babf6755e151b6e3c5d385d1748a7 /arch/sparc64/mm/fault.c
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/sparc64/mm/fault.c')
-rw-r--r--arch/sparc64/mm/fault.c14
1 files changed, 3 insertions, 11 deletions
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,
if (regs->tstate & TSTATE_PRIV) {
const struct exception_table_entry *entry;
- if (asi == ASI_P && (insn & 0xc0800000) == 0xc0800000) {
- if (insn & 0x2000)
- asi = (regs->tstate >> 24);
- else
- asi = (insn >> 5);
- }
-
- /* Look in asi.h: All _S asis have LS bit set */
- if ((asi & 0x1) &&
- (entry = search_exception_tables(regs->tpc))) {
+ entry = search_exception_tables(regs->tpc);
+ if (entry) {
regs->tpc = entry->fixup;
regs->tnpc = regs->tpc + 4;
return;
@@ -294,7 +286,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
unsigned long tpc = regs->tpc;
/* Sanity check the PC. */
- if ((tpc >= KERNBASE && tpc < (unsigned long) _etext) ||
+ if ((tpc >= KERNBASE && tpc < (unsigned long) __init_end) ||
(tpc >= MODULES_VADDR && tpc < MODULES_END)) {
/* Valid, no problems... */
} else {