|
@@ -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 {
|