aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2003-06-02 22:54:01 +0000
committerRichard Henderson <rth@redhat.com>2003-06-02 22:54:01 +0000
commitdf4a182bcbee1af06d242548a6fcce6e1609b74f (patch)
tree9bb56597ed401bc7afa3b527cb24a5dcecc932e7 /gdb
parented7d5d1a43104f2ed6e83c99fe9858fe335cf186 (diff)
downloadgdb-df4a182bcbee1af06d242548a6fcce6e1609b74f.zip
gdb-df4a182bcbee1af06d242548a6fcce6e1609b74f.tar.gz
gdb-df4a182bcbee1af06d242548a6fcce6e1609b74f.tar.bz2
* alpha-tdep.c (alpha_register_reggroup_p): Zero is only
a member of all_reggroup.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/alpha-tdep.c16
2 files changed, 17 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 21326c2..fbd301d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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.
diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c
index 6d9c58d..da514bf 100644
--- a/gdb/alpha-tdep.c
+++ b/gdb/alpha-tdep.c
@@ -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. */