[2/4] Don't use arm_regmap and arm_num_regs in arm_fill_gregset and arm_store_gregset

Message ID 1438077592-15356-3-git-send-email-yao.qi@linaro.org
State New, archived
Headers

Commit Message

Yao Qi July 28, 2015, 9:59 a.m. UTC
  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 series.

gdb/gdbserver:

2015-07-28  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/linux-arm-low.c | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)
  

Patch

diff --git a/gdb/gdbserver/linux-arm-low.c b/gdb/gdbserver/linux-arm-low.c
index 14c96a3..0a34379 100644
--- a/gdb/gdbserver/linux-arm-low.c
+++ b/gdb/gdbserver/linux-arm-low.c
@@ -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