summaryrefslogtreecommitdiff
path: root/gdb/reggroups.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/reggroups.c')
-rw-r--r--gdb/reggroups.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/gdb/reggroups.c b/gdb/reggroups.c
index 09b0c930c82..0d815b7dfa1 100644
--- a/gdb/reggroups.c
+++ b/gdb/reggroups.c
@@ -131,6 +131,7 @@ default_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
{
int vector_p;
int float_p;
+ int raw_p;
if (REGISTER_NAME (regnum) == NULL
|| *REGISTER_NAME (regnum) == '\0')
return 0;
@@ -138,12 +139,15 @@ default_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
return 1;
vector_p = TYPE_VECTOR (register_type (gdbarch, regnum));
float_p = TYPE_CODE (register_type (gdbarch, regnum)) == TYPE_CODE_FLT;
+ raw_p = regnum < gdbarch_num_regs (gdbarch);
if (group == float_reggroup)
return float_p;
if (group == vector_reggroup)
return vector_p;
if (group == general_reggroup)
return (!vector_p && !float_p);
+ if (group == save_reggroup || group == restore_reggroup)
+ return raw_p;
return 0;
}
@@ -156,27 +160,22 @@ struct reggroup float_group = { "float" };
struct reggroup system_group = { "system" };
struct reggroup vector_group = { "vector" };
struct reggroup all_group = { "all" };
+struct reggroup save_group = { "save" };
+struct reggroup restore_group = { "restore" };
struct reggroup *const general_reggroup = &general_group;
struct reggroup *const float_reggroup = &float_group;
struct reggroup *const system_reggroup = &system_group;
struct reggroup *const vector_reggroup = &vector_group;
struct reggroup *const all_reggroup = &all_group;
+struct reggroup *const save_reggroup = &save_group;
+struct reggroup *const restore_reggroup = &restore_group;
void
_initialize_reggroup (void)
{
reggroups_data = register_gdbarch_data (reggroups_init, reggroups_free);
-#if 0
- /* The pre-defined groups. */
- general_reggroup = reggroup_new ("general");
- float_reggroup = reggroup_new ("float");
- system_reggroup = reggroup_new ("system");
- vector_reggroup = reggroup_new ("vector");
- all_reggroup = reggroup_new ("all");
-#endif
-
/* The pre-defined list of groups. */
default_groups = reggroups_init (NULL);
add_group (default_groups, general_reggroup);
@@ -184,4 +183,6 @@ _initialize_reggroup (void)
add_group (default_groups, system_reggroup);
add_group (default_groups, vector_reggroup);
add_group (default_groups, all_reggroup);
+ add_group (default_groups, save_reggroup);
+ add_group (default_groups, restore_reggroup);
}