gdb/
authorYao Qi <yao@codesourcery.com>
Sat, 17 Sep 2011 14:37:59 +0000 (14:37 +0000)
committerYao Qi <yao@codesourcery.com>
Sat, 17 Sep 2011 14:37:59 +0000 (14:37 +0000)
        * arm-tdep.c (install_ldr_str_ldrb_strb): Renamed to ...
        (install_load_store): ... this.  New.
        Change parameter BYTE to SIZE.
        (arm_copy_ldr_str_ldrb_strb): Update caller.
        (arm_decode_ld_st_word_ubyte): Update caller.

gdb/ChangeLog
gdb/arm-tdep.c

index a79dd02..3970ce3 100644 (file)
@@ -1,5 +1,13 @@
 2011-09-17  Yao Qi  <yao@codesourcery.com>
 
+        * arm-tdep.c (install_ldr_str_ldrb_strb): Renamed to ...
+        (install_load_store): ... this.  New.
+        Change parameter BYTE to SIZE.
+        (arm_copy_ldr_str_ldrb_strb): Update caller.
+        (arm_decode_ld_st_word_ubyte): Update caller.
+
+2011-09-17  Yao Qi  <yao@codesourcery.com>
+
        * infrun.c (displaced_step_fixup): Move some code ...
        (displaced_step_restore): ... here.  New function.
        (handle_inferior_event): Cleanup displaced stepping state for both
index 1a75af1..d5e5dac 100644 (file)
@@ -5982,13 +5982,13 @@ arm_copy_extra_ld_st (struct gdbarch *gdbarch, uint32_t insn, int unpriveleged,
   return 0;
 }
 
-/* Copy byte/word loads and stores.  */
+/* Copy byte/half word/word loads and stores.  */
 
 static void
-install_ldr_str_ldrb_strb (struct gdbarch *gdbarch, struct regcache *regs,
-                          struct displaced_step_closure *dsc, int load,
-                          int immed, int writeback, int byte, int usermode,
-                          int rt, int rm, int rn)
+install_load_store (struct gdbarch *gdbarch, struct regcache *regs,
+                   struct displaced_step_closure *dsc, int load,
+                   int immed, int writeback, int size, int usermode,
+                   int rt, int rm, int rn)
 {
   ULONGEST rt_val, rn_val, rm_val = 0;
 
@@ -6009,7 +6009,7 @@ install_ldr_str_ldrb_strb (struct gdbarch *gdbarch, struct regcache *regs,
   if (!immed)
     displaced_write_reg (regs, dsc, 3, rm_val, CANNOT_WRITE_PC);
   dsc->rd = rt;
-  dsc->u.ldst.xfersize = byte ? 1 : 4;
+  dsc->u.ldst.xfersize = size;
   dsc->u.ldst.rn = rn;
   dsc->u.ldst.immed = immed;
   dsc->u.ldst.writeback = writeback;
@@ -6042,7 +6042,7 @@ static int
 arm_copy_ldr_str_ldrb_strb (struct gdbarch *gdbarch, uint32_t insn,
                            struct regcache *regs,
                            struct displaced_step_closure *dsc,
-                           int load, int byte, int usermode)
+                           int load, int size, int usermode)
 {
   int immed = !bit (insn, 25);
   int writeback = (bit (insn, 24) == 0 || bit (insn, 21) != 0);
@@ -6056,13 +6056,13 @@ arm_copy_ldr_str_ldrb_strb (struct gdbarch *gdbarch, uint32_t insn,
   if (debug_displaced)
     fprintf_unfiltered (gdb_stdlog,
                        "displaced: copying %s%s r%d [r%d] insn %.8lx\n",
-                       load ? (byte ? "ldrb" : "ldr")
-                            : (byte ? "strb" : "str"), usermode ? "t" : "",
+                       load ? (size == 1 ? "ldrb" : "ldr")
+                            : (size == 1 ? "strb" : "str"), usermode ? "t" : "",
                        rt, rn,
                        (unsigned long) insn);
 
-  install_ldr_str_ldrb_strb (gdbarch, regs, dsc, load, immed, writeback, byte,
-                            usermode, rt, rm, rn);
+  install_load_store (gdbarch, regs, dsc, load, immed, writeback, size,
+                     usermode, rt, rm, rn);
 
   if (load || rt != ARM_PC_REGNUM)
     {
@@ -6762,16 +6762,16 @@ arm_decode_ld_st_word_ubyte (struct gdbarch *gdbarch, uint32_t insn,
 
   if ((!a && (op1 & 0x05) == 0x00 && (op1 & 0x17) != 0x02)
       || (a && (op1 & 0x05) == 0x00 && (op1 & 0x17) != 0x02 && !b))
-    return arm_copy_ldr_str_ldrb_strb (gdbarch, insn, regs, dsc, 0, 0, 0);
+    return arm_copy_ldr_str_ldrb_strb (gdbarch, insn, regs, dsc, 0, 4, 0);
   else if ((!a && (op1 & 0x17) == 0x02)
            || (a && (op1 & 0x17) == 0x02 && !b))
-    return arm_copy_ldr_str_ldrb_strb (gdbarch, insn, regs, dsc, 0, 0, 1);
+    return arm_copy_ldr_str_ldrb_strb (gdbarch, insn, regs, dsc, 0, 4, 1);
   else if ((!a && (op1 & 0x05) == 0x01 && (op1 & 0x17) != 0x03)
            || (a && (op1 & 0x05) == 0x01 && (op1 & 0x17) != 0x03 && !b))
-    return arm_copy_ldr_str_ldrb_strb (gdbarch, insn, regs, dsc, 1, 0, 0);
+    return arm_copy_ldr_str_ldrb_strb (gdbarch, insn, regs, dsc, 1, 4, 0);
   else if ((!a && (op1 & 0x17) == 0x03)
           || (a && (op1 & 0x17) == 0x03 && !b))
-    return arm_copy_ldr_str_ldrb_strb (gdbarch, insn, regs, dsc, 1, 0, 1);
+    return arm_copy_ldr_str_ldrb_strb (gdbarch, insn, regs, dsc, 1, 4, 1);
   else if ((!a && (op1 & 0x05) == 0x04 && (op1 & 0x17) != 0x06)
            || (a && (op1 & 0x05) == 0x04 && (op1 & 0x17) != 0x06 && !b))
     return arm_copy_ldr_str_ldrb_strb (gdbarch, insn, regs, dsc, 0, 1, 0);