summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@gnu.org>2003-12-27 15:48:34 +0000
committerMark Kettenis <kettenis@gnu.org>2003-12-27 15:48:34 +0000
commitc0523b1f02189cc04649d63039dfdb6b4115c0f9 (patch)
tree5ceb5e31435a6a2701b2bd77af3a6344a51c45b6
parentcbca9d1594ae480a703a2d13c42913b0cc779ed9 (diff)
downloadgdb-c0523b1f02189cc04649d63039dfdb6b4115c0f9.tar.gz
* sparc64nbsd-nat.c (sparc64nbsd_gregset_supplies_p)
(sparc64nbsd_fpregset_supplies_p): New functions. (_initialize_sparcnbsd_nat): Initialize sparc_gregset_supplies_p and sparc_fpregset_supplies_p. * config/sparc/nbsd64.mh (NATDEPFILES): Remove sparc64-nat.o.
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/config/sparc/nbsd64.mh2
-rw-r--r--gdb/sparc64nbsd-nat.c47
3 files changed, 56 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index fd4bd86bc2b..f485ce05200 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,13 @@
2003-12-27 Mark Kettenis <kettenis@gnu.org>
+ * sparc64nbsd-nat.c (sparc64nbsd_gregset_supplies_p)
+ (sparc64nbsd_fpregset_supplies_p): New functions.
+ (_initialize_sparcnbsd_nat): Initialize sparc_gregset_supplies_p
+ and sparc_fpregset_supplies_p.
+ * config/sparc/nbsd64.mh (NATDEPFILES): Remove sparc64-nat.o.
+
+2003-12-27 Mark Kettenis <kettenis@gnu.org>
+
Merge from mainline:
2003-10-31 Jim Blandy <jimb@redhat.com>
diff --git a/gdb/config/sparc/nbsd64.mh b/gdb/config/sparc/nbsd64.mh
index 6c16524a986..e8ac58bda2b 100644
--- a/gdb/config/sparc/nbsd64.mh
+++ b/gdb/config/sparc/nbsd64.mh
@@ -1,4 +1,4 @@
# Host: NetBSD/sparc64
-NATDEPFILES= sparc64nbsd-nat.o sparc64-nat.o sparc-nat.o \
+NATDEPFILES= sparc64nbsd-nat.o sparc-nat.o \
fork-child.o infptrace.o inftarg.o
NAT_FILE= nm-nbsd.h
diff --git a/gdb/sparc64nbsd-nat.c b/gdb/sparc64nbsd-nat.c
index ec324591470..04a4d21e4ad 100644
--- a/gdb/sparc64nbsd-nat.c
+++ b/gdb/sparc64nbsd-nat.c
@@ -79,6 +79,51 @@ sparc64nbsd_collect_fpregset (const struct regcache *regcache,
sparc64_collect_fpregset (regcache, regnum, fpregs);
}
+/* Determine whether `gregset_t' contains register REGNUM. */
+
+static int
+sparc64nbsd_gregset_supplies_p (int regnum)
+{
+ if (gdbarch_ptr_bit (current_gdbarch) == 32)
+ return sparc32_gregset_supplies_p (regnum);
+
+ /* Integer registers. */
+ if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_G7_REGNUM)
+ || (regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM)
+ || (regnum >= SPARC_L0_REGNUM && regnum <= SPARC_L7_REGNUM)
+ || (regnum >= SPARC_I0_REGNUM && regnum <= SPARC_I7_REGNUM))
+ return 1;
+
+ /* Control registers. */
+ if (regnum == SPARC64_PC_REGNUM
+ || regnum == SPARC64_NPC_REGNUM
+ || regnum == SPARC64_STATE_REGNUM
+ || regnum == SPARC64_Y_REGNUM)
+ return 1;
+
+ return 0;
+}
+
+/* Determine whether `fpregset_t' contains register REGNUM. */
+
+static int
+sparc64nbsd_fpregset_supplies_p (int regnum)
+{
+ if (gdbarch_ptr_bit (current_gdbarch) == 32)
+ return sparc32_fpregset_supplies_p (regnum);
+
+ /* Floating-point registers. */
+ if ((regnum >= SPARC_F0_REGNUM && regnum <= SPARC_F31_REGNUM)
+ || (regnum >= SPARC64_F32_REGNUM && regnum <= SPARC64_F62_REGNUM))
+ return 1;
+
+ /* Control registers. */
+ if (regnum == SPARC64_FSR_REGNUM)
+ return 1;
+
+ return 0;
+}
+
/* Provide a prototype to silence -Wmissing-prototypes. */
void _initialize_sparcnbsd_nat (void);
@@ -90,4 +135,6 @@ _initialize_sparcnbsd_nat (void)
sparc_collect_gregset = sparc64nbsd_collect_gregset;
sparc_supply_fpregset = sparc64nbsd_supply_fpregset;
sparc_collect_fpregset = sparc64nbsd_collect_fpregset;
+ sparc_gregset_supplies_p = sparc64nbsd_gregset_supplies_p;
+ sparc_fpregset_supplies_p = sparc64nbsd_fpregset_supplies_p;
}