[rfc] [5/6] Remove macro CANNOT_FETCH / STORE_REGISTERS

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[rfc] [5/6] Remove macro CANNOT_FETCH / STORE_REGISTERS

Markus Deuling
Hello,

this patch removes both CANNOT_FETCH_REGISTERS and CANNOT_STORE_REGISTERS from gdbarch.sh.

ChangeLog:

        * gdbarch.sh (CANNOT_FETCH_REGISTER): Replace by
        gdbarch_cannot_fetch_register.
        * alpha-nat.c (fetch_osf_core_registers): Likewise.
        * hppa-linux-nat.c (fetch_register): Likewise.
        * inf-ptrace.c (inf_ptrace_fetch_register): Likewise.
        * m68klinux-nat.c (fetch_register): Likewise.
        * mipsnbsd-tdep.c (mipsnbsd_supply_reg,mipsnbsd_supply_fpreg): Likewise:
        * gdbarch.sh (CANNOT_STORE_REGISTER): Replace by
        gdbarch_cannot_store_register.
        * hppa-linux-nat.c (store_register): Likewise.
        * inf-ptrace.c (inf_ptrace_store_register): Likewise.
        * regcache.c (regcache_raw_write): Likewise.
        * m68klinux-nat.c (store_register): Likewise.
        * mipsnbsd-tdep.c (mipsnbsd_fill_reg, mipsnbsd_fill_fpreg): Likewise.
        * gdbarch.c, gdbarch.h: Regenerate.


Is this ok to commit?

Regards,
Markus


--
Markus Deuling
GNU Toolchain for Linux on Cell BE
[hidden email]




diff -urN src/gdb/alpha-nat.c dev/gdb/alpha-nat.c
--- src/gdb/alpha-nat.c 2007-05-14 05:45:00.000000000 +0200
+++ dev/gdb/alpha-nat.c 2007-05-18 12:34:55.000000000 +0200
@@ -89,7 +89,7 @@
 
   for (regno = 0; regno < ALPHA_NUM_REGS; regno++)
     {
-      if (CANNOT_FETCH_REGISTER (regno))
+      if (gdbarch_cannot_fetch_register (current_gdbarch, regno))
  {
   regcache_raw_supply (regcache, regno, NULL);
   continue;
diff -urN src/gdb/gdbarch.c dev/gdb/gdbarch.c
--- src/gdb/gdbarch.c 2007-05-15 05:41:29.000000000 +0200
+++ dev/gdb/gdbarch.c 2007-05-18 12:30:35.000000000 +0200
@@ -767,12 +767,6 @@
   fprintf_unfiltered (file,
                       "gdbarch_dump: call_dummy_location = %s\n",
                       paddr_d (current_gdbarch->call_dummy_location));
-#ifdef CANNOT_FETCH_REGISTER
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "CANNOT_FETCH_REGISTER(regnum)",
-                      XSTRING (CANNOT_FETCH_REGISTER (regnum)));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: cannot_fetch_register = <0x%lx>\n",
                       (long) current_gdbarch->cannot_fetch_register);
@@ -784,12 +778,6 @@
   fprintf_unfiltered (file,
                       "gdbarch_dump: cannot_step_breakpoint = %s\n",
                       paddr_d (current_gdbarch->cannot_step_breakpoint));
-#ifdef CANNOT_STORE_REGISTER
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "CANNOT_STORE_REGISTER(regnum)",
-                      XSTRING (CANNOT_STORE_REGISTER (regnum)));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: cannot_store_register = <0x%lx>\n",
                       (long) current_gdbarch->cannot_store_register);
diff -urN src/gdb/gdbarch.h dev/gdb/gdbarch.h
--- src/gdb/gdbarch.h 2007-05-15 05:41:29.000000000 +0200
+++ dev/gdb/gdbarch.h 2007-05-18 12:30:24.000000000 +0200
@@ -566,22 +566,10 @@
 typedef int (gdbarch_cannot_fetch_register_ftype) (int regnum);
 extern int gdbarch_cannot_fetch_register (struct gdbarch *gdbarch, int regnum);
 extern void set_gdbarch_cannot_fetch_register (struct gdbarch *gdbarch, gdbarch_cannot_fetch_register_ftype *cannot_fetch_register);
-#if !defined (GDB_TM_FILE) && defined (CANNOT_FETCH_REGISTER)
-#error "Non multi-arch definition of CANNOT_FETCH_REGISTER"
-#endif
-#if !defined (CANNOT_FETCH_REGISTER)
-#define CANNOT_FETCH_REGISTER(regnum) (gdbarch_cannot_fetch_register (current_gdbarch, regnum))
-#endif
 
 typedef int (gdbarch_cannot_store_register_ftype) (int regnum);
 extern int gdbarch_cannot_store_register (struct gdbarch *gdbarch, int regnum);
 extern void set_gdbarch_cannot_store_register (struct gdbarch *gdbarch, gdbarch_cannot_store_register_ftype *cannot_store_register);
-#if !defined (GDB_TM_FILE) && defined (CANNOT_STORE_REGISTER)
-#error "Non multi-arch definition of CANNOT_STORE_REGISTER"
-#endif
-#if !defined (CANNOT_STORE_REGISTER)
-#define CANNOT_STORE_REGISTER(regnum) (gdbarch_cannot_store_register (current_gdbarch, regnum))
-#endif
 
 /* setjmp/longjmp support. */
 
diff -urN src/gdb/gdbarch.sh dev/gdb/gdbarch.sh
--- src/gdb/gdbarch.sh 2007-05-15 05:41:29.000000000 +0200
+++ dev/gdb/gdbarch.sh 2007-05-18 12:30:11.000000000 +0200
@@ -480,8 +480,8 @@
 # also include/...-sim.h.
 f:=:int:register_sim_regno:int reg_nr:reg_nr::legacy_register_sim_regno::0
 F:=:int:register_bytes_ok:long nr_bytes:nr_bytes
-f:=:int:cannot_fetch_register:int regnum:regnum::cannot_register_not::0
-f:=:int:cannot_store_register:int regnum:regnum::cannot_register_not::0
+f::int:cannot_fetch_register:int regnum:regnum::cannot_register_not::0
+f::int:cannot_store_register:int regnum:regnum::cannot_register_not::0
 # setjmp/longjmp support.
 F:=:int:get_longjmp_target:CORE_ADDR *pc:pc
 #
diff -urN src/gdb/hppa-linux-nat.c dev/gdb/hppa-linux-nat.c
--- src/gdb/hppa-linux-nat.c 2007-05-07 13:21:04.000000000 +0200
+++ dev/gdb/hppa-linux-nat.c 2007-05-18 12:40:40.000000000 +0200
@@ -221,7 +221,7 @@
   int tid;
   int val;
 
-  if (CANNOT_FETCH_REGISTER (regno))
+  if (gdbarch_cannot_fetch_register (current_gdbarch, regno))
     {
       regcache_raw_supply (regcache, regno, NULL);
       return;
@@ -249,7 +249,7 @@
   int tid;
   int val;
 
-  if (CANNOT_STORE_REGISTER (regno))
+  if (gdbarch_cannot_store_register (current_gdbarch, regno))
     return;
 
   /* GNU/Linux LWP ID's are process ID's.  */
diff -urN src/gdb/inf-ptrace.c dev/gdb/inf-ptrace.c
--- src/gdb/inf-ptrace.c 2007-05-11 14:04:57.000000000 +0200
+++ dev/gdb/inf-ptrace.c 2007-05-18 12:41:38.000000000 +0200
@@ -626,7 +626,8 @@
 
   /* This isn't really an address, but ptrace thinks of it as one.  */
   addr = inf_ptrace_register_u_offset (current_gdbarch, regnum, 0);
-  if (addr == (CORE_ADDR)-1 || CANNOT_FETCH_REGISTER (regnum))
+  if (addr == (CORE_ADDR)-1
+      || gdbarch_cannot_fetch_register (current_gdbarch ,regnum))
     {
       regcache_raw_supply (regcache, regnum, NULL);
       return;
@@ -681,7 +682,8 @@
 
   /* This isn't really an address, but ptrace thinks of it as one.  */
   addr = inf_ptrace_register_u_offset (current_gdbarch, regnum, 1);
-  if (addr == (CORE_ADDR)-1 || CANNOT_STORE_REGISTER (regnum))
+  if (addr == (CORE_ADDR)-1
+      || gdbarch_cannot_store_register (current_gdbarch, regnum))
     return;
 
   /* Cater for systems like GNU/Linux, that implement threads as
diff -urN src/gdb/m68klinux-nat.c dev/gdb/m68klinux-nat.c
--- src/gdb/m68klinux-nat.c 2007-05-07 13:21:04.000000000 +0200
+++ dev/gdb/m68klinux-nat.c 2007-05-18 12:43:16.000000000 +0200
@@ -123,7 +123,7 @@
   char buf[MAX_REGISTER_SIZE];
   int tid;
 
-  if (CANNOT_FETCH_REGISTER (regno))
+  if (gdbarch_cannot_fetch_register (current_gdbarch, regno))
     {
       memset (buf, '\0', register_size (current_gdbarch, regno)); /* Supply zeroes */
       regcache_raw_supply (regcache, regno, buf);
@@ -185,10 +185,8 @@
   int tid;
   char buf[MAX_REGISTER_SIZE];
 
-  if (CANNOT_STORE_REGISTER (regno))
-    {
-      return;
-    }
+  if (gdbarch_cannot_store_register (current_gdbarch, regno))
+    return;
 
   /* Overload thread id onto process id */
   tid = TIDGET (inferior_ptid);
diff -urN src/gdb/mipsnbsd-tdep.c dev/gdb/mipsnbsd-tdep.c
--- src/gdb/mipsnbsd-tdep.c 2007-05-11 14:04:57.000000000 +0200
+++ dev/gdb/mipsnbsd-tdep.c 2007-05-18 12:44:58.000000000 +0200
@@ -150,7 +150,7 @@
     {
       if (regno == i || regno == -1)
  {
-  if (CANNOT_FETCH_REGISTER (i))
+  if (gdbarch_cannot_fetch_register (current_gdbarch, i))
     regcache_raw_supply (regcache, i, NULL);
   else
             regcache_raw_supply (regcache, i,
@@ -165,7 +165,8 @@
   int i;
 
   for (i = 0; i <= PC_REGNUM; i++)
-    if ((regno == i || regno == -1) && ! CANNOT_STORE_REGISTER (i))
+    if ((regno == i || regno == -1)
+ && ! gdbarch_cannot_store_register (current_gdbarch, i))
       regcache_raw_collect (regcache, i,
     regs + (i * mips_isa_regsize (current_gdbarch)));
 }
@@ -181,7 +182,7 @@
     {
       if (regno == i || regno == -1)
  {
-  if (CANNOT_FETCH_REGISTER (i))
+  if (gdbarch_cannot_fetch_register (current_gdbarch, i))
     regcache_raw_supply (regcache, i, NULL);
   else
             regcache_raw_supply (regcache, i,
@@ -197,7 +198,8 @@
 
   for (i = FP0_REGNUM; i <= mips_regnum (current_gdbarch)->fp_control_status;
        i++)
-    if ((regno == i || regno == -1) && ! CANNOT_STORE_REGISTER (i))
+    if ((regno == i || regno == -1)
+ && ! gdbarch_cannot_store_register (current_gdbarch, i))
       regcache_raw_collect (regcache, i,
     fpregs + ((i - FP0_REGNUM) * mips_isa_regsize (current_gdbarch)));
 }
diff -urN src/gdb/regcache.c dev/gdb/regcache.c
--- src/gdb/regcache.c 2007-05-14 05:45:00.000000000 +0200
+++ dev/gdb/regcache.c 2007-05-18 12:42:23.000000000 +0200
@@ -616,7 +616,7 @@
 
   /* On the sparc, writing %g0 is a no-op, so we don't even want to
      change the registers array if something writes to this register.  */
-  if (CANNOT_STORE_REGISTER (regnum))
+  if (gdbarch_cannot_store_register (current_gdbarch, regnum))
     return;
 
   /* Make certain that the correct cache is selected.  */


Reply | Threaded
Open this post in threaded view
|

Re: [rfc] [5/6] Remove macro CANNOT_FETCH / STORE_REGISTERS

Jim Blandy

Markus Deuling <[hidden email]> writes:

> ChangeLog:
>
> * gdbarch.sh (CANNOT_FETCH_REGISTER): Replace by
> gdbarch_cannot_fetch_register.
> * alpha-nat.c (fetch_osf_core_registers): Likewise.
> * hppa-linux-nat.c (fetch_register): Likewise.
> * inf-ptrace.c (inf_ptrace_fetch_register): Likewise.
> * m68klinux-nat.c (fetch_register): Likewise.
> * mipsnbsd-tdep.c (mipsnbsd_supply_reg,mipsnbsd_supply_fpreg): Likewise:
> * gdbarch.sh (CANNOT_STORE_REGISTER): Replace by
> gdbarch_cannot_store_register.
> * hppa-linux-nat.c (store_register): Likewise.
> * inf-ptrace.c (inf_ptrace_store_register): Likewise.
> * regcache.c (regcache_raw_write): Likewise.
> * m68klinux-nat.c (store_register): Likewise.
> * mipsnbsd-tdep.c (mipsnbsd_fill_reg, mipsnbsd_fill_fpreg): Likewise.
> * gdbarch.c, gdbarch.h: Regenerate.
>
>
> Is this ok to commit?

Yes, once the copyright assignment issues are sorted out, and the
minor issue noted below is fixed.

> diff -urN src/gdb/inf-ptrace.c dev/gdb/inf-ptrace.c
> --- src/gdb/inf-ptrace.c 2007-05-11 14:04:57.000000000 +0200
> +++ dev/gdb/inf-ptrace.c 2007-05-18 12:41:38.000000000 +0200
> @@ -626,7 +626,8 @@
>  
>    /* This isn't really an address, but ptrace thinks of it as one.  */
>    addr = inf_ptrace_register_u_offset (current_gdbarch, regnum, 0);
> -  if (addr == (CORE_ADDR)-1 || CANNOT_FETCH_REGISTER (regnum))
> +  if (addr == (CORE_ADDR)-1
> +      || gdbarch_cannot_fetch_register (current_gdbarch ,regnum))

The comma should come immediately after current_gdbarch.
Reply | Threaded
Open this post in threaded view
|

Re: [rfc] [5/6] Remove macro CANNOT_FETCH / STORE_REGISTERS

Markus Deuling
Jim Blandy wrote:

> Markus Deuling <[hidden email]> writes:
>> ChangeLog:
>>
>> * gdbarch.sh (CANNOT_FETCH_REGISTER): Replace by
>> gdbarch_cannot_fetch_register.
>> * alpha-nat.c (fetch_osf_core_registers): Likewise.
>> * hppa-linux-nat.c (fetch_register): Likewise.
>> * inf-ptrace.c (inf_ptrace_fetch_register): Likewise.
>> * m68klinux-nat.c (fetch_register): Likewise.
>> * mipsnbsd-tdep.c (mipsnbsd_supply_reg,mipsnbsd_supply_fpreg): Likewise:
>> * gdbarch.sh (CANNOT_STORE_REGISTER): Replace by
>> gdbarch_cannot_store_register.
>> * hppa-linux-nat.c (store_register): Likewise.
>> * inf-ptrace.c (inf_ptrace_store_register): Likewise.
>> * regcache.c (regcache_raw_write): Likewise.
>> * m68klinux-nat.c (store_register): Likewise.
>> * mipsnbsd-tdep.c (mipsnbsd_fill_reg, mipsnbsd_fill_fpreg): Likewise.
>> * gdbarch.c, gdbarch.h: Regenerate.
>>
>>
>> Is this ok to commit?
>
> Yes, once the copyright assignment issues are sorted out, and the
> minor issue noted below is fixed.
>
>> diff -urN src/gdb/inf-ptrace.c dev/gdb/inf-ptrace.c
>> --- src/gdb/inf-ptrace.c 2007-05-11 14:04:57.000000000 +0200
>> +++ dev/gdb/inf-ptrace.c 2007-05-18 12:41:38.000000000 +0200
>> @@ -626,7 +626,8 @@
>>  
>>    /* This isn't really an address, but ptrace thinks of it as one.  */
>>    addr = inf_ptrace_register_u_offset (current_gdbarch, regnum, 0);
>> -  if (addr == (CORE_ADDR)-1 || CANNOT_FETCH_REGISTER (regnum))
>> +  if (addr == (CORE_ADDR)-1
>> +      || gdbarch_cannot_fetch_register (current_gdbarch ,regnum))
>
> The comma should come immediately after current_gdbarch.
>
Again thank you very much for your review. I attached a corrected version of the patch.

Ulrich, could you please commit? Thanks in advance.


--
Markus Deuling
GNU Toolchain for Linux on Cell BE
[hidden email]



diff -urN src/gdb/alpha-nat.c dev/gdb/alpha-nat.c
--- src/gdb/alpha-nat.c 2007-05-14 05:45:00.000000000 +0200
+++ dev/gdb/alpha-nat.c 2007-05-18 12:34:55.000000000 +0200
@@ -89,7 +89,7 @@
 
   for (regno = 0; regno < ALPHA_NUM_REGS; regno++)
     {
-      if (CANNOT_FETCH_REGISTER (regno))
+      if (gdbarch_cannot_fetch_register (current_gdbarch, regno))
  {
   regcache_raw_supply (regcache, regno, NULL);
   continue;
diff -urN src/gdb/gdbarch.c dev/gdb/gdbarch.c
--- src/gdb/gdbarch.c 2007-05-15 05:41:29.000000000 +0200
+++ dev/gdb/gdbarch.c 2007-05-18 12:30:35.000000000 +0200
@@ -767,12 +767,6 @@
   fprintf_unfiltered (file,
                       "gdbarch_dump: call_dummy_location = %s\n",
                       paddr_d (current_gdbarch->call_dummy_location));
-#ifdef CANNOT_FETCH_REGISTER
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "CANNOT_FETCH_REGISTER(regnum)",
-                      XSTRING (CANNOT_FETCH_REGISTER (regnum)));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: cannot_fetch_register = <0x%lx>\n",
                       (long) current_gdbarch->cannot_fetch_register);
@@ -784,12 +778,6 @@
   fprintf_unfiltered (file,
                       "gdbarch_dump: cannot_step_breakpoint = %s\n",
                       paddr_d (current_gdbarch->cannot_step_breakpoint));
-#ifdef CANNOT_STORE_REGISTER
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "CANNOT_STORE_REGISTER(regnum)",
-                      XSTRING (CANNOT_STORE_REGISTER (regnum)));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: cannot_store_register = <0x%lx>\n",
                       (long) current_gdbarch->cannot_store_register);
diff -urN src/gdb/gdbarch.h dev/gdb/gdbarch.h
--- src/gdb/gdbarch.h 2007-05-15 05:41:29.000000000 +0200
+++ dev/gdb/gdbarch.h 2007-05-18 12:30:24.000000000 +0200
@@ -566,22 +566,10 @@
 typedef int (gdbarch_cannot_fetch_register_ftype) (int regnum);
 extern int gdbarch_cannot_fetch_register (struct gdbarch *gdbarch, int regnum);
 extern void set_gdbarch_cannot_fetch_register (struct gdbarch *gdbarch, gdbarch_cannot_fetch_register_ftype *cannot_fetch_register);
-#if !defined (GDB_TM_FILE) && defined (CANNOT_FETCH_REGISTER)
-#error "Non multi-arch definition of CANNOT_FETCH_REGISTER"
-#endif
-#if !defined (CANNOT_FETCH_REGISTER)
-#define CANNOT_FETCH_REGISTER(regnum) (gdbarch_cannot_fetch_register (current_gdbarch, regnum))
-#endif
 
 typedef int (gdbarch_cannot_store_register_ftype) (int regnum);
 extern int gdbarch_cannot_store_register (struct gdbarch *gdbarch, int regnum);
 extern void set_gdbarch_cannot_store_register (struct gdbarch *gdbarch, gdbarch_cannot_store_register_ftype *cannot_store_register);
-#if !defined (GDB_TM_FILE) && defined (CANNOT_STORE_REGISTER)
-#error "Non multi-arch definition of CANNOT_STORE_REGISTER"
-#endif
-#if !defined (CANNOT_STORE_REGISTER)
-#define CANNOT_STORE_REGISTER(regnum) (gdbarch_cannot_store_register (current_gdbarch, regnum))
-#endif
 
 /* setjmp/longjmp support. */
 
diff -urN src/gdb/gdbarch.sh dev/gdb/gdbarch.sh
--- src/gdb/gdbarch.sh 2007-05-15 05:41:29.000000000 +0200
+++ dev/gdb/gdbarch.sh 2007-05-18 12:30:11.000000000 +0200
@@ -480,8 +480,8 @@
 # also include/...-sim.h.
 f:=:int:register_sim_regno:int reg_nr:reg_nr::legacy_register_sim_regno::0
 F:=:int:register_bytes_ok:long nr_bytes:nr_bytes
-f:=:int:cannot_fetch_register:int regnum:regnum::cannot_register_not::0
-f:=:int:cannot_store_register:int regnum:regnum::cannot_register_not::0
+f::int:cannot_fetch_register:int regnum:regnum::cannot_register_not::0
+f::int:cannot_store_register:int regnum:regnum::cannot_register_not::0
 # setjmp/longjmp support.
 F:=:int:get_longjmp_target:CORE_ADDR *pc:pc
 #
diff -urN src/gdb/hppa-linux-nat.c dev/gdb/hppa-linux-nat.c
--- src/gdb/hppa-linux-nat.c 2007-05-07 13:21:04.000000000 +0200
+++ dev/gdb/hppa-linux-nat.c 2007-05-18 12:40:40.000000000 +0200
@@ -221,7 +221,7 @@
   int tid;
   int val;
 
-  if (CANNOT_FETCH_REGISTER (regno))
+  if (gdbarch_cannot_fetch_register (current_gdbarch, regno))
     {
       regcache_raw_supply (regcache, regno, NULL);
       return;
@@ -249,7 +249,7 @@
   int tid;
   int val;
 
-  if (CANNOT_STORE_REGISTER (regno))
+  if (gdbarch_cannot_store_register (current_gdbarch, regno))
     return;
 
   /* GNU/Linux LWP ID's are process ID's.  */
diff -urN src/gdb/inf-ptrace.c dev/gdb/inf-ptrace.c
--- src/gdb/inf-ptrace.c 2007-05-11 14:04:57.000000000 +0200
+++ dev/gdb/inf-ptrace.c 2007-05-18 12:41:38.000000000 +0200
@@ -626,7 +626,8 @@
 
   /* This isn't really an address, but ptrace thinks of it as one.  */
   addr = inf_ptrace_register_u_offset (current_gdbarch, regnum, 0);
-  if (addr == (CORE_ADDR)-1 || CANNOT_FETCH_REGISTER (regnum))
+  if (addr == (CORE_ADDR)-1
+      || gdbarch_cannot_fetch_register (current_gdbarch, regnum))
     {
       regcache_raw_supply (regcache, regnum, NULL);
       return;
@@ -681,7 +682,8 @@
 
   /* This isn't really an address, but ptrace thinks of it as one.  */
   addr = inf_ptrace_register_u_offset (current_gdbarch, regnum, 1);
-  if (addr == (CORE_ADDR)-1 || CANNOT_STORE_REGISTER (regnum))
+  if (addr == (CORE_ADDR)-1
+      || gdbarch_cannot_store_register (current_gdbarch, regnum))
     return;
 
   /* Cater for systems like GNU/Linux, that implement threads as
diff -urN src/gdb/m68klinux-nat.c dev/gdb/m68klinux-nat.c
--- src/gdb/m68klinux-nat.c 2007-05-07 13:21:04.000000000 +0200
+++ dev/gdb/m68klinux-nat.c 2007-05-18 12:43:16.000000000 +0200
@@ -123,7 +123,7 @@
   char buf[MAX_REGISTER_SIZE];
   int tid;
 
-  if (CANNOT_FETCH_REGISTER (regno))
+  if (gdbarch_cannot_fetch_register (current_gdbarch, regno))
     {
       memset (buf, '\0', register_size (current_gdbarch, regno)); /* Supply zeroes */
       regcache_raw_supply (regcache, regno, buf);
@@ -185,10 +185,8 @@
   int tid;
   char buf[MAX_REGISTER_SIZE];
 
-  if (CANNOT_STORE_REGISTER (regno))
-    {
-      return;
-    }
+  if (gdbarch_cannot_store_register (current_gdbarch, regno))
+    return;
 
   /* Overload thread id onto process id */
   tid = TIDGET (inferior_ptid);
diff -urN src/gdb/mipsnbsd-tdep.c dev/gdb/mipsnbsd-tdep.c
--- src/gdb/mipsnbsd-tdep.c 2007-05-11 14:04:57.000000000 +0200
+++ dev/gdb/mipsnbsd-tdep.c 2007-05-18 12:44:58.000000000 +0200
@@ -150,7 +150,7 @@
     {
       if (regno == i || regno == -1)
  {
-  if (CANNOT_FETCH_REGISTER (i))
+  if (gdbarch_cannot_fetch_register (current_gdbarch, i))
     regcache_raw_supply (regcache, i, NULL);
   else
             regcache_raw_supply (regcache, i,
@@ -165,7 +165,8 @@
   int i;
 
   for (i = 0; i <= PC_REGNUM; i++)
-    if ((regno == i || regno == -1) && ! CANNOT_STORE_REGISTER (i))
+    if ((regno == i || regno == -1)
+ && ! gdbarch_cannot_store_register (current_gdbarch, i))
       regcache_raw_collect (regcache, i,
     regs + (i * mips_isa_regsize (current_gdbarch)));
 }
@@ -181,7 +182,7 @@
     {
       if (regno == i || regno == -1)
  {
-  if (CANNOT_FETCH_REGISTER (i))
+  if (gdbarch_cannot_fetch_register (current_gdbarch, i))
     regcache_raw_supply (regcache, i, NULL);
   else
             regcache_raw_supply (regcache, i,
@@ -197,7 +198,8 @@
 
   for (i = FP0_REGNUM; i <= mips_regnum (current_gdbarch)->fp_control_status;
        i++)
-    if ((regno == i || regno == -1) && ! CANNOT_STORE_REGISTER (i))
+    if ((regno == i || regno == -1)
+ && ! gdbarch_cannot_store_register (current_gdbarch, i))
       regcache_raw_collect (regcache, i,
     fpregs + ((i - FP0_REGNUM) * mips_isa_regsize (current_gdbarch)));
 }
diff -urN src/gdb/regcache.c dev/gdb/regcache.c
--- src/gdb/regcache.c 2007-05-14 05:45:00.000000000 +0200
+++ dev/gdb/regcache.c 2007-05-18 12:42:23.000000000 +0200
@@ -616,7 +616,7 @@
 
   /* On the sparc, writing %g0 is a no-op, so we don't even want to
      change the registers array if something writes to this register.  */
-  if (CANNOT_STORE_REGISTER (regnum))
+  if (gdbarch_cannot_store_register (current_gdbarch, regnum))
     return;
 
   /* Make certain that the correct cache is selected.  */