Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/xtensa/include/asm/hw_breakpoint.h
26442 views
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
27
struct arch_hw_breakpoint {
28
unsigned long address;
29
u16 len;
30
u16 type;
31
};
32
33
struct perf_event_attr;
34
struct perf_event;
35
struct pt_regs;
36
struct task_struct;
37
38
int hw_breakpoint_slots(int type);
39
int arch_check_bp_in_kernelspace(struct arch_hw_breakpoint *hw);
40
int hw_breakpoint_arch_parse(struct perf_event *bp,
41
const struct perf_event_attr *attr,
42
struct arch_hw_breakpoint *hw);
43
int hw_breakpoint_exceptions_notify(struct notifier_block *unused,
44
unsigned long val, void *data);
45
46
int arch_install_hw_breakpoint(struct perf_event *bp);
47
void arch_uninstall_hw_breakpoint(struct perf_event *bp);
48
void hw_breakpoint_pmu_read(struct perf_event *bp);
49
int check_hw_breakpoint(struct pt_regs *regs);
50
void clear_ptrace_hw_breakpoint(struct task_struct *tsk);
51
void restore_dbreak(void);
52
53
#else
54
55
struct task_struct;
56
57
static inline void clear_ptrace_hw_breakpoint(struct task_struct *tsk)
58
{
59
}
60
61
#endif /* CONFIG_HAVE_HW_BREAKPOINT */
62
#endif /* __ASM_XTENSA_HW_BREAKPOINT_H */
63
64