From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20686 invoked by alias); 7 Jul 2004 05:38:52 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 20436 invoked from network); 7 Jul 2004 05:38:51 -0000 Received: from unknown (HELO mail02.idc.renesas.com) (202.234.163.13) by sourceware.org with SMTP; 7 Jul 2004 05:38:51 -0000 Received: (from root@localhost) by guardian01.idc.renesas.com with id i675ckTs007815 for gdb-patches@sources.redhat.com; Wed, 7 Jul 2004 14:38:46 +0900 (JST) Received: from unknown [172.20.8.73] by guardian01.idc.renesas.com with SMTP id QAA07814 ; Wed, 7 Jul 2004 14:38:46 +0900 Received: from mrkaisv.hoku.renesas.com ([10.145.105.245]) by rnsmtp01.hoku_r.renesas.com (8.9.3/3.7W) with ESMTP id OAA22507 for ; Wed, 7 Jul 2004 14:38:45 +0900 (JST) Received: from E5A02646 (unknown [10.145.105.81]) by mrkaisv.hoku.renesas.com (Postfix) with SMTP id 557707980E2 for ; Wed, 7 Jul 2004 14:38:45 +0900 (JST) Message-ID: <021701c463e4$ab8749c0$5169910a@E5A02646> From: "Kei Sakamoto" To: References: <020801c463e4$6c92a660$5169910a@E5A02646> Subject: Re: [RFA/m32r] Fix breakpoint bug of m32rsdi protocol Date: Wed, 07 Jul 2004 05:38:00 -0000 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0214_01C46430.1B62BCC0" X-SW-Source: 2004-07/txt/msg00060.txt.bz2 This is a multi-part message in MIME format. ------=_NextPart_000_0214_01C46430.1B62BCC0 Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit Content-length: 752 I'm sorry. I forgot to attach the patch file. From: "Kei Sakamoto" To: 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 > f00024: e3 f0 10 04 ld24 r3,f01004 > > The attached patch fixes this problem. > > OK to commit? > > === > > 2004-07-07 Kei Sakamoto > > * remote-m32r-sdi.c: Fix breakpoint bug. > > ------=_NextPart_000_0214_01C46430.1B62BCC0 Content-Type: application/octet-stream; name="remote-m32r-sdi.c.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="remote-m32r-sdi.c.patch" Content-length: 21870 Index: remote-m32r-sdi.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /cvs/src/src/gdb/remote-m32r-sdi.c,v=0A= retrieving revision 1.4=0A= diff -u -r1.4 remote-m32r-sdi.c=0A= --- remote-m32r-sdi.c 15 Jun 2004 01:04:19 -0000 1.4=0A= +++ remote-m32r-sdi.c 7 Jul 2004 04:04:40 -0000=0A= @@ -161,7 +161,7 @@=0A= {=0A= int c;=0A= =20=0A= - if (!sdi_desc)=20=0A= + if (!sdi_desc)=0A= return -1;=0A= =20=0A= c =3D serial_readchar (sdi_desc, SDI_TIMEOUT);=0A= @@ -169,7 +169,7 @@=0A= if (c < 0)=0A= return -1;=0A= =20=0A= - if (c !=3D '+') /* error */=0A= + if (c !=3D '+') /* error */=0A= return -1;=0A= =20=0A= return 0;=0A= @@ -181,7 +181,7 @@=0A= {=0A= int ret;=0A= =20=0A= - if (!sdi_desc)=20=0A= + if (!sdi_desc)=0A= return -1;=0A= =20=0A= if (serial_write (sdi_desc, buf, len) !=3D 0)=0A= @@ -200,7 +200,7 @@=0A= int total =3D 0;=0A= int c;=0A= =20=0A= - if (!sdi_desc)=20=0A= + if (!sdi_desc)=0A= return -1;=0A= =20=0A= while (total < len)=0A= @@ -264,8 +264,7 @@=0A= /* This is called not only when we first attach, but also when the=0A= user types "run" after having attached. */=0A= static void=0A= -m32r_create_inferior (char *execfile, char *args, char **env,=0A= - int from_tty)=0A= +m32r_create_inferior (char *execfile, char *args, char **env, int from_tty= )=0A= {=0A= CORE_ADDR entry_pt;=0A= =20=0A= @@ -326,7 +325,7 @@=0A= {=0A= port_str =3D strchr (args, ':');=0A= if (port_str =3D=3D NULL)=0A= - sprintf (hostname, "%s:%d", args, SDIPORT);=0A= + sprintf (hostname, "%s:%d", args, SDIPORT);=0A= else=0A= strcpy (hostname, args);=0A= }=0A= @@ -409,6 +408,7 @@=0A= m32r_resume (ptid_t ptid, int step, enum target_signal sig)=0A= {=0A= unsigned long pc_addr, bp_addr, ab_addr;=0A= + int ib_breakpoints;=0A= unsigned char buf[13];=0A= int i;=0A= =20=0A= @@ -469,187 +469,205 @@=0A= }=0A= else=0A= {=0A= - int ib_breakpoints;=0A= + /* Unset PBP. */=0A= + buf[0] =3D SDI_WRITE_CPU_REG;=0A= + buf[1] =3D SDI_REG_PBP;=0A= + store_long_parameter (buf + 2, 0x00000000);=0A= + send_data (buf, 6);=0A= + }=0A= =20=0A= - if (use_ib_breakpoints)=0A= - ib_breakpoints =3D max_ib_breakpoints;=0A= + if (use_ib_breakpoints)=0A= + ib_breakpoints =3D max_ib_breakpoints;=0A= + else=0A= + ib_breakpoints =3D 0;=0A= +=0A= + /* Set ib breakpoints. */=0A= + for (i =3D 0; i < ib_breakpoints; i++)=0A= + {=0A= + bp_addr =3D bp_address[i];=0A= +=0A= + if (bp_addr =3D=3D 0xffffffff)=0A= + continue;=0A= +=0A= + /* Set PBP. */=0A= + buf[0] =3D SDI_WRITE_MEMORY;=0A= + store_long_parameter (buf + 1, 0xffff8000 + 4 * i);=0A= + store_long_parameter (buf + 5, 4);=0A= + if (TARGET_BYTE_ORDER =3D=3D BFD_ENDIAN_BIG)=0A= + {=0A= + buf[9] =3D ib_bp_entry_enable[0];=0A= + buf[10] =3D ib_bp_entry_enable[1];=0A= + buf[11] =3D ib_bp_entry_enable[2];=0A= + buf[12] =3D ib_bp_entry_enable[3];=0A= + }=0A= else=0A= - ib_breakpoints =3D 0;=0A= + {=0A= + buf[9] =3D ib_bp_entry_enable[3];=0A= + buf[10] =3D ib_bp_entry_enable[2];=0A= + buf[11] =3D ib_bp_entry_enable[1];=0A= + buf[12] =3D ib_bp_entry_enable[0];=0A= + }=0A= + send_data (buf, 13);=0A= +=0A= + buf[0] =3D SDI_WRITE_MEMORY;=0A= + store_long_parameter (buf + 1, 0xffff8080 + 4 * i);=0A= + store_long_parameter (buf + 5, 4);=0A= + store_unsigned_integer (buf + 9, 4, bp_addr);=0A= + send_data (buf, 13);=0A= + }=0A= =20=0A= - /* Set ib breakpoints. */=0A= - for (i =3D 0; i < ib_breakpoints; i++)=0A= + /* Set dbt breakpoints. */=0A= + for (i =3D ib_breakpoints; i < MAX_BREAKPOINTS; i++)=0A= + {=0A= + bp_addr =3D bp_address[i];=0A= +=0A= + if (bp_addr =3D=3D 0xffffffff)=0A= + continue;=0A= +=0A= + if (!mmu_on)=0A= + bp_addr &=3D 0x7fffffff;=0A= +=0A= + /* Write DBT instruction. */=0A= + buf[0] =3D SDI_WRITE_MEMORY;=0A= + store_long_parameter (buf + 1, bp_addr);=0A= + store_long_parameter (buf + 5, 4);=0A= + if ((bp_addr & 2) =3D=3D 0 && bp_addr !=3D (pc_addr & 0xfffffffc))= =0A= {=0A= - bp_addr =3D bp_address[i];=0A= - if (bp_addr !=3D 0xffffffff && bp_addr !=3D pc_addr)=0A= + if (TARGET_BYTE_ORDER =3D=3D BFD_ENDIAN_BIG)=0A= {=0A= - /* Set PBP. */=0A= - buf[0] =3D SDI_WRITE_MEMORY;=0A= - store_long_parameter (buf + 1, 0xffff8000 + 4 * i);=0A= - store_long_parameter (buf + 5, 4);=0A= - if (TARGET_BYTE_ORDER =3D=3D BFD_ENDIAN_BIG)=0A= - {=0A= - buf[9] =3D ib_bp_entry_enable[0];=0A= - buf[10] =3D ib_bp_entry_enable[1];=0A= - buf[11] =3D ib_bp_entry_enable[2];=0A= - buf[12] =3D ib_bp_entry_enable[3];=0A= - }=0A= - else=0A= - {=0A= - buf[9] =3D ib_bp_entry_enable[3];=0A= - buf[10] =3D ib_bp_entry_enable[2];=0A= - buf[11] =3D ib_bp_entry_enable[1];=0A= - buf[12] =3D ib_bp_entry_enable[0];=0A= - }=0A= - send_data (buf, 13);=0A= -=0A= - buf[0] =3D SDI_WRITE_MEMORY;=0A= - store_long_parameter (buf + 1, 0xffff8080 + 4 * i);=0A= - store_long_parameter (buf + 5, 4);=0A= - store_unsigned_integer (buf + 9, 4, bp_addr);=0A= - send_data (buf, 13);=0A= + buf[9] =3D dbt_bp_entry[0];=0A= + buf[10] =3D dbt_bp_entry[1];=0A= + buf[11] =3D dbt_bp_entry[2];=0A= + buf[12] =3D dbt_bp_entry[3];=0A= + }=0A= + else=0A= + {=0A= + buf[9] =3D dbt_bp_entry[3];=0A= + buf[10] =3D dbt_bp_entry[2];=0A= + buf[11] =3D dbt_bp_entry[1];=0A= + buf[12] =3D dbt_bp_entry[0];=0A= }=0A= }=0A= -=0A= - /* Set dbt breakpoints. */=0A= - for (i =3D ib_breakpoints; i < MAX_BREAKPOINTS; i++)=0A= + else=0A= {=0A= - bp_addr =3D bp_address[i];=0A= - if (bp_addr !=3D 0xffffffff && bp_addr !=3D pc_addr)=0A= + if (TARGET_BYTE_ORDER =3D=3D BFD_ENDIAN_BIG)=0A= {=0A= - if (!mmu_on)=0A= - bp_addr &=3D 0x7fffffff;=0A= -=0A= - /* Write DBT instruction. */=0A= - buf[0] =3D SDI_WRITE_MEMORY;=0A= - if ((bp_addr & 2) =3D=3D 0 && bp_addr !=3D (pc_addr & 0xfffffffc))= =0A= + if ((bp_addr & 2) =3D=3D 0)=0A= {=0A= - store_long_parameter (buf + 1, bp_addr);=0A= - store_long_parameter (buf + 5, 4);=0A= - if (TARGET_BYTE_ORDER =3D=3D BFD_ENDIAN_BIG)=0A= - {=0A= - buf[9] =3D dbt_bp_entry[0];=0A= - buf[10] =3D dbt_bp_entry[1];=0A= - buf[11] =3D dbt_bp_entry[2];=0A= - buf[12] =3D dbt_bp_entry[3];=0A= - }=0A= - else=0A= - {=0A= - buf[9] =3D dbt_bp_entry[3];=0A= - buf[10] =3D dbt_bp_entry[2];=0A= - buf[11] =3D dbt_bp_entry[1];=0A= - buf[12] =3D dbt_bp_entry[0];=0A= - }=0A= - send_data (buf, 13);=0A= + buf[9] =3D dbt_bp_entry[0];=0A= + buf[10] =3D dbt_bp_entry[1];=0A= + buf[11] =3D bp_data[i][2] & 0x7f;=0A= + buf[12] =3D bp_data[i][3];=0A= }=0A= else=0A= {=0A= - if (TARGET_BYTE_ORDER =3D=3D BFD_ENDIAN_BIG)=0A= - store_long_parameter (buf + 1, bp_addr);=0A= - else if ((bp_addr & 2) =3D=3D 0)=0A= - store_long_parameter (buf + 1, bp_addr + 2);=0A= - else=0A= - store_long_parameter (buf + 1, bp_addr - 2);=0A= - store_long_parameter (buf + 5, 2);=0A= - if (TARGET_BYTE_ORDER =3D=3D BFD_ENDIAN_BIG)=0A= - {=0A= - buf[9] =3D dbt_bp_entry[0];=0A= - buf[10] =3D dbt_bp_entry[1];=0A= - }=0A= - else=0A= - {=0A= - buf[9] =3D dbt_bp_entry[1];=0A= - buf[10] =3D dbt_bp_entry[0];=0A= - }=0A= - send_data (buf, 11);=0A= + buf[9] =3D bp_data[i][0];=0A= + buf[10] =3D bp_data[i][1];=0A= + buf[11] =3D dbt_bp_entry[0];=0A= + buf[12] =3D dbt_bp_entry[1];=0A= }=0A= }=0A= - }=0A= -=0A= - /* Set access breaks. */=0A= - for (i =3D 0; i < max_access_breaks; i++)=0A= - {=0A= - ab_addr =3D ab_address[i];=0A= - if (ab_addr !=3D 0x00000000)=0A= + else=0A= {=0A= - /* DBC register */=0A= - buf[0] =3D SDI_WRITE_MEMORY;=0A= - store_long_parameter (buf + 1, 0xffff8100 + 4 * i);=0A= - store_long_parameter (buf + 5, 4);=0A= - if (TARGET_BYTE_ORDER =3D=3D BFD_ENDIAN_BIG)=0A= + if ((bp_addr & 2) =3D=3D 0)=0A= {=0A= - buf[9] =3D 0x00;=0A= - buf[10] =3D 0x00;=0A= - buf[11] =3D 0x00;=0A= - switch (ab_type[i])=0A= - {=0A= - case 0: /* write watch */=0A= - buf[12] =3D 0x86;=0A= - break;=0A= - case 1: /* read watch */=0A= - buf[12] =3D 0x46;=0A= - break;=0A= - case 2: /* access watch */=0A= - buf[12] =3D 0x06;=0A= - break;=0A= - }=0A= + buf[9] =3D bp_data[i][0];=0A= + buf[10] =3D bp_data[i][1] & 0x7f;=0A= + buf[11] =3D dbt_bp_entry[1];=0A= + buf[12] =3D dbt_bp_entry[0];=0A= }=0A= else=0A= {=0A= - switch (ab_type[i])=0A= - {=0A= - case 0: /* write watch */=0A= - buf[9] =3D 0x86;=0A= - break;=0A= - case 1: /* read watch */=0A= - buf[9] =3D 0x46;=0A= - break;=0A= - case 2: /* access watch */=0A= - buf[9] =3D 0x06;=0A= - break;=0A= - }=0A= - buf[10] =3D 0x00;=0A= - buf[11] =3D 0x00;=0A= - buf[12] =3D 0x00;=0A= + buf[9] =3D dbt_bp_entry[1];=0A= + buf[10] =3D dbt_bp_entry[0];=0A= + buf[11] =3D bp_data[i][2];=0A= + buf[12] =3D bp_data[i][3];=0A= }=0A= - send_data (buf, 13);=0A= -=0A= - /* DBAH register */=0A= - buf[0] =3D SDI_WRITE_MEMORY;=0A= - store_long_parameter (buf + 1, 0xffff8180 + 4 * i);=0A= - store_long_parameter (buf + 5, 4);=0A= - store_unsigned_integer (buf + 9, 4, ab_addr);=0A= - send_data (buf, 13);=0A= + }=0A= + }=0A= + send_data (buf, 13);=0A= + }=0A= =20=0A= - /* DBAL register */=0A= - buf[0] =3D SDI_WRITE_MEMORY;=0A= - store_long_parameter (buf + 1, 0xffff8200 + 4 * i);=0A= - store_long_parameter (buf + 5, 4);=0A= - store_long_parameter (buf + 9, 0xffffffff);=0A= - send_data (buf, 13);=0A= + /* Set access breaks. */=0A= + for (i =3D 0; i < max_access_breaks; i++)=0A= + {=0A= + ab_addr =3D ab_address[i];=0A= =20=0A= - /* DBD register */=0A= - buf[0] =3D SDI_WRITE_MEMORY;=0A= - store_long_parameter (buf + 1, 0xffff8280 + 4 * i);=0A= - store_long_parameter (buf + 5, 4);=0A= - store_long_parameter (buf + 9, 0x00000000);=0A= - send_data (buf, 13);=0A= + if (ab_addr =3D=3D 0x00000000)=0A= + continue;=0A= =20=0A= - /* DBDM register */=0A= - buf[0] =3D SDI_WRITE_MEMORY;=0A= - store_long_parameter (buf + 1, 0xffff8300 + 4 * i);=0A= - store_long_parameter (buf + 5, 4);=0A= - store_long_parameter (buf + 9, 0x00000000);=0A= - send_data (buf, 13);=0A= + /* DBC register */=0A= + buf[0] =3D SDI_WRITE_MEMORY;=0A= + store_long_parameter (buf + 1, 0xffff8100 + 4 * i);=0A= + store_long_parameter (buf + 5, 4);=0A= + if (TARGET_BYTE_ORDER =3D=3D BFD_ENDIAN_BIG)=0A= + {=0A= + buf[9] =3D 0x00;=0A= + buf[10] =3D 0x00;=0A= + buf[11] =3D 0x00;=0A= + switch (ab_type[i])=0A= + {=0A= + case 0: /* write watch */=0A= + buf[12] =3D 0x86;=0A= + break;=0A= + case 1: /* read watch */=0A= + buf[12] =3D 0x46;=0A= + break;=0A= + case 2: /* access watch */=0A= + buf[12] =3D 0x06;=0A= + break;=0A= + }=0A= + }=0A= + else=0A= + {=0A= + switch (ab_type[i])=0A= + {=0A= + case 0: /* write watch */=0A= + buf[9] =3D 0x86;=0A= + break;=0A= + case 1: /* read watch */=0A= + buf[9] =3D 0x46;=0A= + break;=0A= + case 2: /* access watch */=0A= + buf[9] =3D 0x06;=0A= + break;=0A= }=0A= + buf[10] =3D 0x00;=0A= + buf[11] =3D 0x00;=0A= + buf[12] =3D 0x00;=0A= }=0A= + send_data (buf, 13);=0A= =20=0A= - /* Unset PBP. */=0A= - buf[0] =3D SDI_WRITE_CPU_REG;=0A= - buf[1] =3D SDI_REG_PBP;=0A= - store_long_parameter (buf + 2, 0x00000000);=0A= - send_data (buf, 6);=0A= + /* DBAH register */=0A= + buf[0] =3D SDI_WRITE_MEMORY;=0A= + store_long_parameter (buf + 1, 0xffff8180 + 4 * i);=0A= + store_long_parameter (buf + 5, 4);=0A= + store_unsigned_integer (buf + 9, 4, ab_addr);=0A= + send_data (buf, 13);=0A= +=0A= + /* DBAL register */=0A= + buf[0] =3D SDI_WRITE_MEMORY;=0A= + store_long_parameter (buf + 1, 0xffff8200 + 4 * i);=0A= + store_long_parameter (buf + 5, 4);=0A= + store_long_parameter (buf + 9, 0xffffffff);=0A= + send_data (buf, 13);=0A= +=0A= + /* DBD register */=0A= + buf[0] =3D SDI_WRITE_MEMORY;=0A= + store_long_parameter (buf + 1, 0xffff8280 + 4 * i);=0A= + store_long_parameter (buf + 5, 4);=0A= + store_long_parameter (buf + 9, 0x00000000);=0A= + send_data (buf, 13);=0A= +=0A= + /* DBDM register */=0A= + buf[0] =3D SDI_WRITE_MEMORY;=0A= + store_long_parameter (buf + 1, 0xffff8300 + 4 * i);=0A= + store_long_parameter (buf + 5, 4);=0A= + store_long_parameter (buf + 9, 0x00000000);=0A= + send_data (buf, 13);=0A= }=0A= =20=0A= + /* Resume program. */=0A= buf[0] =3D SDI_EXEC_CPU;=0A= send_data (buf, 1);=0A= =20=0A= @@ -680,6 +698,7 @@=0A= {=0A= static RETSIGTYPE (*prev_sigint) ();=0A= unsigned long bp_addr, pc_addr;=0A= + int ib_breakpoints;=0A= long i;=0A= unsigned char buf[13];=0A= unsigned long val;=0A= @@ -705,7 +724,7 @@=0A= if (c < 0)=0A= error ("Remote connection closed");=0A= =20=0A= - if (c =3D=3D '-') /* error */=0A= + if (c =3D=3D '-') /* error */=0A= {=0A= status->kind =3D TARGET_WAITKIND_STOPPED;=0A= status->value.sig =3D TARGET_SIGNAL_HUP;=0A= @@ -747,130 +766,123 @@=0A= last_pc_addr =3D 0xffffffff;=0A= }=0A= =20=0A= - /* Breakpoints are inserted only for "next" command */=0A= - if (!step_mode)=0A= - {=0A= - int ib_breakpoints;=0A= -=0A= - if (use_ib_breakpoints)=0A= - ib_breakpoints =3D max_ib_breakpoints;=0A= - else=0A= - ib_breakpoints =3D 0;=0A= + if (use_ib_breakpoints)=0A= + ib_breakpoints =3D max_ib_breakpoints;=0A= + else=0A= + ib_breakpoints =3D 0;=0A= =20=0A= - /* Set back pc by 2 if m32r is stopped with dbt. */=0A= - buf[0] =3D SDI_READ_CPU_REG;=0A= - buf[1] =3D SDI_REG_BPC;=0A= - send_data (buf, 2);=0A= - recv_data (&val, 4);=0A= - pc_addr =3D ntohl (val) - 2;=0A= - for (i =3D ib_breakpoints; i < MAX_BREAKPOINTS; i++)=0A= + /* Set back pc by 2 if m32r is stopped with dbt. */=0A= + last_pc_addr =3D 0xffffffff;=0A= + buf[0] =3D SDI_READ_CPU_REG;=0A= + buf[1] =3D SDI_REG_BPC;=0A= + send_data (buf, 2);=0A= + recv_data (&val, 4);=0A= + pc_addr =3D ntohl (val) - 2;=0A= + for (i =3D ib_breakpoints; i < MAX_BREAKPOINTS; i++)=0A= + {=0A= + if (pc_addr =3D=3D bp_address[i])=0A= {=0A= - if (pc_addr =3D=3D bp_address[i])=0A= + buf[0] =3D SDI_WRITE_CPU_REG;=0A= + buf[1] =3D SDI_REG_BPC;=0A= + store_long_parameter (buf + 2, pc_addr);=0A= + send_data (buf, 6);=0A= +=0A= + /* If there is a parallel instruction with +2 offset at pc=0A= + address, we have to take care of it later. */=0A= + if ((pc_addr & 0x2) !=3D 0)=0A= {=0A= - buf[0] =3D SDI_WRITE_CPU_REG;=0A= - buf[1] =3D SDI_REG_BPC;=0A= - store_long_parameter (buf + 2, pc_addr);=0A= - send_data (buf, 6);=0A= -=0A= - /* If there is a parallel instruction with +2 offset at pc=0A= - address, we have to take care of it later. */=0A= - if ((pc_addr & 0x2) !=3D 0)=0A= + if (TARGET_BYTE_ORDER =3D=3D BFD_ENDIAN_BIG)=0A= {=0A= - if (TARGET_BYTE_ORDER =3D=3D BFD_ENDIAN_BIG)=0A= + if ((bp_data[i][2] & 0x80) !=3D 0)=0A= {=0A= - if ((bp_data[i][2] & 0x80) !=3D 0)=0A= - {=0A= - last_pc_addr =3D pc_addr;=0A= - last_pc_addr_data[0] =3D bp_data[i][2];=0A= - last_pc_addr_data[1] =3D bp_data[i][3];=0A= - }=0A= + last_pc_addr =3D pc_addr;=0A= + last_pc_addr_data[0] =3D bp_data[i][2];=0A= + last_pc_addr_data[1] =3D bp_data[i][3];=0A= }=0A= - else=0A= + }=0A= + else=0A= + {=0A= + if ((bp_data[i][1] & 0x80) !=3D 0)=0A= {=0A= - if ((bp_data[i][1] & 0x80) !=3D 0)=0A= - {=0A= - last_pc_addr =3D pc_addr;=0A= - last_pc_addr_data[0] =3D bp_data[i][1];=0A= - last_pc_addr_data[1] =3D bp_data[i][0];=0A= - }=0A= + last_pc_addr =3D pc_addr;=0A= + last_pc_addr_data[0] =3D bp_data[i][1];=0A= + last_pc_addr_data[1] =3D bp_data[i][0];=0A= }=0A= }=0A= - break;=0A= }=0A= + break;=0A= }=0A= + }=0A= =20=0A= - /* Remove ib breakpoints. */=0A= - for (i =3D 0; i < ib_breakpoints; i++)=0A= + /* Remove ib breakpoints. */=0A= + for (i =3D 0; i < ib_breakpoints; i++)=0A= + {=0A= + if (bp_address[i] !=3D 0xffffffff)=0A= {=0A= - if (bp_address[i] !=3D 0xffffffff)=0A= - {=0A= - buf[0] =3D SDI_WRITE_MEMORY;=0A= - store_long_parameter (buf + 1, 0xffff8000 + 4 * i);=0A= - store_long_parameter (buf + 5, 4);=0A= - buf[9] =3D ib_bp_entry_disable[0];=0A= - buf[10] =3D ib_bp_entry_disable[1];=0A= - buf[11] =3D ib_bp_entry_disable[2];=0A= - buf[12] =3D ib_bp_entry_disable[3];=0A= - send_data (buf, 13);=0A= - }=0A= + buf[0] =3D SDI_WRITE_MEMORY;=0A= + store_long_parameter (buf + 1, 0xffff8000 + 4 * i);=0A= + store_long_parameter (buf + 5, 4);=0A= + buf[9] =3D ib_bp_entry_disable[0];=0A= + buf[10] =3D ib_bp_entry_disable[1];=0A= + buf[11] =3D ib_bp_entry_disable[2];=0A= + buf[12] =3D ib_bp_entry_disable[3];=0A= + send_data (buf, 13);=0A= }=0A= - /* Remove dbt breakpoints. */=0A= - for (i =3D ib_breakpoints; i < MAX_BREAKPOINTS; i++)=0A= + }=0A= + /* Remove dbt breakpoints. */=0A= + for (i =3D ib_breakpoints; i < MAX_BREAKPOINTS; i++)=0A= + {=0A= + bp_addr =3D bp_address[i];=0A= + if (bp_addr !=3D 0xffffffff)=0A= {=0A= - bp_addr =3D bp_address[i];=0A= - if (bp_addr !=3D 0xffffffff)=0A= - {=0A= - if (!mmu_on)=0A= - bp_addr &=3D 0x7fffffff;=0A= - buf[0] =3D SDI_WRITE_MEMORY;=0A= - store_long_parameter (buf + 1, bp_addr & 0xfffffffc);=0A= - store_long_parameter (buf + 5, 4);=0A= - buf[9] =3D bp_data[i][0];=0A= - buf[10] =3D bp_data[i][1];=0A= - buf[11] =3D bp_data[i][2];=0A= - buf[12] =3D bp_data[i][3];=0A= - send_data (buf, 13);=0A= - }=0A= + if (!mmu_on)=0A= + bp_addr &=3D 0x7fffffff;=0A= + buf[0] =3D SDI_WRITE_MEMORY;=0A= + store_long_parameter (buf + 1, bp_addr & 0xfffffffc);=0A= + store_long_parameter (buf + 5, 4);=0A= + buf[9] =3D bp_data[i][0];=0A= + buf[10] =3D bp_data[i][1];=0A= + buf[11] =3D bp_data[i][2];=0A= + buf[12] =3D bp_data[i][3];=0A= + send_data (buf, 13);=0A= }=0A= + }=0A= =20=0A= - /* Remove access breaks. */=0A= - hit_watchpoint_addr =3D 0;=0A= - for (i =3D 0; i < max_access_breaks; i++)=0A= - {=0A= - if (ab_address[i] !=3D 0x00000000)=0A= + /* Remove access breaks. */=0A= + hit_watchpoint_addr =3D 0;=0A= + for (i =3D 0; i < max_access_breaks; i++)=0A= + {=0A= + if (ab_address[i] !=3D 0x00000000)=0A= + {=0A= + buf[0] =3D SDI_READ_MEMORY;=0A= + store_long_parameter (buf + 1, 0xffff8100 + 4 * i);=0A= + store_long_parameter (buf + 5, 4);=0A= + serial_write (sdi_desc, buf, 9);=0A= + c =3D serial_readchar (sdi_desc, SDI_TIMEOUT);=0A= + if (c !=3D '-' && recv_data (buf, 4) !=3D -1)=0A= {=0A= - buf[0] =3D SDI_READ_MEMORY;=0A= - store_long_parameter (buf + 1, 0xffff8100 + 4 * i);=0A= - store_long_parameter (buf + 5, 4);=0A= - serial_write (sdi_desc, buf, 9);=0A= - c =3D serial_readchar (sdi_desc, SDI_TIMEOUT);=0A= - if (c !=3D '-' && recv_data (buf, 4) !=3D -1)=0A= + if (TARGET_BYTE_ORDER =3D=3D BFD_ENDIAN_BIG)=0A= {=0A= - if (TARGET_BYTE_ORDER =3D=3D BFD_ENDIAN_BIG)=0A= - {=0A= - if ((buf[3] & 0x1) =3D=3D 0x1)=0A= - hit_watchpoint_addr =3D ab_address[i];=0A= - }=0A= - else=0A= - {=0A= - if ((buf[0] & 0x1) =3D=3D 0x1)=0A= - hit_watchpoint_addr =3D ab_address[i];=0A= - }=0A= + if ((buf[3] & 0x1) =3D=3D 0x1)=0A= + hit_watchpoint_addr =3D ab_address[i];=0A= + }=0A= + else=0A= + {=0A= + if ((buf[0] & 0x1) =3D=3D 0x1)=0A= + hit_watchpoint_addr =3D ab_address[i];=0A= }=0A= -=0A= - buf[0] =3D SDI_WRITE_MEMORY;=0A= - store_long_parameter (buf + 1, 0xffff8100 + 4 * i);=0A= - store_long_parameter (buf + 5, 4);=0A= - store_long_parameter (buf + 9, 0x00000000);=0A= - send_data (buf, 13);=0A= }=0A= - }=0A= =20=0A= - if (remote_debug)=0A= - fprintf_unfiltered (gdb_stdlog, "pc =3D> 0x%lx\n", pc_addr);=0A= + buf[0] =3D SDI_WRITE_MEMORY;=0A= + store_long_parameter (buf + 1, 0xffff8100 + 4 * i);=0A= + store_long_parameter (buf + 5, 4);=0A= + store_long_parameter (buf + 9, 0x00000000);=0A= + send_data (buf, 13);=0A= + }=0A= }=0A= - else=0A= - last_pc_addr =3D 0xffffffff;=0A= +=0A= + if (remote_debug)=0A= + fprintf_unfiltered (gdb_stdlog, "pc =3D> 0x%lx\n", pc_addr);=0A= =20=0A= return inferior_ptid;=0A= }=0A= @@ -1540,11 +1552,11 @@=0A= {=0A= c =3D serial_readchar (sdi_desc, SDI_TIMEOUT);=0A= if (c < 0)=0A= - return;=0A= + return;=0A= buf[i] =3D c;=0A= if (c =3D=3D 0)=0A= - break;=0A= - }=20=20=20=20=0A= + break;=0A= + }=0A= =20=0A= printf_filtered ("%s", buf);=0A= }=0A= ------=_NextPart_000_0214_01C46430.1B62BCC0--