Commit | Line | Data |
---|---|---|
b59ff9d5 AC |
1 | /* Register groupings for GDB, the GNU debugger. |
2 | ||
61baf725 | 3 | Copyright (C) 2002-2017 Free Software Foundation, Inc. |
b59ff9d5 AC |
4 | |
5 | Contributed by Red Hat. | |
6 | ||
7 | This file is part of GDB. | |
8 | ||
9 | This program is free software; you can redistribute it and/or modify | |
10 | it under the terms of the GNU General Public License as published by | |
a9762ec7 | 11 | the Free Software Foundation; either version 3 of the License, or |
b59ff9d5 AC |
12 | (at your option) any later version. |
13 | ||
14 | This program is distributed in the hope that it will be useful, | |
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | GNU General Public License for more details. | |
18 | ||
19 | You should have received a copy of the GNU General Public License | |
a9762ec7 | 20 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
b59ff9d5 AC |
21 | |
22 | #ifndef REGGROUPS_H | |
23 | #define REGGROUPS_H | |
24 | ||
25 | struct gdbarch; | |
26 | struct reggroup; | |
27 | ||
28 | enum reggroup_type { USER_REGGROUP, INTERNAL_REGGROUP }; | |
29 | ||
30 | /* Pre-defined, user visible, register groups. */ | |
31 | extern struct reggroup *const general_reggroup; | |
32 | extern struct reggroup *const float_reggroup; | |
33 | extern struct reggroup *const system_reggroup; | |
34 | extern struct reggroup *const vector_reggroup; | |
35 | extern struct reggroup *const all_reggroup; | |
36 | ||
37 | /* Pre-defined, internal, register groups. */ | |
38 | extern struct reggroup *const save_reggroup; | |
39 | extern struct reggroup *const restore_reggroup; | |
40 | ||
41 | /* Create a new local register group. */ | |
42 | extern struct reggroup *reggroup_new (const char *name, | |
43 | enum reggroup_type type); | |
44 | ||
45 | /* Add a register group (with attribute values) to the pre-defined list. */ | |
46 | extern void reggroup_add (struct gdbarch *gdbarch, struct reggroup *group); | |
47 | ||
48 | /* Register group attributes. */ | |
49 | extern const char *reggroup_name (struct reggroup *reggroup); | |
50 | extern enum reggroup_type reggroup_type (struct reggroup *reggroup); | |
51 | ||
55b40027 AB |
52 | /* Iterators for the architecture's register groups. Pass in NULL, returns |
53 | the first (for next), or last (for prev) group. Pass in a group, | |
54 | returns the next or previous group, or NULL when either the end or the | |
55 | beginning of the group list is reached. */ | |
6c7d17ba AC |
56 | extern struct reggroup *reggroup_next (struct gdbarch *gdbarch, |
57 | struct reggroup *last); | |
55b40027 AB |
58 | extern struct reggroup *reggroup_prev (struct gdbarch *gdbarch, |
59 | struct reggroup *curr); | |
b59ff9d5 AC |
60 | |
61 | /* Is REGNUM a member of REGGROUP? */ | |
62 | extern int default_register_reggroup_p (struct gdbarch *gdbarch, int regnum, | |
63 | struct reggroup *reggroup); | |
64 | ||
65 | #endif |