public inbox for rda@sourceware.org
 help / color / mirror / Atom feed
From: Kevin Buettner <kevinb@redhat.com>
To: rda@sources.redhat.com
Subject: [PATCH] linux-target.c: More MIPS software single step fixes
Date: Fri, 09 May 2003 22:12:00 -0000	[thread overview]
Message-ID: <1030509221200.ZM25523@localhost.localdomain> (raw)

I've just committed the patch below.

Thanks to Chris Demetriou for feedback regarding problems with my
earlier patch.

	* linux-target.c (mips_singlestep): Don't any consider cop0 or cop1x
	instructions to be conditional branches.  Expand set of cop1
	opcodes considered to be conditional branches.

Index: linux-target.c
===================================================================
RCS file: /cvs/src/src/rda/unix/linux-target.c,v
retrieving revision 1.7
diff -u -p -r1.7 linux-target.c
--- linux-target.c	9 May 2003 05:13:42 -0000	1.7
+++ linux-target.c	9 May 2003 21:48:43 -0000
@@ -2640,18 +2640,29 @@ mips_singlestep (struct gdbserv *serv, p
     targ |= (insn.j_format.target << 2);
     break;
 
-  /* Some cop instructions are conditional... */
-  case cop0_op:
+  /* Some cop1 instructions are conditional branches.  */
   case cop1_op:
+    if (insn.i_format.rs == bc_op
+        || insn.i_format.rs == bc_op + 1  /* e.g, BC1ANY2 on MIPS-3D */
+	|| insn.i_format.rs == bc_op + 2  /* e.g, BC1ANY4 on MIPS-3D */)
+      {
+	is_branch = is_cond = 1;
+	targ += 4 + (insn.i_format.simmediate << 2);
+      }
+    break;
+
+  /* Some cop2 instructions are conditional branches.  */
   case cop2_op:
-    if (insn.i_format.rs != bc_op)
-      break;
-    else
-      ; /* fall through... */
+    /* MIPS32 Architecture For Programmers Volume II, rev 1.90 documents
+       bc2f, bc2fl, bc2t, and bc2tl.  */
+    if (insn.i_format.rs == bc_op)
+      {
+	is_branch = is_cond = 1;
+	targ += 4 + (insn.i_format.simmediate << 2);
+      }
+    break;
 
-  /*
-   * These are conditional.
-   */
+  /* Other conditional branches...  */
   case beq_op:
   case beql_op:
   case bne_op:
@@ -2660,7 +2671,6 @@ mips_singlestep (struct gdbserv *serv, p
   case blezl_op:
   case bgtz_op:
   case bgtzl_op:
-  case cop1x_op:
     is_branch = is_cond = 1;
     targ += 4 + (insn.i_format.simmediate << 2);
     break;

                 reply	other threads:[~2003-05-09 22:12 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1030509221200.ZM25523@localhost.localdomain \
    --to=kevinb@redhat.com \
    --cc=rda@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).