This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH/SPARC] Really fix NetBSD/sparc64


At least that's what I hope...

Committed to the SPARC branch,

Mark


Index: ChangeLog
from  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.

Index: sparc64nbsd-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/sparc64nbsd-nat.c,v
retrieving revision 1.2.6.1
diff -u -p -r1.2.6.1 sparc64nbsd-nat.c
--- sparc64nbsd-nat.c 26 Dec 2003 23:42:59 -0000 1.2.6.1
+++ sparc64nbsd-nat.c 27 Dec 2003 15:46:36 -0000
@@ -79,6 +79,51 @@ sparc64nbsd_collect_fpregset (const stru
     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;
 }
Index: config/sparc/nbsd64.mh
===================================================================
RCS file: /cvs/src/src/gdb/config/sparc/nbsd64.mh,v
retrieving revision 1.1.54.2
diff -u -p -r1.1.54.2 nbsd64.mh
--- config/sparc/nbsd64.mh 27 Dec 2003 11:30:06 -0000 1.1.54.2
+++ config/sparc/nbsd64.mh 27 Dec 2003 15:46:36 -0000
@@ -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 Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]