Remove MAX_REGISTER_SIZE from frv-linux-tdep.c
authorAlan Hayward <alan.hayward@arm.com>
Wed, 3 May 2017 13:51:40 +0000 (14:51 +0100)
committerAlan Hayward <alan.hayward@arm.com>
Wed, 3 May 2017 13:51:40 +0000 (14:51 +0100)
gdb/
* frv-linux-tdep.c (frv_linux_supply_gregset): Use raw_supply_zeroed.
* regcache.c (regcache::raw_supply_zeroed): New function.
* regcache.h (regcache::raw_supply_zeroed): New declaration.

gdb/ChangeLog
gdb/frv-linux-tdep.c
gdb/regcache.c
gdb/regcache.h

index 9bb3510442bf805cd73a48f132ea39032026b792..4e278f59b6969b1a71a75b387b9cc8a547bc2e6d 100644 (file)
@@ -1,3 +1,9 @@
+2017-05-03  Alan Hayward  <alan.hayward@arm.com>
+
+       * frv-linux-tdep.c (frv_linux_supply_gregset): Use raw_supply_zeroed.
+       * regcache.c (regcache::raw_supply_zeroed): New function.
+       * regcache.h (regcache::raw_supply_zeroed): New declaration.
+
 2017-05-03  Simon Marchi  <simon.marchi@ericsson.com>
 
        * gdbarch.sh: Remove commented out definition of
index eb87f93058b0287e8f05c585d1b6aa1ff2bffb78..cd02669d2530c6a2435e7c596d8ed0a4662a3d15 100644 (file)
@@ -413,17 +413,14 @@ frv_linux_supply_gregset (const struct regset *regset,
                          int regnum, const void *gregs, size_t len)
 {
   int regi;
-  char zerobuf[MAX_REGISTER_SIZE];
-
-  memset (zerobuf, 0, MAX_REGISTER_SIZE);
 
   /* gr0 always contains 0.  Also, the kernel passes the TBR value in
      this slot.  */
-  regcache_raw_supply (regcache, first_gpr_regnum, zerobuf);
+  regcache->raw_supply_zeroed (first_gpr_regnum);
 
   /* Fill gr32, ..., gr63 with zeros. */
   for (regi = first_gpr_regnum + 32; regi <= last_gpr_regnum; regi++)
-    regcache_raw_supply (regcache, regi, zerobuf);
+    regcache->raw_supply_zeroed (regi);
 
   regcache_supply_regset (regset, regcache, regnum, gregs, len);
 }
index 03f172e1b2972177009724d6e6c6f994bf14a35b..d2c253a9b6df913fe74c7b4f14af9d27dc768465 100644 (file)
@@ -1199,6 +1199,26 @@ regcache::raw_supply (int regnum, const void *buf)
     }
 }
 
+/* Supply register REGNUM with zeroed value to REGCACHE.  This is not the same
+   as calling raw_supply with NULL (which will set the state to
+   unavailable).  */
+
+void
+regcache::raw_supply_zeroed (int regnum)
+{
+  void *regbuf;
+  size_t size;
+
+  gdb_assert (regnum >= 0 && regnum < m_descr->nr_raw_registers);
+  gdb_assert (!m_readonly_p);
+
+  regbuf = register_buffer (regnum);
+  size = m_descr->sizeof_register[regnum];
+
+  memset (regbuf, 0, size);
+  m_register_status[regnum] = REG_VALID;
+}
+
 /* Collect register REGNUM from REGCACHE and store its contents in BUF.  */
 
 void
index 36255da12d23ff6682c53f9943c614c175238a60..da00abd9f902805a126aaeae764f4031ad9e43ad 100644 (file)
@@ -294,6 +294,8 @@ public:
 
   void raw_supply (int regnum, const void *buf);
 
+  void raw_supply_zeroed (int regnum);
+
   enum register_status get_register_status (int regnum) const;
 
   void raw_set_cached_value (int regnum, const gdb_byte *buf);