MIPS: kprobe: Add support.
This patch is based on previous work by Sony and Himanshu Chauhan. I have done some cleanup and implemented JProbes and KRETPROBES. The KRETPROBES part is pretty much copied verbatim from powerpc. A possible future enhance might be to factor out the common code. Signed-off-by: David Daney <ddaney@caviumnetworks.com> Cc: Himanshu Chauhan <hschauhan@nulltrace.org> To: linux-mips@linux-mips.org To: ananth@in.ibm.com, To: anil.s.keshavamurthy@intel.com To: davem@davemloft.net To: masami.hiramatsu.pt@hitachi.com Cc: linux-kernel@vger.kernel.org Patchwork: https://patchwork.linux-mips.org/patch/1525/ Patchwork: https://patchwork.linux-mips.org/patch/1530/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:

committed by
Ralf Baechle

parent
2ea6399f55
commit
c1bf207d6e
@@ -25,6 +25,7 @@
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/kgdb.h>
|
||||
#include <linux/kdebug.h>
|
||||
#include <linux/kprobes.h>
|
||||
#include <linux/notifier.h>
|
||||
#include <linux/kdb.h>
|
||||
|
||||
@@ -334,7 +335,7 @@ void show_regs(struct pt_regs *regs)
|
||||
__show_regs((struct pt_regs *)regs);
|
||||
}
|
||||
|
||||
void show_registers(const struct pt_regs *regs)
|
||||
void show_registers(struct pt_regs *regs)
|
||||
{
|
||||
const int field = 2 * sizeof(unsigned long);
|
||||
|
||||
@@ -783,6 +784,25 @@ asmlinkage void do_bp(struct pt_regs *regs)
|
||||
if (bcode >= (1 << 10))
|
||||
bcode >>= 10;
|
||||
|
||||
/*
|
||||
* notify the kprobe handlers, if instruction is likely to
|
||||
* pertain to them.
|
||||
*/
|
||||
switch (bcode) {
|
||||
case BRK_KPROBE_BP:
|
||||
if (notify_die(DIE_BREAK, "debug", regs, bcode, 0, 0) == NOTIFY_STOP)
|
||||
return;
|
||||
else
|
||||
break;
|
||||
case BRK_KPROBE_SSTEPBP:
|
||||
if (notify_die(DIE_SSTEPBP, "single_step", regs, bcode, 0, 0) == NOTIFY_STOP)
|
||||
return;
|
||||
else
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
do_trap_or_bp(regs, bcode, "Break");
|
||||
return;
|
||||
|
||||
|
Reference in New Issue
Block a user