master
h 44 lines 1.14 KB
Raw
1 /*
2 * QEMU breakpoint & watchpoint definitions
3 *
4 * Copyright (c) 2012 SUSE LINUX Products GmbH
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8 #ifndef EXEC_BREAKPOINT_H
9 #define EXEC_BREAKPOINT_H
10
11 #include "qemu/queue.h"
12 #include "exec/vaddr.h"
13 #include "exec/memattrs.h"
14
15 /* Breakpoint/watchpoint flags */
16 #define BP_MEM_READ 0x01
17 #define BP_MEM_WRITE 0x02
18 #define BP_MEM_ACCESS (BP_MEM_READ | BP_MEM_WRITE)
19 #define BP_STOP_BEFORE_ACCESS 0x04
20 /* 0x08 currently unused */
21 #define BP_GDB 0x10
22 #define BP_CPU 0x20
23 #define BP_ANY (BP_GDB | BP_CPU)
24 #define BP_HIT_SHIFT 6
25 #define BP_WATCHPOINT_HIT_READ (BP_MEM_READ << BP_HIT_SHIFT)
26 #define BP_WATCHPOINT_HIT_WRITE (BP_MEM_WRITE << BP_HIT_SHIFT)
27 #define BP_WATCHPOINT_HIT (BP_MEM_ACCESS << BP_HIT_SHIFT)
28
29 typedef struct CPUBreakpoint {
30 vaddr pc;
31 int flags; /* BP_* */
32 QTAILQ_ENTRY(CPUBreakpoint) entry;
33 } CPUBreakpoint;
34
35 typedef struct CPUWatchpoint {
36 vaddr vaddr;
37 vaddr len;
38 vaddr hitaddr;
39 MemTxAttrs hitattrs;
40 int flags; /* BP_* */
41 QTAILQ_ENTRY(CPUWatchpoint) entry;
42 } CPUWatchpoint;
43
44 #endif