Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/*
2 * Xtensa hardware breakpoints/watchpoints handling functions
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 *
8 * Copyright (C) 2016 Cadence Design Systems Inc.
9 */
10
11#ifndef __ASM_XTENSA_HW_BREAKPOINT_H
12#define __ASM_XTENSA_HW_BREAKPOINT_H
13
14#ifdef CONFIG_HAVE_HW_BREAKPOINT
15
16#include <linux/kdebug.h>
17#include <linux/types.h>
18#include <uapi/linux/hw_breakpoint.h>
19
20/* Breakpoint */
21#define XTENSA_BREAKPOINT_EXECUTE 0
22
23/* Watchpoints */
24#define XTENSA_BREAKPOINT_LOAD 1
25#define XTENSA_BREAKPOINT_STORE 2
26
27struct arch_hw_breakpoint {
28 unsigned long address;
29 u16 len;
30 u16 type;
31};
32
33struct perf_event;
34struct pt_regs;
35struct task_struct;
36
37int hw_breakpoint_slots(int type);
38int arch_check_bp_in_kernelspace(struct perf_event *bp);
39int arch_validate_hwbkpt_settings(struct perf_event *bp);
40int hw_breakpoint_exceptions_notify(struct notifier_block *unused,
41 unsigned long val, void *data);
42
43int arch_install_hw_breakpoint(struct perf_event *bp);
44void arch_uninstall_hw_breakpoint(struct perf_event *bp);
45void hw_breakpoint_pmu_read(struct perf_event *bp);
46int check_hw_breakpoint(struct pt_regs *regs);
47void clear_ptrace_hw_breakpoint(struct task_struct *tsk);
48
49#else
50
51struct task_struct;
52
53static inline void clear_ptrace_hw_breakpoint(struct task_struct *tsk)
54{
55}
56
57#endif /* CONFIG_HAVE_HW_BREAKPOINT */
58#endif /* __ASM_XTENSA_HW_BREAKPOINT_H */