]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/asm-arm/kprobes.h
ftrace: fix include file dependency
[linux-2.6-omap-h63xx.git] / include / asm-arm / kprobes.h
index 951322328793e13613b771dc507bd9032a7c2b19..c042194d3ab55fc19be196d9db37640d260f224b 100644 (file)
 
 #include <linux/types.h>
 #include <linux/ptrace.h>
+#include <linux/percpu.h>
+
+#define __ARCH_WANT_KPROBES_INSN_SLOT
+#define MAX_INSN_SIZE                  2
+#define MAX_STACK_SIZE                 64      /* 32 would probably be OK */
+
+/*
+ * This undefined instruction must be unique and
+ * reserved solely for kprobes' use.
+ */
+#define KPROBE_BREAKPOINT_INSTRUCTION  0xe7f001f8
+
+#define regs_return_value(regs)                ((regs)->ARM_r0)
+#define flush_insn_slot(p)             do { } while (0)
+#define kretprobe_blacklist_size       0
 
 typedef u32 kprobe_opcode_t;
 
@@ -30,6 +45,26 @@ struct arch_specific_insn {
        kprobe_insn_handler_t   *insn_handler;
 };
 
+struct prev_kprobe {
+       struct kprobe *kp;
+       unsigned int status;
+};
+
+/* per-cpu kprobe control block */
+struct kprobe_ctlblk {
+       unsigned int kprobe_status;
+       struct prev_kprobe prev_kprobe;
+       struct pt_regs jprobe_saved_regs;
+       char jprobes_stack[MAX_STACK_SIZE];
+};
+
+void arch_remove_kprobe(struct kprobe *);
+
+int kprobe_trap_handler(struct pt_regs *regs, unsigned int instr);
+int kprobe_fault_handler(struct pt_regs *regs, unsigned int fsr);
+int kprobe_exceptions_notify(struct notifier_block *self,
+                            unsigned long val, void *data);
+
 enum kprobe_insn {
        INSN_REJECTED,
        INSN_GOOD,