packaging: Add python3-base dependency
[platform/upstream/gdb.git] / sim / common / sim-watch.h
1 /* Simulator watchpoint support.
2    Copyright (C) 1997-2023 Free Software Foundation, Inc.
3    Contributed by Cygnus Support.
4
5 This file is part of GDB, the GNU debugger.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20
21 #ifndef SIM_WATCH_H
22 #define SIM_WATCH_H
23
24 typedef enum {
25   invalid_watchpoint = -1,
26   pc_watchpoint,
27   clock_watchpoint,
28   cycles_watchpoint,
29   nr_watchpoint_types,
30 } watchpoint_type;
31
32 typedef struct _sim_watch_point sim_watch_point;
33 struct _sim_watch_point {
34   int ident;
35   watchpoint_type type;
36   int interrupt_nr; /* == nr_interrupts -> breakpoint */
37   int is_periodic;
38   int is_within;
39   unsigned long arg0;
40   unsigned long arg1;
41   sim_event *event;
42   sim_watch_point *next;
43 };
44
45
46 typedef struct _sim_watchpoints {
47
48   /* Pointer into the host's data structures specifying the
49      address/size of the program-counter */
50   /* FIXME: In the future this shall be generalized so that any of the
51      N processors M registers can be watched */
52
53   /* Pointer to the handler for interrupt watchpoints */
54   /* FIXME: can this be done better? */
55   /* NOTE: For the DATA arg, the handler is passed a (char**) pointer
56      that is an offset into the INTERRUPT_NAMES vector.  Use
57      arithmetic to determine the interrupt-nr. */
58   sim_event_handler *interrupt_handler;
59
60   /* Pointer to a null terminated list of interrupt names */
61   /* FIXME: can this be done better?  Look at the PPC's interrupt
62      mechanism and table for a rough idea of where it will go next */
63   int nr_interrupts;
64   const char **interrupt_names;
65
66   /* active watchpoints */
67   int last_point_nr;
68   sim_watch_point *points;
69
70 } sim_watchpoints;
71
72 /* Watch install handler.  */
73 MODULE_INSTALL_FN sim_watchpoint_install;
74
75 #endif /* SIM_WATCH_H */