diff options
author | Christoph Lameter <clameter@sgi.com> | 2008-03-03 14:18:08 -0500 |
---|---|---|
committer | Christoph Lameter <clameter@sgi.com> | 2008-03-03 14:18:08 -0500 |
commit | 27710bf6febe8323f78bceca002ca7d71e5012a7 (patch) | |
tree | 80a72f385ea28f9f7649363fe5147b3da37f9950 /arch/sparc64/mm/fault.c | |
parent | 9ef64cb4320df821638b508f79aa8b858cca99f0 (diff) | |
parent | cad226b8a71f969ad05137e43b48c9e6059a0b9f (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'arch/sparc64/mm/fault.c')
-rw-r--r-- | arch/sparc64/mm/fault.c | 14 |
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, | |||
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 { |