From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5888 invoked by alias); 16 Jan 2004 03:26:37 -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 5880 invoked from network); 16 Jan 2004 03:26:33 -0000 Received: from unknown (HELO mail01.idc.renesas.com) (202.234.163.13) by sources.redhat.com with SMTP; 16 Jan 2004 03:26:33 -0000 Received: (from root@localhost) by guardian05.idc.renesas.com with id i0G3QUeK028753; Fri, 16 Jan 2004 12:26:30 +0900 (JST) Received: from unknown [172.20.8.71] by guardian05.idc.renesas.com with SMTP id NAA28752 ; Fri, 16 Jan 2004 12:26:30 +0900 Received: from dnma02 (dnma02.rso.renesas.com [10.15.11.200]) by dnma01.rso.renesas.com (iPlanet Messaging Server 5.2 HotFix 1.12 (built Feb 13 2003)) with ESMTP id <0HRK00AOFC84W1@dnma01.rso.renesas.com>; Fri, 16 Jan 2004 12:26:28 +0900 (JST) Received: from t1pcapricot.tool.maec.co.jp ([10.145.105.37]) by dnma02.rso.renesas.com (iPlanet Messaging Server 5.2 HotFix 1.12 (built Feb 13 2003)) with SMTP id <0HRK00260C83ON@dnma02.rso.renesas.com>; Fri, 16 Jan 2004 12:26:28 +0900 (JST) Date: Fri, 16 Jan 2004 03:26:00 -0000 From: Kazuhiro Inaoka Subject: [PATCH] fix trap in parallel for m32r-sim To: Andrew Cagney Cc: gdb-patches@sources.redhat.com Message-id: <005301c3dbe1$6352c840$2569910a@tool.maec.co.jp> MIME-version: 1.0 Content-type: multipart/mixed; boundary="Boundary_(ID_XQLwfK7LWtt3LXdlwZbK8A)" X-SW-Source: 2004-01/txt/msg00403.txt.bz2 This is a multi-part message in MIME format. --Boundary_(ID_XQLwfK7LWtt3LXdlwZbK8A) Content-type: text/plain; charset=iso-2022-jp Content-transfer-encoding: 7BIT Content-length: 381 Hi Andrew, This is a patch for illegal trap operation in parallel. Please commit it. sim/m32r/ChangeLog 2004-01-16 Kazuhiro Inaoka < inaoka dot kazuhiro at renesas dot com > * mloopx.in (emit_parallel,emit_full_parallel,xextract-pbb): Fixed trap operation in parallel. * mloop2.in (emit_parallel,emit_full_parallel,xextract-pbb): Ditto. Regards, Kazuhiro Inaoka --Boundary_(ID_XQLwfK7LWtt3LXdlwZbK8A) Content-type: application/octet-stream; name=sim.patch Content-transfer-encoding: quoted-printable Content-disposition: attachment; filename=sim.patch Content-length: 7384 Index: mloop2.in=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/sim/m32r/mloop2.in,v=0A= retrieving revision 1.1=0A= diff -c -r1.1 mloop2.in=0A= *** mloop2.in 12 Dec 2003 16:35:21 -0000 1.1=0A= --- mloop2.in 16 Jan 2004 03:02:56 -0000=0A= ***************=0A= *** 107,112 ****=0A= --- 107,121 ----=0A= with the first insn. */=0A= /* ??? Revisit to handle exceptions right. */=0A= =20=20=0A= + /* FIXME: trap in parallel */=0A= + if (((insn >> 16) & 0xfff0) =3D=3D 0x10f0)=0A= + {=0A= + /* FIXME: "trap || insn" =3D=3D> "insn -> trap" */=0A= + id =3D emit_16 (current_cpu, pc + 2, insn & 0x7fff, sc, fast_p, 0);= =0A= + id2 =3D emit_16 (current_cpu, pc, insn >> 16, sc + 1, fast_p, 0);= =0A= + return id;=0A= + }=0A= +=20=0A= /* FIXME: No need to handle this parallely if second is nop. */=0A= id =3D emit_16 (current_cpu, pc, insn >> 16, sc, fast_p, 1);=0A= =20=20=0A= ***************=0A= *** 136,141 ****=0A= --- 145,159 ----=0A= with the first insn. */=0A= /* ??? Revisit to handle exceptions right. */=0A= =20=20=0A= + /* FIXME: trap in parallel */=0A= + if (((insn >> 16) & 0xfff0) =3D=3D 0x10f0)=0A= + {=0A= + /* FIXME: "trap || insn" =3D=3D> "insn -> trap" */=0A= + id =3D emit_full16 (current_cpu, pc + 2, insn & 0x7fff, sc, 0, 0);= =0A= + id2 =3D emit_full16 (current_cpu, pc, insn >> 16, sc + 3, 0, 0);=0A= + return id;=0A= + }=0A= +=20=0A= @cpu@_emit_before (current_cpu, sc, pc, 1);=0A= =20=20=0A= /* FIXME: No need to handle this parallelly if second is nop. */=0A= ***************=0A= *** 289,303 ****=0A= {=0A= if ((insn & 0x8000) !=3D 0) /* parallel? */=0A= {=0A= /* Yep. Here's the "interesting" [sic] part. */=0A= idesc =3D emit_parallel (current_cpu, pc, insn, sc, 1);=0A= ! sc +=3D 3;=0A= ! max_insns -=3D 3;=0A= icount +=3D 2;=0A= pc +=3D 4;=0A= if (IDESC_CTI_P (idesc))=0A= {=0A= ! SET_CTI_VPC (sc - 3);=0A= break;=0A= }=0A= }=0A= --- 307,326 ----=0A= {=0A= if ((insn & 0x8000) !=3D 0) /* parallel? */=0A= {=0A= + int up_count =3D 3;=0A= + /* FIXME: trap in parallel */=0A= + if (((insn >> 16) & 0xfff0) =3D=3D 0x10f0)=0A= + up_count =3D 2;=0A= +=20=0A= /* Yep. Here's the "interesting" [sic] part. */=0A= idesc =3D emit_parallel (current_cpu, pc, insn, sc, 1);=0A= ! sc +=3D up_count;=0A= ! max_insns -=3D up_count;=0A= icount +=3D 2;=0A= pc +=3D 4;=0A= if (IDESC_CTI_P (idesc))=0A= {=0A= ! SET_CTI_VPC (sc - up_count);=0A= break;=0A= }=0A= }=0A= ***************=0A= *** 383,392 ****=0A= }=0A= else=0A= {=0A= idesc =3D emit_parallel (current_cpu, pc, insn, sc, 0);=0A= cti_sc =3D sc;=0A= ! sc +=3D 3;=0A= ! max_insns -=3D 3;=0A= }=0A= icount +=3D 2;=0A= pc +=3D 4;=0A= --- 406,420 ----=0A= }=0A= else=0A= {=0A= + int up_count =3D 3;=0A= + /* FIXME: trap in parallel */=0A= + if (((insn >> 16) & 0xfff0) =3D=3D 0x10f0)=0A= + up_count =3D 2;=0A= +=20=0A= idesc =3D emit_parallel (current_cpu, pc, insn, sc, 0);=0A= cti_sc =3D sc;=0A= ! sc +=3D up_count;=0A= ! max_insns -=3D up_count;=0A= }=0A= icount +=3D 2;=0A= pc +=3D 4;=0A= Index: mloopx.in=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/sim/m32r/mloopx.in,v=0A= retrieving revision 1.1.1.1=0A= diff -c -r1.1.1.1 mloopx.in=0A= *** mloopx.in 12 Oct 1999 04:37:53 -0000 1.1.1.1=0A= --- mloopx.in 16 Jan 2004 03:02:57 -0000=0A= ***************=0A= *** 107,112 ****=0A= --- 107,121 ----=0A= with the first insn. */=0A= /* ??? Revisit to handle exceptions right. */=0A= =20=20=0A= + /* FIXME: trap in parallel */=0A= + if (((insn >> 16) & 0xfff0) =3D=3D 0x10f0)=0A= + {=0A= + /* FIXME: "trap || insn" =3D=3D> "insn -> trap" */=0A= + id =3D emit_16 (current_cpu, pc + 2, insn & 0x7fff, sc, fast_p, 0);= =0A= + id2 =3D emit_16 (current_cpu, pc, insn >> 16, sc + 1, fast_p, 0);= =0A= + return id;=0A= + }=0A= +=20=0A= /* FIXME: No need to handle this parallely if second is nop. */=0A= id =3D emit_16 (current_cpu, pc, insn >> 16, sc, fast_p, 1);=0A= =20=20=0A= ***************=0A= *** 136,141 ****=0A= --- 145,159 ----=0A= with the first insn. */=0A= /* ??? Revisit to handle exceptions right. */=0A= =20=20=0A= + /* FIXME: trap in parallel */=0A= + if (((insn >> 16) & 0xfff0) =3D=3D 0x10f0)=0A= + {=0A= + /* FIXME: "trap || insn" =3D=3D> "insn -> trap" */=0A= + id =3D emit_full16 (current_cpu, pc + 2, insn & 0x7fff, sc, 0, 0);= =0A= + id2 =3D emit_full16 (current_cpu, pc, insn >> 16, sc + 3, 0, 0);=0A= + return id;=0A= + }=0A= +=20=0A= @cpu@_emit_before (current_cpu, sc, pc, 1);=0A= =20=20=0A= /* FIXME: No need to handle this parallelly if second is nop. */=0A= ***************=0A= *** 289,303 ****=0A= {=0A= if ((insn & 0x8000) !=3D 0) /* parallel? */=0A= {=0A= /* Yep. Here's the "interesting" [sic] part. */=0A= idesc =3D emit_parallel (current_cpu, pc, insn, sc, 1);=0A= ! sc +=3D 3;=0A= ! max_insns -=3D 3;=0A= icount +=3D 2;=0A= pc +=3D 4;=0A= if (IDESC_CTI_P (idesc))=0A= {=0A= ! SET_CTI_VPC (sc - 3);=0A= break;=0A= }=0A= }=0A= --- 307,326 ----=0A= {=0A= if ((insn & 0x8000) !=3D 0) /* parallel? */=0A= {=0A= + int up_count =3D 3;=0A= + /* FIXME: trap in parallel */=0A= + if (((insn >> 16) & 0xfff0) =3D=3D 0x10f0)=0A= + up_count =3D 2;=0A= +=20=0A= /* Yep. Here's the "interesting" [sic] part. */=0A= idesc =3D emit_parallel (current_cpu, pc, insn, sc, 1);=0A= ! sc +=3D up_count;=0A= ! max_insns -=3D up_count;=0A= icount +=3D 2;=0A= pc +=3D 4;=0A= if (IDESC_CTI_P (idesc))=0A= {=0A= ! SET_CTI_VPC (sc - up_count);=0A= break;=0A= }=0A= }=0A= ***************=0A= *** 383,392 ****=0A= }=0A= else=0A= {=0A= idesc =3D emit_parallel (current_cpu, pc, insn, sc, 0);=0A= cti_sc =3D sc;=0A= ! sc +=3D 3;=0A= ! max_insns -=3D 3;=0A= }=0A= icount +=3D 2;=0A= pc +=3D 4;=0A= --- 406,420 ----=0A= }=0A= else=0A= {=0A= + int up_count =3D 3;=0A= + /* FIXME: trap in parallel */=0A= + if (((insn >> 16) & 0xfff0) =3D=3D 0x10f0)=0A= + up_count =3D 2;=0A= +=20=0A= idesc =3D emit_parallel (current_cpu, pc, insn, sc, 0);=0A= cti_sc =3D sc;=0A= ! sc +=3D up_count;=0A= ! max_insns -=3D up_count;=0A= }=0A= icount +=3D 2;=0A= pc +=3D 4;=0A= --Boundary_(ID_XQLwfK7LWtt3LXdlwZbK8A)--