This is the mail archive of the rda@sources.redhat.com mailing list for the rda 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] Disable registers CAUSE and BADADDR for linux/mips targets


I've just committed the patch below.  These non-writable registers
were causing quite a few testsuite failures.  If someone provides a
compelling reason for making the registers available for user space
debugging, I'll look for a different solution.  (I've also snuck in a
build related patch from Alex.)

2003-01-22  Kevin Buettner  <kevinb@redhat.com>

	* linux-target.c (struct peekuser_pokeuser_reginfo)
	[MIPS64_LINUX_TARGET, MIPS_LINUX_TARGET]: Disable registers ``cause''
	and ``bad'' since they are not writable via ptrace().

2003-01-19  Alexandre Oliva  <aoliva@redhat.com>

	* linux-target.c: Don't assume asm-mips/ is available, use just
	asm instead.
 
Index: linux-target.c
===================================================================
RCS file: /cvs/src/src/rda/unix/linux-target.c,v
retrieving revision 1.3
diff -u -p -r1.3 linux-target.c
--- linux-target.c	18 Dec 2002 20:25:11 -0000	1.3
+++ linux-target.c	23 Jan 2003 06:38:59 -0000
@@ -30,7 +30,7 @@
 #if !defined(_MIPSEL) && !defined(_MIPSEB)
 #include <stdint.h>
 #else
-#include <asm-mips/inst.h>
+#include <asm/inst.h>
 #endif
 
 #include <sys/ptrace.h>
@@ -473,8 +473,14 @@ static struct peekuser_pokeuser_reginfo 
      asm-mips/reg.h.  Note, however, that the kernel header sandwiches
      the status register (sr, above) in between ``bad'' and ``cause''.  */
 
+#if 0
+  /* CAUSE and BADVADDR are readable via ptrace, but they're not writable.  */
   { BADVADDR,      4, GREGS,  35 * 4, 4, PROTO_SIZE },      /* bad */
   { CAUSE,         4, GREGS,  36 * 4, 4, PROTO_SIZE },      /* cause */
+#else
+  { 0,             8, NOREGS, 0,      8, 8 },               /* bad */
+  { 0,             8, NOREGS, 0,      8, 8 },               /* cause */
+#endif
   { PC,            4, GREGS,  34 * 4, 4, PROTO_SIZE },      /* pc */
 
   /* Linux/MIPS floating point is a bit of a mess.  On the one hand,
@@ -587,8 +593,14 @@ static struct peekuser_pokeuser_reginfo 
      asm-mips/reg.h.  Note, however, that the kernel header sandwiches
      the status register (sr, above) in between ``bad'' and ``cause''.  */
 
+#if 0
+  /* CAUSE and BADVADDR are readable via ptrace, but they're not writable.  */
   { 66,            8, GREGS,  35 * 4, 8, 8 },      /* bad */
   { 65,            8, GREGS,  36 * 4, 8, 8 },      /* cause */
+#else
+  { 0,             8, NOREGS, 0,      8, 8 },      /* bad */
+  { 0,             8, NOREGS, 0,      8, 8 },      /* cause */
+#endif
   { 64,            8, GREGS,  34 * 4, 8, 8 },      /* pc */
 
   /* Linux/MIPS floating point is a bit of a mess.  On the one hand,


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]