]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
* sparc64nbsd-nat.c (sparc64nbsd_gregset_supplies_p)
authorMark Kettenis <kettenis@gnu.org>
Sat, 27 Dec 2003 15:48:34 +0000 (15:48 +0000)
committerMark Kettenis <kettenis@gnu.org>
Sat, 27 Dec 2003 15:48:34 +0000 (15:48 +0000)
(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.

gdb/ChangeLog
gdb/config/sparc/nbsd64.mh
gdb/sparc64nbsd-nat.c

index fd4bd86bc2bffb453b6bcc1c481e9f526a684fa0..f485ce052007d6767a28b1ec03c401da6d592615 100644 (file)
@@ -1,3 +1,11 @@
+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:
index 6c16524a986415a1bf8105b8725978b2d238ec55..e8ac58bda2b05090952e817ae11206188c6f943f 100644 (file)
@@ -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
index ec324591470a90e94d75a4aacb862df3f5145f4d..04a4d21e4ad9b8ef1a6d500a6297791d2e094ea8 100644 (file)
@@ -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;
+}
+
 \f
 /* 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;
 }