|
@@ -117,7 +117,7 @@ static int die_owner = -1;
|
|
|
static unsigned int die_nest_count;
|
|
|
static int die_counter;
|
|
|
|
|
|
-static unsigned __kprobes long oops_begin(struct pt_regs *regs)
|
|
|
+static unsigned long oops_begin(struct pt_regs *regs)
|
|
|
{
|
|
|
int cpu;
|
|
|
unsigned long flags;
|
|
@@ -144,8 +144,9 @@ static unsigned __kprobes long oops_begin(struct pt_regs *regs)
|
|
|
pmac_backlight_unblank();
|
|
|
return flags;
|
|
|
}
|
|
|
+NOKPROBE_SYMBOL(oops_begin);
|
|
|
|
|
|
-static void __kprobes oops_end(unsigned long flags, struct pt_regs *regs,
|
|
|
+static void oops_end(unsigned long flags, struct pt_regs *regs,
|
|
|
int signr)
|
|
|
{
|
|
|
bust_spinlocks(0);
|
|
@@ -196,8 +197,9 @@ static void __kprobes oops_end(unsigned long flags, struct pt_regs *regs,
|
|
|
panic("Fatal exception");
|
|
|
do_exit(signr);
|
|
|
}
|
|
|
+NOKPROBE_SYMBOL(oops_end);
|
|
|
|
|
|
-static int __kprobes __die(const char *str, struct pt_regs *regs, long err)
|
|
|
+static int __die(const char *str, struct pt_regs *regs, long err)
|
|
|
{
|
|
|
printk("Oops: %s, sig: %ld [#%d]\n", str, err, ++die_counter);
|
|
|
#ifdef CONFIG_PREEMPT
|
|
@@ -221,6 +223,7 @@ static int __kprobes __die(const char *str, struct pt_regs *regs, long err)
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
+NOKPROBE_SYMBOL(__die);
|
|
|
|
|
|
void die(const char *str, struct pt_regs *regs, long err)
|
|
|
{
|
|
@@ -802,7 +805,7 @@ void RunModeException(struct pt_regs *regs)
|
|
|
_exception(SIGTRAP, regs, 0, 0);
|
|
|
}
|
|
|
|
|
|
-void __kprobes single_step_exception(struct pt_regs *regs)
|
|
|
+void single_step_exception(struct pt_regs *regs)
|
|
|
{
|
|
|
enum ctx_state prev_state = exception_enter();
|
|
|
|
|
@@ -819,6 +822,7 @@ void __kprobes single_step_exception(struct pt_regs *regs)
|
|
|
bail:
|
|
|
exception_exit(prev_state);
|
|
|
}
|
|
|
+NOKPROBE_SYMBOL(single_step_exception);
|
|
|
|
|
|
/*
|
|
|
* After we have successfully emulated an instruction, we have to
|
|
@@ -1140,7 +1144,7 @@ static int emulate_math(struct pt_regs *regs)
|
|
|
static inline int emulate_math(struct pt_regs *regs) { return -1; }
|
|
|
#endif
|
|
|
|
|
|
-void __kprobes program_check_exception(struct pt_regs *regs)
|
|
|
+void program_check_exception(struct pt_regs *regs)
|
|
|
{
|
|
|
enum ctx_state prev_state = exception_enter();
|
|
|
unsigned int reason = get_reason(regs);
|
|
@@ -1260,16 +1264,18 @@ sigill:
|
|
|
bail:
|
|
|
exception_exit(prev_state);
|
|
|
}
|
|
|
+NOKPROBE_SYMBOL(program_check_exception);
|
|
|
|
|
|
/*
|
|
|
* This occurs when running in hypervisor mode on POWER6 or later
|
|
|
* and an illegal instruction is encountered.
|
|
|
*/
|
|
|
-void __kprobes emulation_assist_interrupt(struct pt_regs *regs)
|
|
|
+void emulation_assist_interrupt(struct pt_regs *regs)
|
|
|
{
|
|
|
regs->msr |= REASON_ILLEGAL;
|
|
|
program_check_exception(regs);
|
|
|
}
|
|
|
+NOKPROBE_SYMBOL(emulation_assist_interrupt);
|
|
|
|
|
|
void alignment_exception(struct pt_regs *regs)
|
|
|
{
|
|
@@ -1668,7 +1674,7 @@ static void handle_debug(struct pt_regs *regs, unsigned long debug_status)
|
|
|
mtspr(SPRN_DBCR0, current->thread.debug.dbcr0);
|
|
|
}
|
|
|
|
|
|
-void __kprobes DebugException(struct pt_regs *regs, unsigned long debug_status)
|
|
|
+void DebugException(struct pt_regs *regs, unsigned long debug_status)
|
|
|
{
|
|
|
current->thread.debug.dbsr = debug_status;
|
|
|
|
|
@@ -1729,6 +1735,7 @@ void __kprobes DebugException(struct pt_regs *regs, unsigned long debug_status)
|
|
|
} else
|
|
|
handle_debug(regs, debug_status);
|
|
|
}
|
|
|
+NOKPROBE_SYMBOL(DebugException);
|
|
|
#endif /* CONFIG_PPC_ADV_DEBUG_REGS */
|
|
|
|
|
|
#if !defined(CONFIG_TAU_INT)
|