Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Kei Sakamoto" <sakamoto.kei@renesas.com>
To: <gdb-patches@sources.redhat.com>
Subject: Re: [RFA/m32r] Fix breakpoint bug of m32rsdi protocol
Date: Wed, 07 Jul 2004 05:38:00 -0000	[thread overview]
Message-ID: <021701c463e4$ab8749c0$5169910a@E5A02646> (raw)
In-Reply-To: <020801c463e4$6c92a660$5169910a@E5A02646>

[-- Attachment #1: Type: text/plain, Size: 752 bytes --]

I'm sorry. I forgot to attach the patch file.

From: "Kei Sakamoto" <sakamoto.kei@renesas.com>
To: <gdb-patches@sources.redhat.com>
Sent: Wednesday, July 07, 2004 2:36 PM
Subject: [RFA/m32r] Fix breakpoint bug of m32rsdi protocol


> Hello,
> 
> I found a bug in m32r's own remote protocol, m32rsdi. When gdb uses m32rsdi
> protocol, gdb skips the breakpoint on the next instruction.
> 
> Fo example, when pc is 0xf00020, gdb skips the breakpoint on 0xf00024.
> 
>   f00020:       e6 f0 10 08     ld24 r6,f01008 <y>
>   f00024:       e3 f0 10 04     ld24 r3,f01004 <z>
> 
> The attached patch fixes this problem.
> 
> OK to commit?
> 
> ===
> 
> 2004-07-07    Kei Sakamoto  <sakamoto.kei@renesas.com>
> 
> * remote-m32r-sdi.c: Fix breakpoint bug.
> 
> 

[-- Attachment #2: remote-m32r-sdi.c.patch --]
[-- Type: application/octet-stream, Size: 19035 bytes --]

Index: remote-m32r-sdi.c
===================================================================
RCS file: /cvs/src/src/gdb/remote-m32r-sdi.c,v
retrieving revision 1.4
diff -u -r1.4 remote-m32r-sdi.c
--- remote-m32r-sdi.c	15 Jun 2004 01:04:19 -0000	1.4
+++ remote-m32r-sdi.c	7 Jul 2004 04:04:40 -0000
@@ -161,7 +161,7 @@
 {
   int c;
 
-  if (!sdi_desc) 
+  if (!sdi_desc)
     return -1;
 
   c = serial_readchar (sdi_desc, SDI_TIMEOUT);
@@ -169,7 +169,7 @@
   if (c < 0)
     return -1;
 
-  if (c != '+')		/* error */
+  if (c != '+')			/* error */
     return -1;
 
   return 0;
@@ -181,7 +181,7 @@
 {
   int ret;
 
-  if (!sdi_desc) 
+  if (!sdi_desc)
     return -1;
 
   if (serial_write (sdi_desc, buf, len) != 0)
@@ -200,7 +200,7 @@
   int total = 0;
   int c;
 
-  if (!sdi_desc) 
+  if (!sdi_desc)
     return -1;
 
   while (total < len)
@@ -264,8 +264,7 @@
 /* This is called not only when we first attach, but also when the
    user types "run" after having attached.  */
 static void
-m32r_create_inferior (char *execfile, char *args, char **env,
-		      int from_tty)
+m32r_create_inferior (char *execfile, char *args, char **env, int from_tty)
 {
   CORE_ADDR entry_pt;
 
@@ -326,7 +325,7 @@
     {
       port_str = strchr (args, ':');
       if (port_str == NULL)
-        sprintf (hostname, "%s:%d", args, SDIPORT);
+	sprintf (hostname, "%s:%d", args, SDIPORT);
       else
 	strcpy (hostname, args);
     }
@@ -409,6 +408,7 @@
 m32r_resume (ptid_t ptid, int step, enum target_signal sig)
 {
   unsigned long pc_addr, bp_addr, ab_addr;
+  int ib_breakpoints;
   unsigned char buf[13];
   int i;
 
@@ -469,187 +469,205 @@
     }
   else
     {
-      int ib_breakpoints;
+      /* Unset PBP. */
+      buf[0] = SDI_WRITE_CPU_REG;
+      buf[1] = SDI_REG_PBP;
+      store_long_parameter (buf + 2, 0x00000000);
+      send_data (buf, 6);
+    }
 
-      if (use_ib_breakpoints)
-	ib_breakpoints = max_ib_breakpoints;
+  if (use_ib_breakpoints)
+    ib_breakpoints = max_ib_breakpoints;
+  else
+    ib_breakpoints = 0;
+
+  /* Set ib breakpoints. */
+  for (i = 0; i < ib_breakpoints; i++)
+    {
+      bp_addr = bp_address[i];
+
+      if (bp_addr == 0xffffffff)
+	continue;
+
+      /* Set PBP. */
+      buf[0] = SDI_WRITE_MEMORY;
+      store_long_parameter (buf + 1, 0xffff8000 + 4 * i);
+      store_long_parameter (buf + 5, 4);
+      if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
+	{
+	  buf[9] = ib_bp_entry_enable[0];
+	  buf[10] = ib_bp_entry_enable[1];
+	  buf[11] = ib_bp_entry_enable[2];
+	  buf[12] = ib_bp_entry_enable[3];
+	}
       else
-	ib_breakpoints = 0;
+	{
+	  buf[9] = ib_bp_entry_enable[3];
+	  buf[10] = ib_bp_entry_enable[2];
+	  buf[11] = ib_bp_entry_enable[1];
+	  buf[12] = ib_bp_entry_enable[0];
+	}
+      send_data (buf, 13);
+
+      buf[0] = SDI_WRITE_MEMORY;
+      store_long_parameter (buf + 1, 0xffff8080 + 4 * i);
+      store_long_parameter (buf + 5, 4);
+      store_unsigned_integer (buf + 9, 4, bp_addr);
+      send_data (buf, 13);
+    }
 
-      /* Set ib breakpoints. */
-      for (i = 0; i < ib_breakpoints; i++)
+  /* Set dbt breakpoints. */
+  for (i = ib_breakpoints; i < MAX_BREAKPOINTS; i++)
+    {
+      bp_addr = bp_address[i];
+
+      if (bp_addr == 0xffffffff)
+	continue;
+
+      if (!mmu_on)
+	bp_addr &= 0x7fffffff;
+
+      /* Write DBT instruction. */
+      buf[0] = SDI_WRITE_MEMORY;
+      store_long_parameter (buf + 1, bp_addr);
+      store_long_parameter (buf + 5, 4);
+      if ((bp_addr & 2) == 0 && bp_addr != (pc_addr & 0xfffffffc))
 	{
-	  bp_addr = bp_address[i];
-	  if (bp_addr != 0xffffffff && bp_addr != pc_addr)
+	  if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
 	    {
-	      /* Set PBP. */
-	      buf[0] = SDI_WRITE_MEMORY;
-	      store_long_parameter (buf + 1, 0xffff8000 + 4 * i);
-	      store_long_parameter (buf + 5, 4);
-	      if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
-		{
-		  buf[9] = ib_bp_entry_enable[0];
-		  buf[10] = ib_bp_entry_enable[1];
-		  buf[11] = ib_bp_entry_enable[2];
-		  buf[12] = ib_bp_entry_enable[3];
-		}
-	      else
-		{
-		  buf[9] = ib_bp_entry_enable[3];
-		  buf[10] = ib_bp_entry_enable[2];
-		  buf[11] = ib_bp_entry_enable[1];
-		  buf[12] = ib_bp_entry_enable[0];
-		}
-	      send_data (buf, 13);
-
-	      buf[0] = SDI_WRITE_MEMORY;
-	      store_long_parameter (buf + 1, 0xffff8080 + 4 * i);
-	      store_long_parameter (buf + 5, 4);
-	      store_unsigned_integer (buf + 9, 4, bp_addr);
-	      send_data (buf, 13);
+	      buf[9] = dbt_bp_entry[0];
+	      buf[10] = dbt_bp_entry[1];
+	      buf[11] = dbt_bp_entry[2];
+	      buf[12] = dbt_bp_entry[3];
+	    }
+	  else
+	    {
+	      buf[9] = dbt_bp_entry[3];
+	      buf[10] = dbt_bp_entry[2];
+	      buf[11] = dbt_bp_entry[1];
+	      buf[12] = dbt_bp_entry[0];
 	    }
 	}
-
-      /* Set dbt breakpoints. */
-      for (i = ib_breakpoints; i < MAX_BREAKPOINTS; i++)
+      else
 	{
-	  bp_addr = bp_address[i];
-	  if (bp_addr != 0xffffffff && bp_addr != pc_addr)
+	  if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
 	    {
-	      if (!mmu_on)
-		bp_addr &= 0x7fffffff;
-
-	      /* Write DBT instruction. */
-	      buf[0] = SDI_WRITE_MEMORY;
-	      if ((bp_addr & 2) == 0 && bp_addr != (pc_addr & 0xfffffffc))
+	      if ((bp_addr & 2) == 0)
 		{
-		  store_long_parameter (buf + 1, bp_addr);
-		  store_long_parameter (buf + 5, 4);
-		  if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
-		    {
-		      buf[9] = dbt_bp_entry[0];
-		      buf[10] = dbt_bp_entry[1];
-		      buf[11] = dbt_bp_entry[2];
-		      buf[12] = dbt_bp_entry[3];
-		    }
-		  else
-		    {
-		      buf[9] = dbt_bp_entry[3];
-		      buf[10] = dbt_bp_entry[2];
-		      buf[11] = dbt_bp_entry[1];
-		      buf[12] = dbt_bp_entry[0];
-		    }
-		  send_data (buf, 13);
+		  buf[9] = dbt_bp_entry[0];
+		  buf[10] = dbt_bp_entry[1];
+		  buf[11] = bp_data[i][2] & 0x7f;
+		  buf[12] = bp_data[i][3];
 		}
 	      else
 		{
-		  if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
-		    store_long_parameter (buf + 1, bp_addr);
-		  else if ((bp_addr & 2) == 0)
-		    store_long_parameter (buf + 1, bp_addr + 2);
-		  else
-		    store_long_parameter (buf + 1, bp_addr - 2);
-		  store_long_parameter (buf + 5, 2);
-		  if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
-		    {
-		      buf[9] = dbt_bp_entry[0];
-		      buf[10] = dbt_bp_entry[1];
-		    }
-		  else
-		    {
-		      buf[9] = dbt_bp_entry[1];
-		      buf[10] = dbt_bp_entry[0];
-		    }
-		  send_data (buf, 11);
+		  buf[9] = bp_data[i][0];
+		  buf[10] = bp_data[i][1];
+		  buf[11] = dbt_bp_entry[0];
+		  buf[12] = dbt_bp_entry[1];
 		}
 	    }
-	}
-
-      /* Set access breaks. */
-      for (i = 0; i < max_access_breaks; i++)
-	{
-	  ab_addr = ab_address[i];
-	  if (ab_addr != 0x00000000)
+	  else
 	    {
-	      /* DBC register */
-	      buf[0] = SDI_WRITE_MEMORY;
-	      store_long_parameter (buf + 1, 0xffff8100 + 4 * i);
-	      store_long_parameter (buf + 5, 4);
-	      if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
+	      if ((bp_addr & 2) == 0)
 		{
-		  buf[9] = 0x00;
-		  buf[10] = 0x00;
-		  buf[11] = 0x00;
-		  switch (ab_type[i])
-		    {
-		    case 0:	/* write watch */
-		      buf[12] = 0x86;
-		      break;
-		    case 1:	/* read watch */
-		      buf[12] = 0x46;
-		      break;
-		    case 2:	/* access watch */
-		      buf[12] = 0x06;
-		      break;
-		    }
+		  buf[9] = bp_data[i][0];
+		  buf[10] = bp_data[i][1] & 0x7f;
+		  buf[11] = dbt_bp_entry[1];
+		  buf[12] = dbt_bp_entry[0];
 		}
 	      else
 		{
-		  switch (ab_type[i])
-		    {
-		    case 0:	/* write watch */
-		      buf[9] = 0x86;
-		      break;
-		    case 1:	/* read watch */
-		      buf[9] = 0x46;
-		      break;
-		    case 2:	/* access watch */
-		      buf[9] = 0x06;
-		      break;
-		    }
-		  buf[10] = 0x00;
-		  buf[11] = 0x00;
-		  buf[12] = 0x00;
+		  buf[9] = dbt_bp_entry[1];
+		  buf[10] = dbt_bp_entry[0];
+		  buf[11] = bp_data[i][2];
+		  buf[12] = bp_data[i][3];
 		}
-	      send_data (buf, 13);
-
-	      /* DBAH register */
-	      buf[0] = SDI_WRITE_MEMORY;
-	      store_long_parameter (buf + 1, 0xffff8180 + 4 * i);
-	      store_long_parameter (buf + 5, 4);
-	      store_unsigned_integer (buf + 9, 4, ab_addr);
-	      send_data (buf, 13);
+	    }
+	}
+      send_data (buf, 13);
+    }
 
-	      /* DBAL register */
-	      buf[0] = SDI_WRITE_MEMORY;
-	      store_long_parameter (buf + 1, 0xffff8200 + 4 * i);
-	      store_long_parameter (buf + 5, 4);
-	      store_long_parameter (buf + 9, 0xffffffff);
-	      send_data (buf, 13);
+  /* Set access breaks. */
+  for (i = 0; i < max_access_breaks; i++)
+    {
+      ab_addr = ab_address[i];
 
-	      /* DBD register */
-	      buf[0] = SDI_WRITE_MEMORY;
-	      store_long_parameter (buf + 1, 0xffff8280 + 4 * i);
-	      store_long_parameter (buf + 5, 4);
-	      store_long_parameter (buf + 9, 0x00000000);
-	      send_data (buf, 13);
+      if (ab_addr == 0x00000000)
+	continue;
 
-	      /* DBDM register */
-	      buf[0] = SDI_WRITE_MEMORY;
-	      store_long_parameter (buf + 1, 0xffff8300 + 4 * i);
-	      store_long_parameter (buf + 5, 4);
-	      store_long_parameter (buf + 9, 0x00000000);
-	      send_data (buf, 13);
+      /* DBC register */
+      buf[0] = SDI_WRITE_MEMORY;
+      store_long_parameter (buf + 1, 0xffff8100 + 4 * i);
+      store_long_parameter (buf + 5, 4);
+      if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
+	{
+	  buf[9] = 0x00;
+	  buf[10] = 0x00;
+	  buf[11] = 0x00;
+	  switch (ab_type[i])
+	    {
+	    case 0:		/* write watch */
+	      buf[12] = 0x86;
+	      break;
+	    case 1:		/* read watch */
+	      buf[12] = 0x46;
+	      break;
+	    case 2:		/* access watch */
+	      buf[12] = 0x06;
+	      break;
+	    }
+	}
+      else
+	{
+	  switch (ab_type[i])
+	    {
+	    case 0:		/* write watch */
+	      buf[9] = 0x86;
+	      break;
+	    case 1:		/* read watch */
+	      buf[9] = 0x46;
+	      break;
+	    case 2:		/* access watch */
+	      buf[9] = 0x06;
+	      break;
 	    }
+	  buf[10] = 0x00;
+	  buf[11] = 0x00;
+	  buf[12] = 0x00;
 	}
+      send_data (buf, 13);
 
-      /* Unset PBP. */
-      buf[0] = SDI_WRITE_CPU_REG;
-      buf[1] = SDI_REG_PBP;
-      store_long_parameter (buf + 2, 0x00000000);
-      send_data (buf, 6);
+      /* DBAH register */
+      buf[0] = SDI_WRITE_MEMORY;
+      store_long_parameter (buf + 1, 0xffff8180 + 4 * i);
+      store_long_parameter (buf + 5, 4);
+      store_unsigned_integer (buf + 9, 4, ab_addr);
+      send_data (buf, 13);
+
+      /* DBAL register */
+      buf[0] = SDI_WRITE_MEMORY;
+      store_long_parameter (buf + 1, 0xffff8200 + 4 * i);
+      store_long_parameter (buf + 5, 4);
+      store_long_parameter (buf + 9, 0xffffffff);
+      send_data (buf, 13);
+
+      /* DBD register */
+      buf[0] = SDI_WRITE_MEMORY;
+      store_long_parameter (buf + 1, 0xffff8280 + 4 * i);
+      store_long_parameter (buf + 5, 4);
+      store_long_parameter (buf + 9, 0x00000000);
+      send_data (buf, 13);
+
+      /* DBDM register */
+      buf[0] = SDI_WRITE_MEMORY;
+      store_long_parameter (buf + 1, 0xffff8300 + 4 * i);
+      store_long_parameter (buf + 5, 4);
+      store_long_parameter (buf + 9, 0x00000000);
+      send_data (buf, 13);
     }
 
+  /* Resume program. */
   buf[0] = SDI_EXEC_CPU;
   send_data (buf, 1);
 
@@ -680,6 +698,7 @@
 {
   static RETSIGTYPE (*prev_sigint) ();
   unsigned long bp_addr, pc_addr;
+  int ib_breakpoints;
   long i;
   unsigned char buf[13];
   unsigned long val;
@@ -705,7 +724,7 @@
       if (c < 0)
 	error ("Remote connection closed");
 
-      if (c == '-')	/* error */
+      if (c == '-')		/* error */
 	{
 	  status->kind = TARGET_WAITKIND_STOPPED;
 	  status->value.sig = TARGET_SIGNAL_HUP;
@@ -747,130 +766,123 @@
       last_pc_addr = 0xffffffff;
     }
 
-  /* Breakpoints are inserted only for "next" command */
-  if (!step_mode)
-    {
-      int ib_breakpoints;
-
-      if (use_ib_breakpoints)
-	ib_breakpoints = max_ib_breakpoints;
-      else
-	ib_breakpoints = 0;
+  if (use_ib_breakpoints)
+    ib_breakpoints = max_ib_breakpoints;
+  else
+    ib_breakpoints = 0;
 
-      /* Set back pc by 2 if m32r is stopped with dbt. */
-      buf[0] = SDI_READ_CPU_REG;
-      buf[1] = SDI_REG_BPC;
-      send_data (buf, 2);
-      recv_data (&val, 4);
-      pc_addr = ntohl (val) - 2;
-      for (i = ib_breakpoints; i < MAX_BREAKPOINTS; i++)
+  /* Set back pc by 2 if m32r is stopped with dbt. */
+  last_pc_addr = 0xffffffff;
+  buf[0] = SDI_READ_CPU_REG;
+  buf[1] = SDI_REG_BPC;
+  send_data (buf, 2);
+  recv_data (&val, 4);
+  pc_addr = ntohl (val) - 2;
+  for (i = ib_breakpoints; i < MAX_BREAKPOINTS; i++)
+    {
+      if (pc_addr == bp_address[i])
 	{
-	  if (pc_addr == bp_address[i])
+	  buf[0] = SDI_WRITE_CPU_REG;
+	  buf[1] = SDI_REG_BPC;
+	  store_long_parameter (buf + 2, pc_addr);
+	  send_data (buf, 6);
+
+	  /* If there is a parallel instruction with +2 offset at pc
+	     address, we have to take care of it later. */
+	  if ((pc_addr & 0x2) != 0)
 	    {
-	      buf[0] = SDI_WRITE_CPU_REG;
-	      buf[1] = SDI_REG_BPC;
-	      store_long_parameter (buf + 2, pc_addr);
-	      send_data (buf, 6);
-
-	      /* If there is a parallel instruction with +2 offset at pc
-	         address, we have to take care of it later. */
-	      if ((pc_addr & 0x2) != 0)
+	      if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
 		{
-		  if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
+		  if ((bp_data[i][2] & 0x80) != 0)
 		    {
-		      if ((bp_data[i][2] & 0x80) != 0)
-			{
-			  last_pc_addr = pc_addr;
-			  last_pc_addr_data[0] = bp_data[i][2];
-			  last_pc_addr_data[1] = bp_data[i][3];
-			}
+		      last_pc_addr = pc_addr;
+		      last_pc_addr_data[0] = bp_data[i][2];
+		      last_pc_addr_data[1] = bp_data[i][3];
 		    }
-		  else
+		}
+	      else
+		{
+		  if ((bp_data[i][1] & 0x80) != 0)
 		    {
-		      if ((bp_data[i][1] & 0x80) != 0)
-			{
-			  last_pc_addr = pc_addr;
-			  last_pc_addr_data[0] = bp_data[i][1];
-			  last_pc_addr_data[1] = bp_data[i][0];
-			}
+		      last_pc_addr = pc_addr;
+		      last_pc_addr_data[0] = bp_data[i][1];
+		      last_pc_addr_data[1] = bp_data[i][0];
 		    }
 		}
-	      break;
 	    }
+	  break;
 	}
+    }
 
-      /* Remove ib breakpoints. */
-      for (i = 0; i < ib_breakpoints; i++)
+  /* Remove ib breakpoints. */
+  for (i = 0; i < ib_breakpoints; i++)
+    {
+      if (bp_address[i] != 0xffffffff)
 	{
-	  if (bp_address[i] != 0xffffffff)
-	    {
-	      buf[0] = SDI_WRITE_MEMORY;
-	      store_long_parameter (buf + 1, 0xffff8000 + 4 * i);
-	      store_long_parameter (buf + 5, 4);
-	      buf[9] = ib_bp_entry_disable[0];
-	      buf[10] = ib_bp_entry_disable[1];
-	      buf[11] = ib_bp_entry_disable[2];
-	      buf[12] = ib_bp_entry_disable[3];
-	      send_data (buf, 13);
-	    }
+	  buf[0] = SDI_WRITE_MEMORY;
+	  store_long_parameter (buf + 1, 0xffff8000 + 4 * i);
+	  store_long_parameter (buf + 5, 4);
+	  buf[9] = ib_bp_entry_disable[0];
+	  buf[10] = ib_bp_entry_disable[1];
+	  buf[11] = ib_bp_entry_disable[2];
+	  buf[12] = ib_bp_entry_disable[3];
+	  send_data (buf, 13);
 	}
-      /* Remove dbt breakpoints. */
-      for (i = ib_breakpoints; i < MAX_BREAKPOINTS; i++)
+    }
+  /* Remove dbt breakpoints. */
+  for (i = ib_breakpoints; i < MAX_BREAKPOINTS; i++)
+    {
+      bp_addr = bp_address[i];
+      if (bp_addr != 0xffffffff)
 	{
-	  bp_addr = bp_address[i];
-	  if (bp_addr != 0xffffffff)
-	    {
-	      if (!mmu_on)
-		bp_addr &= 0x7fffffff;
-	      buf[0] = SDI_WRITE_MEMORY;
-	      store_long_parameter (buf + 1, bp_addr & 0xfffffffc);
-	      store_long_parameter (buf + 5, 4);
-	      buf[9] = bp_data[i][0];
-	      buf[10] = bp_data[i][1];
-	      buf[11] = bp_data[i][2];
-	      buf[12] = bp_data[i][3];
-	      send_data (buf, 13);
-	    }
+	  if (!mmu_on)
+	    bp_addr &= 0x7fffffff;
+	  buf[0] = SDI_WRITE_MEMORY;
+	  store_long_parameter (buf + 1, bp_addr & 0xfffffffc);
+	  store_long_parameter (buf + 5, 4);
+	  buf[9] = bp_data[i][0];
+	  buf[10] = bp_data[i][1];
+	  buf[11] = bp_data[i][2];
+	  buf[12] = bp_data[i][3];
+	  send_data (buf, 13);
 	}
+    }
 
-      /* Remove access breaks. */
-      hit_watchpoint_addr = 0;
-      for (i = 0; i < max_access_breaks; i++)
-	{
-	  if (ab_address[i] != 0x00000000)
+  /* Remove access breaks. */
+  hit_watchpoint_addr = 0;
+  for (i = 0; i < max_access_breaks; i++)
+    {
+      if (ab_address[i] != 0x00000000)
+	{
+	  buf[0] = SDI_READ_MEMORY;
+	  store_long_parameter (buf + 1, 0xffff8100 + 4 * i);
+	  store_long_parameter (buf + 5, 4);
+	  serial_write (sdi_desc, buf, 9);
+	  c = serial_readchar (sdi_desc, SDI_TIMEOUT);
+	  if (c != '-' && recv_data (buf, 4) != -1)
 	    {
-	      buf[0] = SDI_READ_MEMORY;
-	      store_long_parameter (buf + 1, 0xffff8100 + 4 * i);
-	      store_long_parameter (buf + 5, 4);
-	      serial_write (sdi_desc, buf, 9);
-	      c = serial_readchar (sdi_desc, SDI_TIMEOUT);
-	      if (c != '-' && recv_data (buf, 4) != -1)
+	      if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
 		{
-		  if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
-		    {
-		      if ((buf[3] & 0x1) == 0x1)
-			hit_watchpoint_addr = ab_address[i];
-		    }
-		  else
-		    {
-		      if ((buf[0] & 0x1) == 0x1)
-			hit_watchpoint_addr = ab_address[i];
-		    }
+		  if ((buf[3] & 0x1) == 0x1)
+		    hit_watchpoint_addr = ab_address[i];
+		}
+	      else
+		{
+		  if ((buf[0] & 0x1) == 0x1)
+		    hit_watchpoint_addr = ab_address[i];
 		}
-
-	      buf[0] = SDI_WRITE_MEMORY;
-	      store_long_parameter (buf + 1, 0xffff8100 + 4 * i);
-	      store_long_parameter (buf + 5, 4);
-	      store_long_parameter (buf + 9, 0x00000000);
-	      send_data (buf, 13);
 	    }
-	}
 
-      if (remote_debug)
-	fprintf_unfiltered (gdb_stdlog, "pc => 0x%lx\n", pc_addr);
+	  buf[0] = SDI_WRITE_MEMORY;
+	  store_long_parameter (buf + 1, 0xffff8100 + 4 * i);
+	  store_long_parameter (buf + 5, 4);
+	  store_long_parameter (buf + 9, 0x00000000);
+	  send_data (buf, 13);
+	}
     }
-  else
-    last_pc_addr = 0xffffffff;
+
+  if (remote_debug)
+    fprintf_unfiltered (gdb_stdlog, "pc => 0x%lx\n", pc_addr);
 
   return inferior_ptid;
 }
@@ -1540,11 +1552,11 @@
     {
       c = serial_readchar (sdi_desc, SDI_TIMEOUT);
       if (c < 0)
-        return;
+	return;
       buf[i] = c;
       if (c == 0)
-        break;
-    }    
+	break;
+    }
 
   printf_filtered ("%s", buf);
 }

  reply	other threads:[~2004-07-07  5:38 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-07-07  5:37 Kei Sakamoto
2004-07-07  5:38 ` Kei Sakamoto [this message]
2004-07-16 21:31   ` [RFA/m32r] Fix breakpoint bug of m32rsdi protocol; remote-m32r-sdi.c re-indented Andrew Cagney
2004-07-26  9:19     ` Kei Sakamoto
2004-07-26 15:14       ` Andrew Cagney
2004-07-27  1:17         ` Kei Sakamoto

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='021701c463e4$ab8749c0$5169910a@E5A02646' \
    --to=sakamoto.kei@renesas.com \
    --cc=gdb-patches@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