Don't use arm_regmap and arm_num_regs in arm_fill_gregset and arm_store_gregset
authorYao Qi <yao.qi@linaro.org>
Thu, 30 Jul 2015 14:07:38 +0000 (15:07 +0100)
committerYao Qi <yao.qi@linaro.org>
Thu, 30 Jul 2015 14:07:38 +0000 (15:07 +0100)
In order to align with arm-linux-nat.c counterparts, we don't use
arm_num_regs and arm_regmap in functions arm_fill_gregset and
arm_store_gregset.  Instead, we use register numbers.  With this
patch applied, arm_fill_gregset and arm_store_gregset don't need
arm_num_regs and arm_regmap, and they will be moved to a separate
file shared for both arm and aarch64 in the following patch.

gdb/gdbserver:

2015-07-30  Yao Qi  <yao.qi@linaro.org>

* linux-arm-low.c: Include arch/arm.h.
(arm_fill_gregset): Don't use arm_num_regs and arm_regmap.
(arm_store_gregset): Likewise.

gdb/gdbserver/ChangeLog
gdb/gdbserver/linux-arm-low.c

index 2e039b5..a3c0a2a 100644 (file)
@@ -1,3 +1,9 @@
+2015-07-30  Yao Qi  <yao.qi@linaro.org>
+
+       * linux-arm-low.c: Include arch/arm.h.
+       (arm_fill_gregset): Don't use arm_num_regs and arm_regmap.
+       (arm_store_gregset): Likewise.
+
 2015-07-29  Simon Marchi  <simon.marchi@ericsson.com>
 
        * linux-mips-low.c (mips_linux_prepare_to_resume): Add NULL as
index 14c96a3..0a34379 100644 (file)
@@ -18,6 +18,7 @@
 
 #include "server.h"
 #include "linux-low.h"
+#include "arch/arm.h"
 
 /* Don't include elf.h if linux/elf.h got included by gdb_proc_service.h.
    On Bionic elf.h and linux/elf.h have conflicting definitions.  */
@@ -154,10 +155,12 @@ static void
 arm_fill_gregset (struct regcache *regcache, void *buf)
 {
   int i;
+  uint32_t *regs = buf;
 
-  for (i = 0; i < arm_num_regs; i++)
-    if (arm_regmap[i] != -1)
-      collect_register (regcache, i, ((char *) buf) + arm_regmap[i]);
+  for (i = ARM_A1_REGNUM; i <= ARM_PC_REGNUM; i++)
+    collect_register (regcache, i, &regs[i]);
+
+  collect_register (regcache, ARM_PS_REGNUM, &regs[16]);
 }
 
 static void
@@ -165,13 +168,16 @@ arm_store_gregset (struct regcache *regcache, const void *buf)
 {
   int i;
   char zerobuf[8];
+  const uint32_t *regs = buf;
 
   memset (zerobuf, 0, 8);
-  for (i = 0; i < arm_num_regs; i++)
-    if (arm_regmap[i] != -1)
-      supply_register (regcache, i, ((char *) buf) + arm_regmap[i]);
-    else
-      supply_register (regcache, i, zerobuf);
+  for (i = ARM_A1_REGNUM; i <= ARM_PC_REGNUM; i++)
+    supply_register (regcache, i, &regs[i]);
+
+  for (; i < ARM_PS_REGNUM; i++)
+    supply_register (regcache, i, zerobuf);
+
+  supply_register (regcache, ARM_PS_REGNUM, &regs[16]);
 }
 
 static void