OSDN Git Service

* linux-target.c (mips_singlestep): Don't interpret all coprocessor
authorkevinb <kevinb>
Fri, 9 May 2003 05:13:42 +0000 (05:13 +0000)
committerkevinb <kevinb>
Fri, 9 May 2003 05:13:42 +0000 (05:13 +0000)
instructions as conditional branches.

rda/unix/ChangeLog
rda/unix/linux-target.c

index 88c43d6..fbcb209 100644 (file)
@@ -1,3 +1,8 @@
+2003-05-08  Kevin Buettner  <kevinb@redhat.com>
+
+       * linux-target.c (mips_singlestep): Don't interpret all coprocessor
+       instructions as conditional branches.
+
 2003-04-10  Kevin Buettner  <kevinb@redhat.com>
 
        * linux-target.c (NUM_REGS) [MIPS_LINUX_TARGET, MIPS64_LINUX_TARGET]:
index 26572b3..7f0122d 100644 (file)
@@ -2640,6 +2640,15 @@ mips_singlestep (struct gdbserv *serv, pid_t pid, int sig)
     targ |= (insn.j_format.target << 2);
     break;
 
+  /* Some cop instructions are conditional... */
+  case cop0_op:
+  case cop1_op:
+  case cop2_op:
+    if (insn.i_format.rs != bc_op)
+      break;
+    else
+      ; /* fall through... */
+
   /*
    * These are conditional.
    */
@@ -2651,9 +2660,6 @@ mips_singlestep (struct gdbserv *serv, pid_t pid, int sig)
   case blezl_op:
   case bgtz_op:
   case bgtzl_op:
-  case cop0_op:
-  case cop1_op:
-  case cop2_op:
   case cop1x_op:
     is_branch = is_cond = 1;
     targ += 4 + (insn.i_format.simmediate << 2);