* 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 21326c274b4b226292ac53a15cc7d08aa126ea52..fbd301dda9ebca62665c3e0dd8d19912b6b11835 100644 (file)
@@ -1,3 +1,8 @@
+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.
index 6d9c58d4e5d22a6999e4cc6a69b5f88635f37e71..da514bf1c1ee74440a6916b0f2ee00f0f6bbeac2 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.  */