* alpha-tdep.c (alpha_register_reggroup_p): Zero is only
authorRichard Henderson <rth@redhat.com>
Mon, 2 Jun 2003 22:54:01 +0000 (22:54 +0000)
committerRichard Henderson <rth@redhat.com>
Mon, 2 Jun 2003 22:54:01 +0000 (22:54 +0000)
        a member of all_reggroup.

gdb/ChangeLog
gdb/alpha-tdep.c

index 21326c2..fbd301d 100644 (file)
@@ -1,5 +1,10 @@
 2003-06-02  Richard Henderson  <rth@redhat.com>
 
+       * alpha-tdep.c (alpha_register_reggroup_p): Zero is only
+       a member of all_reggroup.
+
+2003-06-02  Richard Henderson  <rth@redhat.com>
+
        * alpha-tdep.c (alpha_register_type): Change from _virtual_type.
        (alpha_convert_flt_dbl, alpha_convert_dbl_flt): Remove.
        (alpha_lds, alpha_sts): New.
index 6d9c58d..da514bf 100644 (file)
@@ -107,10 +107,18 @@ alpha_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
   if (REGISTER_NAME (regnum) == NULL || *REGISTER_NAME (regnum) == '\0')
     return 0;
 
-  /* Since we implement no pseudo registers, save/restore is equal to all. */
-  if (group == all_reggroup
-      || group == save_reggroup
-      || group == restore_reggroup)
+  if (group == all_reggroup)
+    return 1;
+
+  /* Zero should not be saved or restored.  Technically it is a general
+     register (just as $f31 would be a float if we represented it), but
+     there's no point displaying it during "info regs", so leave it out
+     of all groups except for "all".  */
+  if (regnum == ALPHA_ZERO_REGNUM)
+    return 0;
+
+  /* All other registers are saved and restored.  */
+  if (group == save_reggroup || group == restore_reggroup)
     return 1;
 
   /* All other groups are non-overlapping.  */