|
@@ -66,6 +66,7 @@ extern int hw_breakpoint_exceptions_notify(struct notifier_block *unused,
|
|
unsigned long val, void *data);
|
|
unsigned long val, void *data);
|
|
int arch_install_hw_breakpoint(struct perf_event *bp);
|
|
int arch_install_hw_breakpoint(struct perf_event *bp);
|
|
void arch_uninstall_hw_breakpoint(struct perf_event *bp);
|
|
void arch_uninstall_hw_breakpoint(struct perf_event *bp);
|
|
|
|
+void arch_unregister_hw_breakpoint(struct perf_event *bp);
|
|
void hw_breakpoint_pmu_read(struct perf_event *bp);
|
|
void hw_breakpoint_pmu_read(struct perf_event *bp);
|
|
extern void flush_ptrace_hw_breakpoint(struct task_struct *tsk);
|
|
extern void flush_ptrace_hw_breakpoint(struct task_struct *tsk);
|
|
|
|
|
|
@@ -82,6 +83,7 @@ static inline void hw_breakpoint_disable(void)
|
|
__set_breakpoint(&brk);
|
|
__set_breakpoint(&brk);
|
|
}
|
|
}
|
|
extern void thread_change_pc(struct task_struct *tsk, struct pt_regs *regs);
|
|
extern void thread_change_pc(struct task_struct *tsk, struct pt_regs *regs);
|
|
|
|
+int hw_breakpoint_handler(struct die_args *args);
|
|
|
|
|
|
#else /* CONFIG_HAVE_HW_BREAKPOINT */
|
|
#else /* CONFIG_HAVE_HW_BREAKPOINT */
|
|
static inline void hw_breakpoint_disable(void) { }
|
|
static inline void hw_breakpoint_disable(void) { }
|