aboutsummaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>2009-11-04 05:16:33 +0000
committerDoug Evans <dje@google.com>2009-11-04 05:16:33 +0000
commit1a5691a5c5ba6d654a10172f6e69a823c0c5764e (patch)
treec644ace24a85210c64794223eda76ddf35b36ab1 /sim
parente9c60591766341af909787c6274576425a73d798 (diff)
downloadgdb-1a5691a5c5ba6d654a10172f6e69a823c0c5764e.zip
gdb-1a5691a5c5ba6d654a10172f6e69a823c0c5764e.tar.gz
gdb-1a5691a5c5ba6d654a10172f6e69a823c0c5764e.tar.bz2
* arch.c: Regenerate.
* arch.h: Regenerate. * cpu.c: Regenerate. * cpu.h: Regenerate. * cpuall.h: Regenerate. * decode.c: Regenerate. * decode.h: Regenerate. * model.c: Regenerate. * sem-switch.c: Regenerate. * sem.c: Regenerate.
Diffstat (limited to 'sim')
-rw-r--r--sim/iq2000/ChangeLog13
-rw-r--r--sim/iq2000/arch.c23
-rw-r--r--sim/iq2000/arch.h23
-rw-r--r--sim/iq2000/cpu.c23
-rw-r--r--sim/iq2000/cpu.h23
-rw-r--r--sim/iq2000/cpuall.h23
-rw-r--r--sim/iq2000/decode.c631
-rw-r--r--sim/iq2000/decode.h41
-rw-r--r--sim/iq2000/model.c25
-rw-r--r--sim/iq2000/sem-switch.c52
-rw-r--r--sim/iq2000/sem.c51
11 files changed, 609 insertions, 319 deletions
diff --git a/sim/iq2000/ChangeLog b/sim/iq2000/ChangeLog
index 1aa7918..e034ca3 100644
--- a/sim/iq2000/ChangeLog
+++ b/sim/iq2000/ChangeLog
@@ -1,3 +1,16 @@
+2009-11-03 Doug Evans <dje@sebabeach.org>
+
+ * arch.c: Regenerate.
+ * arch.h: Regenerate.
+ * cpu.c: Regenerate.
+ * cpu.h: Regenerate.
+ * cpuall.h: Regenerate.
+ * decode.c: Regenerate.
+ * decode.h: Regenerate.
+ * model.c: Regenerate.
+ * sem-switch.c: Regenerate.
+ * sem.c: Regenerate.
+
2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* config.in: Regenerate.
diff --git a/sim/iq2000/arch.c b/sim/iq2000/arch.c
index 0be641d..6b8c929 100644
--- a/sim/iq2000/arch.c
+++ b/sim/iq2000/arch.c
@@ -2,22 +2,23 @@
THIS FILE IS MACHINE GENERATED WITH CGEN.
-Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+Copyright 1996-2009 Free Software Foundation, Inc.
This file is part of the GNU simulators.
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+ It is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
diff --git a/sim/iq2000/arch.h b/sim/iq2000/arch.h
index 14ceb89..2ebcdb9 100644
--- a/sim/iq2000/arch.h
+++ b/sim/iq2000/arch.h
@@ -2,22 +2,23 @@
THIS FILE IS MACHINE GENERATED WITH CGEN.
-Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+Copyright 1996-2009 Free Software Foundation, Inc.
This file is part of the GNU simulators.
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+ It is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
diff --git a/sim/iq2000/cpu.c b/sim/iq2000/cpu.c
index badd1fb..4b243ff 100644
--- a/sim/iq2000/cpu.c
+++ b/sim/iq2000/cpu.c
@@ -2,22 +2,23 @@
THIS FILE IS MACHINE GENERATED WITH CGEN.
-Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+Copyright 1996-2009 Free Software Foundation, Inc.
This file is part of the GNU simulators.
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+ It is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
diff --git a/sim/iq2000/cpu.h b/sim/iq2000/cpu.h
index a9249ad..47ca845 100644
--- a/sim/iq2000/cpu.h
+++ b/sim/iq2000/cpu.h
@@ -2,22 +2,23 @@
THIS FILE IS MACHINE GENERATED WITH CGEN.
-Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+Copyright 1996-2009 Free Software Foundation, Inc.
This file is part of the GNU simulators.
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+ It is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
diff --git a/sim/iq2000/cpuall.h b/sim/iq2000/cpuall.h
index d16335e..51a7d9b 100644
--- a/sim/iq2000/cpuall.h
+++ b/sim/iq2000/cpuall.h
@@ -2,22 +2,23 @@
THIS FILE IS MACHINE GENERATED WITH CGEN.
-Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+Copyright 1996-2009 Free Software Foundation, Inc.
This file is part of the GNU simulators.
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+ It is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
diff --git a/sim/iq2000/decode.c b/sim/iq2000/decode.c
index 0082f06..1bb77b1 100644
--- a/sim/iq2000/decode.c
+++ b/sim/iq2000/decode.c
@@ -2,22 +2,23 @@
THIS FILE IS MACHINE GENERATED WITH CGEN.
-Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+Copyright 1996-2009 Free Software Foundation, Inc.
This file is part of the GNU simulators.
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+ It is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
@@ -32,7 +33,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
teensy bit of cpu in the decoder. Moving it to malloc space is trivial
but won't be done until necessary (we don't currently support the runtime
addition of instructions nor an SMP machine with different cpus). */
-static IDESC iq2000bf_insn_data[IQ2000BF_INSN_BMB + 1];
+static IDESC iq2000bf_insn_data[IQ2000BF_INSN__MAX];
/* Commas between elements are contained in the macros.
Some of these are conditionally compiled out. */
@@ -49,7 +50,7 @@ static const struct insn_sem iq2000bf_insn_sem[] =
{ IQ2000_INSN_ADDI, IQ2000BF_INSN_ADDI, IQ2000BF_SFMT_ADDI },
{ IQ2000_INSN_ADDIU, IQ2000BF_INSN_ADDIU, IQ2000BF_SFMT_ADDI },
{ IQ2000_INSN_ADDU, IQ2000BF_INSN_ADDU, IQ2000BF_SFMT_ADD },
- { IQ2000_INSN_ADO16, IQ2000BF_INSN_ADO16, IQ2000BF_SFMT_ADO16 },
+ { IQ2000_INSN_ADO16, IQ2000BF_INSN_ADO16, IQ2000BF_SFMT_ADD },
{ IQ2000_INSN_AND, IQ2000BF_INSN_AND, IQ2000BF_SFMT_ADD },
{ IQ2000_INSN_ANDI, IQ2000BF_INSN_ANDI, IQ2000BF_SFMT_ADDI },
{ IQ2000_INSN_ANDOI, IQ2000BF_INSN_ANDOI, IQ2000BF_SFMT_ADDI },
@@ -230,7 +231,7 @@ iq2000bf_init_idesc_table (SIM_CPU *cpu)
{
IDESC *id,*tabend;
const struct insn_sem *t,*tend;
- int tabsize = sizeof (iq2000bf_insn_data) / sizeof (IDESC);
+ int tabsize = IQ2000BF_INSN__MAX;
IDESC *table = iq2000bf_insn_data;
memset (table, 0, tabsize * sizeof (IDESC));
@@ -273,32 +274,110 @@ iq2000bf_decode (SIM_CPU *current_cpu, IADDR pc,
unsigned int val = (((insn >> 1) & (1 << 4)) | ((insn >> 0) & (15 << 0)));
switch (val)
{
- case 0 : itype = IQ2000BF_INSN_SLL;goto extract_sfmt_sll;
- case 1 : itype = IQ2000BF_INSN_SLMV;goto extract_sfmt_slmv;
- case 2 : itype = IQ2000BF_INSN_SRL;goto extract_sfmt_sll;
- case 3 : itype = IQ2000BF_INSN_SRA;goto extract_sfmt_sll;
- case 4 : itype = IQ2000BF_INSN_SLLV;goto extract_sfmt_add;
- case 5 : itype = IQ2000BF_INSN_SRMV;goto extract_sfmt_slmv;
- case 6 : itype = IQ2000BF_INSN_SRLV;goto extract_sfmt_add;
- case 7 : itype = IQ2000BF_INSN_SRAV;goto extract_sfmt_add;
- case 8 : itype = IQ2000BF_INSN_JR;goto extract_sfmt_jr;
- case 9 : itype = IQ2000BF_INSN_JALR;goto extract_sfmt_jalr;
- case 10 : itype = IQ2000BF_INSN_JCR;goto extract_sfmt_bctxt;
- case 12 : itype = IQ2000BF_INSN_SYSCALL;goto extract_sfmt_syscall;
- case 13 : itype = IQ2000BF_INSN_BREAK;goto extract_sfmt_break;
- case 14 : itype = IQ2000BF_INSN_SLEEP;goto extract_sfmt_syscall;
- case 16 : itype = IQ2000BF_INSN_ADD;goto extract_sfmt_add;
- case 17 : itype = IQ2000BF_INSN_ADDU;goto extract_sfmt_add;
- case 18 : itype = IQ2000BF_INSN_SUB;goto extract_sfmt_add;
- case 19 : itype = IQ2000BF_INSN_SUBU;goto extract_sfmt_add;
- case 20 : itype = IQ2000BF_INSN_AND;goto extract_sfmt_add;
- case 21 : itype = IQ2000BF_INSN_OR;goto extract_sfmt_add;
- case 22 : itype = IQ2000BF_INSN_XOR;goto extract_sfmt_add;
- case 23 : itype = IQ2000BF_INSN_NOR;goto extract_sfmt_add;
- case 25 : itype = IQ2000BF_INSN_ADO16;goto extract_sfmt_ado16;
- case 26 : itype = IQ2000BF_INSN_SLT;goto extract_sfmt_slt;
- case 27 : itype = IQ2000BF_INSN_SLTU;goto extract_sfmt_slt;
- case 29 : itype = IQ2000BF_INSN_MRGB;goto extract_sfmt_mrgb;
+ case 0 :
+ if ((entire_insn & 0xffe0003f) == 0x0)
+ { itype = IQ2000BF_INSN_SLL; goto extract_sfmt_sll; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 1 :
+ if ((entire_insn & 0xfc00003f) == 0x1)
+ { itype = IQ2000BF_INSN_SLMV; goto extract_sfmt_slmv; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 2 :
+ if ((entire_insn & 0xffe0003f) == 0x2)
+ { itype = IQ2000BF_INSN_SRL; goto extract_sfmt_sll; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 3 :
+ if ((entire_insn & 0xffe0003f) == 0x3)
+ { itype = IQ2000BF_INSN_SRA; goto extract_sfmt_sll; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 4 :
+ if ((entire_insn & 0xfc0007ff) == 0x4)
+ { itype = IQ2000BF_INSN_SLLV; goto extract_sfmt_add; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 5 :
+ if ((entire_insn & 0xfc00003f) == 0x5)
+ { itype = IQ2000BF_INSN_SRMV; goto extract_sfmt_slmv; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 6 :
+ if ((entire_insn & 0xfc0007ff) == 0x6)
+ { itype = IQ2000BF_INSN_SRLV; goto extract_sfmt_add; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 7 :
+ if ((entire_insn & 0xfc0007ff) == 0x7)
+ { itype = IQ2000BF_INSN_SRAV; goto extract_sfmt_add; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 8 :
+ if ((entire_insn & 0xfc1fffff) == 0x8)
+ { itype = IQ2000BF_INSN_JR; goto extract_sfmt_jr; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 9 :
+ if ((entire_insn & 0xfc1f07ff) == 0x9)
+ { itype = IQ2000BF_INSN_JALR; goto extract_sfmt_jalr; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 10 :
+ if ((entire_insn & 0xfc1fffff) == 0xa)
+ { itype = IQ2000BF_INSN_JCR; goto extract_sfmt_bctxt; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 12 :
+ if ((entire_insn & 0xfc00003f) == 0xc)
+ { itype = IQ2000BF_INSN_SYSCALL; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 13 :
+ if ((entire_insn & 0xffffffff) == 0xd)
+ { itype = IQ2000BF_INSN_BREAK; goto extract_sfmt_break; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 14 :
+ if ((entire_insn & 0xfc00003f) == 0xe)
+ { itype = IQ2000BF_INSN_SLEEP; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 16 :
+ if ((entire_insn & 0xfc0007ff) == 0x20)
+ { itype = IQ2000BF_INSN_ADD; goto extract_sfmt_add; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 17 :
+ if ((entire_insn & 0xfc0007ff) == 0x21)
+ { itype = IQ2000BF_INSN_ADDU; goto extract_sfmt_add; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 18 :
+ if ((entire_insn & 0xfc0007ff) == 0x22)
+ { itype = IQ2000BF_INSN_SUB; goto extract_sfmt_add; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 19 :
+ if ((entire_insn & 0xfc0007ff) == 0x23)
+ { itype = IQ2000BF_INSN_SUBU; goto extract_sfmt_add; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 20 :
+ if ((entire_insn & 0xfc0007ff) == 0x24)
+ { itype = IQ2000BF_INSN_AND; goto extract_sfmt_add; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 21 :
+ if ((entire_insn & 0xfc0007ff) == 0x25)
+ { itype = IQ2000BF_INSN_OR; goto extract_sfmt_add; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 22 :
+ if ((entire_insn & 0xfc0007ff) == 0x26)
+ { itype = IQ2000BF_INSN_XOR; goto extract_sfmt_add; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 23 :
+ if ((entire_insn & 0xfc0007ff) == 0x27)
+ { itype = IQ2000BF_INSN_NOR; goto extract_sfmt_add; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 25 :
+ if ((entire_insn & 0xfc0007ff) == 0x29)
+ { itype = IQ2000BF_INSN_ADO16; goto extract_sfmt_add; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 26 :
+ if ((entire_insn & 0xfc0007ff) == 0x2a)
+ { itype = IQ2000BF_INSN_SLT; goto extract_sfmt_slt; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 27 :
+ if ((entire_insn & 0xfc0007ff) == 0x2b)
+ { itype = IQ2000BF_INSN_SLTU; goto extract_sfmt_slt; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 29 :
+ if ((entire_insn & 0xfc00043f) == 0x2d)
+ { itype = IQ2000BF_INSN_MRGB; goto extract_sfmt_mrgb; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
default : itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
}
}
@@ -307,32 +386,74 @@ iq2000bf_decode (SIM_CPU *current_cpu, IADDR pc,
unsigned int val = (((insn >> 17) & (1 << 3)) | ((insn >> 16) & (7 << 0)));
switch (val)
{
- case 0 : itype = IQ2000BF_INSN_BLTZ;goto extract_sfmt_bgez;
- case 1 : itype = IQ2000BF_INSN_BGEZ;goto extract_sfmt_bgez;
- case 2 : itype = IQ2000BF_INSN_BLTZL;goto extract_sfmt_bgez;
- case 3 : itype = IQ2000BF_INSN_BGEZL;goto extract_sfmt_bgez;
- case 6 : itype = IQ2000BF_INSN_BCTXT;goto extract_sfmt_bctxt;
- case 8 : itype = IQ2000BF_INSN_BLTZAL;goto extract_sfmt_bgezal;
- case 9 : itype = IQ2000BF_INSN_BGEZAL;goto extract_sfmt_bgezal;
- case 10 : itype = IQ2000BF_INSN_BLTZALL;goto extract_sfmt_bgezal;
- case 11 : itype = IQ2000BF_INSN_BGEZALL;goto extract_sfmt_bgezal;
+ case 0 :
+ if ((entire_insn & 0xfc1f0000) == 0x4000000)
+ { itype = IQ2000BF_INSN_BLTZ; goto extract_sfmt_bgez; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 1 :
+ if ((entire_insn & 0xfc1f0000) == 0x4010000)
+ { itype = IQ2000BF_INSN_BGEZ; goto extract_sfmt_bgez; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 2 :
+ if ((entire_insn & 0xfc1f0000) == 0x4020000)
+ { itype = IQ2000BF_INSN_BLTZL; goto extract_sfmt_bgez; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 3 :
+ if ((entire_insn & 0xfc1f0000) == 0x4030000)
+ { itype = IQ2000BF_INSN_BGEZL; goto extract_sfmt_bgez; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 6 :
+ if ((entire_insn & 0xfc1f0000) == 0x4060000)
+ { itype = IQ2000BF_INSN_BCTXT; goto extract_sfmt_bctxt; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 8 :
+ if ((entire_insn & 0xfc1f0000) == 0x4100000)
+ { itype = IQ2000BF_INSN_BLTZAL; goto extract_sfmt_bgezal; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 9 :
+ if ((entire_insn & 0xfc1f0000) == 0x4110000)
+ { itype = IQ2000BF_INSN_BGEZAL; goto extract_sfmt_bgezal; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 10 :
+ if ((entire_insn & 0xfc1f0000) == 0x4120000)
+ { itype = IQ2000BF_INSN_BLTZALL; goto extract_sfmt_bgezal; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 11 :
+ if ((entire_insn & 0xfc1f0000) == 0x4130000)
+ { itype = IQ2000BF_INSN_BGEZALL; goto extract_sfmt_bgezal; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
default : itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
}
}
- case 2 : itype = IQ2000BF_INSN_J;goto extract_sfmt_j;
- case 3 : itype = IQ2000BF_INSN_JAL;goto extract_sfmt_jal;
- case 4 : itype = IQ2000BF_INSN_BEQ;goto extract_sfmt_bbv;
- case 5 : itype = IQ2000BF_INSN_BNE;goto extract_sfmt_bbv;
- case 6 : itype = IQ2000BF_INSN_BLEZ;goto extract_sfmt_bgez;
- case 7 : itype = IQ2000BF_INSN_BGTZ;goto extract_sfmt_bgez;
- case 8 : itype = IQ2000BF_INSN_ADDI;goto extract_sfmt_addi;
- case 9 : itype = IQ2000BF_INSN_ADDIU;goto extract_sfmt_addi;
- case 10 : itype = IQ2000BF_INSN_SLTI;goto extract_sfmt_slti;
- case 11 : itype = IQ2000BF_INSN_SLTIU;goto extract_sfmt_slti;
- case 12 : itype = IQ2000BF_INSN_ANDI;goto extract_sfmt_addi;
- case 13 : itype = IQ2000BF_INSN_ORI;goto extract_sfmt_addi;
- case 14 : itype = IQ2000BF_INSN_XORI;goto extract_sfmt_addi;
- case 15 : itype = IQ2000BF_INSN_LUI;goto extract_sfmt_lui;
+ case 2 :
+ if ((entire_insn & 0xffff0000) == 0x8000000)
+ { itype = IQ2000BF_INSN_J; goto extract_sfmt_j; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 3 :
+ if ((entire_insn & 0xffff0000) == 0xc000000)
+ { itype = IQ2000BF_INSN_JAL; goto extract_sfmt_jal; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 4 : itype = IQ2000BF_INSN_BEQ; goto extract_sfmt_bbv;
+ case 5 : itype = IQ2000BF_INSN_BNE; goto extract_sfmt_bbv;
+ case 6 :
+ if ((entire_insn & 0xfc1f0000) == 0x18000000)
+ { itype = IQ2000BF_INSN_BLEZ; goto extract_sfmt_bgez; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 7 :
+ if ((entire_insn & 0xfc1f0000) == 0x1c000000)
+ { itype = IQ2000BF_INSN_BGTZ; goto extract_sfmt_bgez; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 8 : itype = IQ2000BF_INSN_ADDI; goto extract_sfmt_addi;
+ case 9 : itype = IQ2000BF_INSN_ADDIU; goto extract_sfmt_addi;
+ case 10 : itype = IQ2000BF_INSN_SLTI; goto extract_sfmt_slti;
+ case 11 : itype = IQ2000BF_INSN_SLTIU; goto extract_sfmt_slti;
+ case 12 : itype = IQ2000BF_INSN_ANDI; goto extract_sfmt_addi;
+ case 13 : itype = IQ2000BF_INSN_ORI; goto extract_sfmt_addi;
+ case 14 : itype = IQ2000BF_INSN_XORI; goto extract_sfmt_addi;
+ case 15 :
+ if ((entire_insn & 0xffe00000) == 0x3c000000)
+ { itype = IQ2000BF_INSN_LUI; goto extract_sfmt_lui; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
case 16 :
{
unsigned int val = (((insn >> 19) & (15 << 3)) | ((insn >> 15) & (3 << 1)) | ((insn >> 4) & (1 << 0)));
@@ -341,28 +462,55 @@ iq2000bf_decode (SIM_CPU *current_cpu, IADDR pc,
case 0 : /* fall through */
case 2 : /* fall through */
case 4 : /* fall through */
- case 6 : itype = IQ2000BF_INSN_MFC0;goto extract_sfmt_syscall;
+ case 6 :
+ if ((entire_insn & 0xffe007ff) == 0x40000000)
+ { itype = IQ2000BF_INSN_MFC0; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
case 8 : /* fall through */
case 10 : /* fall through */
case 12 : /* fall through */
- case 14 : itype = IQ2000BF_INSN_CFC0;goto extract_sfmt_syscall;
+ case 14 :
+ if ((entire_insn & 0xffe007ff) == 0x40400000)
+ { itype = IQ2000BF_INSN_CFC0; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
case 16 : /* fall through */
case 18 : /* fall through */
case 20 : /* fall through */
- case 22 : itype = IQ2000BF_INSN_MTC0;goto extract_sfmt_syscall;
+ case 22 :
+ if ((entire_insn & 0xffe007ff) == 0x40800000)
+ { itype = IQ2000BF_INSN_MTC0; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
case 24 : /* fall through */
case 26 : /* fall through */
case 28 : /* fall through */
- case 30 : itype = IQ2000BF_INSN_CTC0;goto extract_sfmt_syscall;
+ case 30 :
+ if ((entire_insn & 0xffe007ff) == 0x40c00000)
+ { itype = IQ2000BF_INSN_CTC0; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
case 32 : /* fall through */
- case 33 : itype = IQ2000BF_INSN_BC0F;goto extract_sfmt_bctxt;
+ case 33 :
+ if ((entire_insn & 0xffff0000) == 0x41000000)
+ { itype = IQ2000BF_INSN_BC0F; goto extract_sfmt_bctxt; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
case 34 : /* fall through */
- case 35 : itype = IQ2000BF_INSN_BC0T;goto extract_sfmt_bctxt;
+ case 35 :
+ if ((entire_insn & 0xffff0000) == 0x41010000)
+ { itype = IQ2000BF_INSN_BC0T; goto extract_sfmt_bctxt; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
case 36 : /* fall through */
- case 37 : itype = IQ2000BF_INSN_BC0FL;goto extract_sfmt_bctxt;
+ case 37 :
+ if ((entire_insn & 0xffff0000) == 0x41020000)
+ { itype = IQ2000BF_INSN_BC0FL; goto extract_sfmt_bctxt; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
case 38 : /* fall through */
- case 39 : itype = IQ2000BF_INSN_BC0TL;goto extract_sfmt_bctxt;
- case 65 : itype = IQ2000BF_INSN_RFE;goto extract_sfmt_syscall;
+ case 39 :
+ if ((entire_insn & 0xffff0000) == 0x41030000)
+ { itype = IQ2000BF_INSN_BC0TL; goto extract_sfmt_bctxt; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 65 :
+ if ((entire_insn & 0xffffffff) == 0x42000010)
+ { itype = IQ2000BF_INSN_RFE; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
default : itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
}
}
@@ -371,10 +519,22 @@ iq2000bf_decode (SIM_CPU *current_cpu, IADDR pc,
unsigned int val = (((insn >> 22) & (3 << 0)));
switch (val)
{
- case 0 : itype = IQ2000BF_INSN_MFC1;goto extract_sfmt_syscall;
- case 1 : itype = IQ2000BF_INSN_CFC1;goto extract_sfmt_syscall;
- case 2 : itype = IQ2000BF_INSN_MTC1;goto extract_sfmt_syscall;
- case 3 : itype = IQ2000BF_INSN_CTC1;goto extract_sfmt_syscall;
+ case 0 :
+ if ((entire_insn & 0xffe007ff) == 0x44000000)
+ { itype = IQ2000BF_INSN_MFC1; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 1 :
+ if ((entire_insn & 0xffe007ff) == 0x44400000)
+ { itype = IQ2000BF_INSN_CFC1; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 2 :
+ if ((entire_insn & 0xffe007ff) == 0x44800000)
+ { itype = IQ2000BF_INSN_MTC1; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 3 :
+ if ((entire_insn & 0xffe007ff) == 0x44c00000)
+ { itype = IQ2000BF_INSN_CTC1; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
default : itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
}
}
@@ -388,36 +548,102 @@ iq2000bf_decode (SIM_CPU *current_cpu, IADDR pc,
unsigned int val = (((insn >> 23) & (1 << 0)));
switch (val)
{
- case 0 : itype = IQ2000BF_INSN_MFC2;goto extract_sfmt_syscall;
- case 1 : itype = IQ2000BF_INSN_MTC2;goto extract_sfmt_syscall;
+ case 0 :
+ if ((entire_insn & 0xffe007ff) == 0x48000000)
+ { itype = IQ2000BF_INSN_MFC2; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 1 :
+ if ((entire_insn & 0xffe007ff) == 0x48800000)
+ { itype = IQ2000BF_INSN_MTC2; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
default : itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
}
}
- case 32 : itype = IQ2000BF_INSN_LUULCK;goto extract_sfmt_syscall;
- case 33 : itype = IQ2000BF_INSN_LUR;goto extract_sfmt_syscall;
- case 34 : itype = IQ2000BF_INSN_LUM32;goto extract_sfmt_syscall;
- case 35 : itype = IQ2000BF_INSN_LUC32;goto extract_sfmt_syscall;
- case 36 : itype = IQ2000BF_INSN_LULCK;goto extract_sfmt_syscall;
- case 37 : itype = IQ2000BF_INSN_LURL;goto extract_sfmt_syscall;
- case 38 : itype = IQ2000BF_INSN_LUM32L;goto extract_sfmt_syscall;
- case 39 : itype = IQ2000BF_INSN_LUC32L;goto extract_sfmt_syscall;
- case 40 : itype = IQ2000BF_INSN_LUK;goto extract_sfmt_syscall;
- case 42 : itype = IQ2000BF_INSN_LUM64;goto extract_sfmt_syscall;
- case 43 : itype = IQ2000BF_INSN_LUC64;goto extract_sfmt_syscall;
- case 46 : itype = IQ2000BF_INSN_LUM64L;goto extract_sfmt_syscall;
- case 47 : itype = IQ2000BF_INSN_LUC64L;goto extract_sfmt_syscall;
- case 48 : itype = IQ2000BF_INSN_SRRD;goto extract_sfmt_syscall;
- case 49 : itype = IQ2000BF_INSN_SRWR;goto extract_sfmt_syscall;
- case 52 : itype = IQ2000BF_INSN_SRRDL;goto extract_sfmt_syscall;
- case 53 : itype = IQ2000BF_INSN_SRWRU;goto extract_sfmt_syscall;
- case 54 : itype = IQ2000BF_INSN_SRULCK;goto extract_sfmt_syscall;
+ case 32 :
+ if ((entire_insn & 0xffe0ffff) == 0x48200000)
+ { itype = IQ2000BF_INSN_LUULCK; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 33 :
+ if ((entire_insn & 0xffe007ff) == 0x48200001)
+ { itype = IQ2000BF_INSN_LUR; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 34 :
+ if ((entire_insn & 0xffe007ff) == 0x48200002)
+ { itype = IQ2000BF_INSN_LUM32; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 35 :
+ if ((entire_insn & 0xffe007ff) == 0x48200003)
+ { itype = IQ2000BF_INSN_LUC32; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 36 :
+ if ((entire_insn & 0xffe0ffff) == 0x48200004)
+ { itype = IQ2000BF_INSN_LULCK; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 37 :
+ if ((entire_insn & 0xffe007ff) == 0x48200005)
+ { itype = IQ2000BF_INSN_LURL; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 38 :
+ if ((entire_insn & 0xffe007ff) == 0x48200006)
+ { itype = IQ2000BF_INSN_LUM32L; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 39 :
+ if ((entire_insn & 0xffe007ff) == 0x48200007)
+ { itype = IQ2000BF_INSN_LUC32L; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 40 :
+ if ((entire_insn & 0xffe007ff) == 0x48200008)
+ { itype = IQ2000BF_INSN_LUK; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 42 :
+ if ((entire_insn & 0xffe007ff) == 0x4820000a)
+ { itype = IQ2000BF_INSN_LUM64; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 43 :
+ if ((entire_insn & 0xffe007ff) == 0x4820000b)
+ { itype = IQ2000BF_INSN_LUC64; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 46 :
+ if ((entire_insn & 0xffe007ff) == 0x4820000e)
+ { itype = IQ2000BF_INSN_LUM64L; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 47 :
+ if ((entire_insn & 0xffe007ff) == 0x4820000f)
+ { itype = IQ2000BF_INSN_LUC64L; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 48 :
+ if ((entire_insn & 0xffe0ffff) == 0x48200010)
+ { itype = IQ2000BF_INSN_SRRD; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 49 :
+ if ((entire_insn & 0xffe007ff) == 0x48200011)
+ { itype = IQ2000BF_INSN_SRWR; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 52 :
+ if ((entire_insn & 0xffe0ffff) == 0x48200014)
+ { itype = IQ2000BF_INSN_SRRDL; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 53 :
+ if ((entire_insn & 0xffe007ff) == 0x48200015)
+ { itype = IQ2000BF_INSN_SRWRU; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 54 :
+ if ((entire_insn & 0xffe0ffff) == 0x48200016)
+ { itype = IQ2000BF_INSN_SRULCK; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
case 64 :
{
unsigned int val = (((insn >> 23) & (1 << 0)));
switch (val)
{
- case 0 : itype = IQ2000BF_INSN_CFC2;goto extract_sfmt_syscall;
- case 1 : itype = IQ2000BF_INSN_CTC2;goto extract_sfmt_syscall;
+ case 0 :
+ if ((entire_insn & 0xffe007ff) == 0x48400000)
+ { itype = IQ2000BF_INSN_CFC2; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 1 :
+ if ((entire_insn & 0xffe007ff) == 0x48c00000)
+ { itype = IQ2000BF_INSN_CTC2; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
default : itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
}
}
@@ -429,15 +655,27 @@ iq2000bf_decode (SIM_CPU *current_cpu, IADDR pc,
unsigned int val = (((insn >> 19) & (31 << 2)) | ((insn >> 0) & (3 << 0)));
switch (val)
{
- case 0 : itype = IQ2000BF_INSN_MFC3;goto extract_sfmt_syscall;
+ case 0 :
+ if ((entire_insn & 0xffe007ff) == 0x4c000000)
+ { itype = IQ2000BF_INSN_MFC3; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
case 4 :
{
unsigned int val = (((insn >> 2) & (3 << 0)));
switch (val)
{
- case 0 : itype = IQ2000BF_INSN_WB;goto extract_sfmt_syscall;
- case 1 : itype = IQ2000BF_INSN_RB;goto extract_sfmt_syscall;
- case 2 : itype = IQ2000BF_INSN_TRAPQFL;goto extract_sfmt_syscall;
+ case 0 :
+ if ((entire_insn & 0xffe007ff) == 0x4c200000)
+ { itype = IQ2000BF_INSN_WB; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 1 :
+ if ((entire_insn & 0xffe007ff) == 0x4c200004)
+ { itype = IQ2000BF_INSN_RB; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 2 :
+ if ((entire_insn & 0xffffffff) == 0x4c200008)
+ { itype = IQ2000BF_INSN_TRAPQFL; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
default : itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
}
}
@@ -446,8 +684,14 @@ iq2000bf_decode (SIM_CPU *current_cpu, IADDR pc,
unsigned int val = (((insn >> 3) & (1 << 0)));
switch (val)
{
- case 0 : itype = IQ2000BF_INSN_WBU;goto extract_sfmt_syscall;
- case 1 : itype = IQ2000BF_INSN_TRAPQNE;goto extract_sfmt_syscall;
+ case 0 :
+ if ((entire_insn & 0xffe007ff) == 0x4c200001)
+ { itype = IQ2000BF_INSN_WBU; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 1 :
+ if ((entire_insn & 0xffffffff) == 0x4c200009)
+ { itype = IQ2000BF_INSN_TRAPQNE; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
default : itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
}
}
@@ -456,9 +700,18 @@ iq2000bf_decode (SIM_CPU *current_cpu, IADDR pc,
unsigned int val = (((insn >> 2) & (3 << 0)));
switch (val)
{
- case 0 : itype = IQ2000BF_INSN_WX;goto extract_sfmt_syscall;
- case 1 : itype = IQ2000BF_INSN_RX;goto extract_sfmt_syscall;
- case 2 : itype = IQ2000BF_INSN_TRAPREL;goto extract_sfmt_syscall;
+ case 0 :
+ if ((entire_insn & 0xffe007ff) == 0x4c200002)
+ { itype = IQ2000BF_INSN_WX; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 1 :
+ if ((entire_insn & 0xffe007ff) == 0x4c200006)
+ { itype = IQ2000BF_INSN_RX; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 2 :
+ if ((entire_insn & 0xffe0ffff) == 0x4c20000a)
+ { itype = IQ2000BF_INSN_TRAPREL; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
default : itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
}
}
@@ -467,14 +720,29 @@ iq2000bf_decode (SIM_CPU *current_cpu, IADDR pc,
unsigned int val = (((insn >> 2) & (1 << 0)));
switch (val)
{
- case 0 : itype = IQ2000BF_INSN_WXU;goto extract_sfmt_syscall;
- case 1 : itype = IQ2000BF_INSN_PKRL;goto extract_sfmt_syscall;
+ case 0 :
+ if ((entire_insn & 0xffe007ff) == 0x4c200003)
+ { itype = IQ2000BF_INSN_WXU; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 1 :
+ if ((entire_insn & 0xffe007ff) == 0x4c200007)
+ { itype = IQ2000BF_INSN_PKRL; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
default : itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
}
}
- case 8 : itype = IQ2000BF_INSN_CFC3;goto extract_sfmt_syscall;
- case 16 : itype = IQ2000BF_INSN_MTC3;goto extract_sfmt_syscall;
- case 24 : itype = IQ2000BF_INSN_CTC3;goto extract_sfmt_syscall;
+ case 8 :
+ if ((entire_insn & 0xffe007ff) == 0x4c400000)
+ { itype = IQ2000BF_INSN_CFC3; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 16 :
+ if ((entire_insn & 0xffe007ff) == 0x4c800000)
+ { itype = IQ2000BF_INSN_MTC3; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 24 :
+ if ((entire_insn & 0xffe007ff) == 0x4cc00000)
+ { itype = IQ2000BF_INSN_CTC3; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
case 32 : /* fall through */
case 33 : /* fall through */
case 34 : /* fall through */
@@ -483,100 +751,124 @@ iq2000bf_decode (SIM_CPU *current_cpu, IADDR pc,
unsigned int val = (((insn >> 16) & (3 << 0)));
switch (val)
{
- case 0 : itype = IQ2000BF_INSN_BC3F;goto extract_sfmt_bctxt;
- case 1 : itype = IQ2000BF_INSN_BC3T;goto extract_sfmt_bctxt;
- case 2 : itype = IQ2000BF_INSN_BC3FL;goto extract_sfmt_bctxt;
- case 3 : itype = IQ2000BF_INSN_BC3TL;goto extract_sfmt_bctxt;
+ case 0 :
+ if ((entire_insn & 0xffff0000) == 0x4d000000)
+ { itype = IQ2000BF_INSN_BC3F; goto extract_sfmt_bctxt; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 1 :
+ if ((entire_insn & 0xffff0000) == 0x4d010000)
+ { itype = IQ2000BF_INSN_BC3T; goto extract_sfmt_bctxt; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 2 :
+ if ((entire_insn & 0xffff0000) == 0x4d020000)
+ { itype = IQ2000BF_INSN_BC3FL; goto extract_sfmt_bctxt; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 3 :
+ if ((entire_insn & 0xffff0000) == 0x4d030000)
+ { itype = IQ2000BF_INSN_BC3TL; goto extract_sfmt_bctxt; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
default : itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
}
}
- case 36 : itype = IQ2000BF_INSN_CHKHDR;goto extract_sfmt_syscall;
+ case 36 :
+ if ((entire_insn & 0xffe007ff) == 0x4d200000)
+ { itype = IQ2000BF_INSN_CHKHDR; goto extract_sfmt_syscall; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
case 64 : /* fall through */
case 65 : /* fall through */
case 66 : /* fall through */
- case 67 : itype = IQ2000BF_INSN_WBR1;goto extract_sfmt_syscall;
+ case 67 : itype = IQ2000BF_INSN_WBR1; goto extract_sfmt_syscall;
case 68 : /* fall through */
case 69 : /* fall through */
case 70 : /* fall through */
- case 71 : itype = IQ2000BF_INSN_WBR1U;goto extract_sfmt_syscall;
+ case 71 : itype = IQ2000BF_INSN_WBR1U; goto extract_sfmt_syscall;
case 72 : /* fall through */
case 73 : /* fall through */
case 74 : /* fall through */
- case 75 : itype = IQ2000BF_INSN_WBR30;goto extract_sfmt_syscall;
+ case 75 : itype = IQ2000BF_INSN_WBR30; goto extract_sfmt_syscall;
case 76 : /* fall through */
case 77 : /* fall through */
case 78 : /* fall through */
- case 79 : itype = IQ2000BF_INSN_WBR30U;goto extract_sfmt_syscall;
+ case 79 : itype = IQ2000BF_INSN_WBR30U; goto extract_sfmt_syscall;
case 80 : /* fall through */
case 81 : /* fall through */
case 82 : /* fall through */
- case 83 : itype = IQ2000BF_INSN_WXR1;goto extract_sfmt_syscall;
+ case 83 : itype = IQ2000BF_INSN_WXR1; goto extract_sfmt_syscall;
case 84 : /* fall through */
case 85 : /* fall through */
case 86 : /* fall through */
- case 87 : itype = IQ2000BF_INSN_WXR1U;goto extract_sfmt_syscall;
+ case 87 : itype = IQ2000BF_INSN_WXR1U; goto extract_sfmt_syscall;
case 88 : /* fall through */
case 89 : /* fall through */
case 90 : /* fall through */
- case 91 : itype = IQ2000BF_INSN_WXR30;goto extract_sfmt_syscall;
+ case 91 : itype = IQ2000BF_INSN_WXR30; goto extract_sfmt_syscall;
case 92 : /* fall through */
case 93 : /* fall through */
case 94 : /* fall through */
- case 95 : itype = IQ2000BF_INSN_WXR30U;goto extract_sfmt_syscall;
+ case 95 : itype = IQ2000BF_INSN_WXR30U; goto extract_sfmt_syscall;
case 96 : /* fall through */
case 97 : /* fall through */
case 98 : /* fall through */
- case 99 : itype = IQ2000BF_INSN_RBR1;goto extract_sfmt_syscall;
+ case 99 : itype = IQ2000BF_INSN_RBR1; goto extract_sfmt_syscall;
case 104 : /* fall through */
case 105 : /* fall through */
case 106 : /* fall through */
- case 107 : itype = IQ2000BF_INSN_RBR30;goto extract_sfmt_syscall;
+ case 107 : itype = IQ2000BF_INSN_RBR30; goto extract_sfmt_syscall;
case 112 : /* fall through */
case 113 : /* fall through */
case 114 : /* fall through */
- case 115 : itype = IQ2000BF_INSN_RXR1;goto extract_sfmt_syscall;
+ case 115 : itype = IQ2000BF_INSN_RXR1; goto extract_sfmt_syscall;
case 116 : /* fall through */
case 117 : /* fall through */
case 118 : /* fall through */
- case 119 : itype = IQ2000BF_INSN_PKRLR1;goto extract_sfmt_syscall;
+ case 119 : itype = IQ2000BF_INSN_PKRLR1; goto extract_sfmt_syscall;
case 120 : /* fall through */
case 121 : /* fall through */
case 122 : /* fall through */
- case 123 : itype = IQ2000BF_INSN_RXR30;goto extract_sfmt_syscall;
+ case 123 : itype = IQ2000BF_INSN_RXR30; goto extract_sfmt_syscall;
case 124 : /* fall through */
case 125 : /* fall through */
case 126 : /* fall through */
- case 127 : itype = IQ2000BF_INSN_PKRLR30;goto extract_sfmt_syscall;
+ case 127 : itype = IQ2000BF_INSN_PKRLR30; goto extract_sfmt_syscall;
default : itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
}
}
- case 20 : itype = IQ2000BF_INSN_BEQL;goto extract_sfmt_bbv;
- case 21 : itype = IQ2000BF_INSN_BNEL;goto extract_sfmt_bbv;
- case 22 : itype = IQ2000BF_INSN_BLEZL;goto extract_sfmt_bgez;
- case 23 : itype = IQ2000BF_INSN_BGTZL;goto extract_sfmt_bgez;
- case 24 : itype = IQ2000BF_INSN_BMB0;goto extract_sfmt_bbv;
- case 25 : itype = IQ2000BF_INSN_BMB1;goto extract_sfmt_bbv;
- case 26 : itype = IQ2000BF_INSN_BMB2;goto extract_sfmt_bbv;
- case 27 : itype = IQ2000BF_INSN_BMB3;goto extract_sfmt_bbv;
- case 28 : itype = IQ2000BF_INSN_BBI;goto extract_sfmt_bbi;
- case 29 : itype = IQ2000BF_INSN_BBV;goto extract_sfmt_bbv;
- case 30 : itype = IQ2000BF_INSN_BBIN;goto extract_sfmt_bbi;
- case 31 : itype = IQ2000BF_INSN_BBVN;goto extract_sfmt_bbv;
- case 32 : itype = IQ2000BF_INSN_LB;goto extract_sfmt_lb;
- case 33 : itype = IQ2000BF_INSN_LH;goto extract_sfmt_lh;
- case 35 : itype = IQ2000BF_INSN_LW;goto extract_sfmt_lw;
- case 36 : itype = IQ2000BF_INSN_LBU;goto extract_sfmt_lb;
- case 37 : itype = IQ2000BF_INSN_LHU;goto extract_sfmt_lh;
- case 39 : itype = IQ2000BF_INSN_RAM;goto extract_sfmt_ram;
- case 40 : itype = IQ2000BF_INSN_SB;goto extract_sfmt_sb;
- case 41 : itype = IQ2000BF_INSN_SH;goto extract_sfmt_sh;
- case 43 : itype = IQ2000BF_INSN_SW;goto extract_sfmt_sw;
- case 44 : itype = IQ2000BF_INSN_ANDOI;goto extract_sfmt_addi;
- case 45 : itype = IQ2000BF_INSN_BMB;goto extract_sfmt_bbv;
- case 47 : itype = IQ2000BF_INSN_ORUI;goto extract_sfmt_andoui;
- case 48 : itype = IQ2000BF_INSN_LDW;goto extract_sfmt_ldw;
- case 56 : itype = IQ2000BF_INSN_SDW;goto extract_sfmt_sdw;
- case 63 : itype = IQ2000BF_INSN_ANDOUI;goto extract_sfmt_andoui;
+ case 20 : itype = IQ2000BF_INSN_BEQL; goto extract_sfmt_bbv;
+ case 21 : itype = IQ2000BF_INSN_BNEL; goto extract_sfmt_bbv;
+ case 22 :
+ if ((entire_insn & 0xfc1f0000) == 0x58000000)
+ { itype = IQ2000BF_INSN_BLEZL; goto extract_sfmt_bgez; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 23 :
+ if ((entire_insn & 0xfc1f0000) == 0x5c000000)
+ { itype = IQ2000BF_INSN_BGTZL; goto extract_sfmt_bgez; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 24 : itype = IQ2000BF_INSN_BMB0; goto extract_sfmt_bbv;
+ case 25 : itype = IQ2000BF_INSN_BMB1; goto extract_sfmt_bbv;
+ case 26 : itype = IQ2000BF_INSN_BMB2; goto extract_sfmt_bbv;
+ case 27 : itype = IQ2000BF_INSN_BMB3; goto extract_sfmt_bbv;
+ case 28 : itype = IQ2000BF_INSN_BBI; goto extract_sfmt_bbi;
+ case 29 : itype = IQ2000BF_INSN_BBV; goto extract_sfmt_bbv;
+ case 30 : itype = IQ2000BF_INSN_BBIN; goto extract_sfmt_bbi;
+ case 31 : itype = IQ2000BF_INSN_BBVN; goto extract_sfmt_bbv;
+ case 32 : itype = IQ2000BF_INSN_LB; goto extract_sfmt_lb;
+ case 33 : itype = IQ2000BF_INSN_LH; goto extract_sfmt_lh;
+ case 35 : itype = IQ2000BF_INSN_LW; goto extract_sfmt_lw;
+ case 36 : itype = IQ2000BF_INSN_LBU; goto extract_sfmt_lb;
+ case 37 : itype = IQ2000BF_INSN_LHU; goto extract_sfmt_lh;
+ case 39 :
+ if ((entire_insn & 0xfc000020) == 0x9c000000)
+ { itype = IQ2000BF_INSN_RAM; goto extract_sfmt_ram; }
+ itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
+ case 40 : itype = IQ2000BF_INSN_SB; goto extract_sfmt_sb;
+ case 41 : itype = IQ2000BF_INSN_SH; goto extract_sfmt_sh;
+ case 43 : itype = IQ2000BF_INSN_SW; goto extract_sfmt_sw;
+ case 44 : itype = IQ2000BF_INSN_ANDOI; goto extract_sfmt_addi;
+ case 45 : itype = IQ2000BF_INSN_BMB; goto extract_sfmt_bbv;
+ case 47 : itype = IQ2000BF_INSN_ORUI; goto extract_sfmt_andoui;
+ case 48 : itype = IQ2000BF_INSN_LDW; goto extract_sfmt_ldw;
+ case 56 : itype = IQ2000BF_INSN_SDW; goto extract_sfmt_sdw;
+ case 63 : itype = IQ2000BF_INSN_ANDOUI; goto extract_sfmt_andoui;
default : itype = IQ2000BF_INSN_X_INVALID; goto extract_sfmt_empty;
}
}
@@ -643,29 +935,6 @@ iq2000bf_decode (SIM_CPU *current_cpu, IADDR pc,
return idesc;
}
- extract_sfmt_ado16:
- {
- const IDESC *idesc = &iq2000bf_insn_data[itype];
- CGEN_INSN_INT insn = entire_insn;
-#define FLD(f) abuf->fields.sfmt_mrgb.f
- UINT f_rs;
- UINT f_rt;
- UINT f_rd;
-
- f_rs = EXTRACT_LSB0_UINT (insn, 32, 25, 5);
- f_rt = EXTRACT_LSB0_UINT (insn, 32, 20, 5);
- f_rd = EXTRACT_LSB0_UINT (insn, 32, 15, 5);
-
- /* Record the fields for the semantic handler. */
- FLD (f_rs) = f_rs;
- FLD (f_rt) = f_rt;
- FLD (f_rd) = f_rd;
- TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ado16", "f_rs 0x%x", 'x', f_rs, "f_rt 0x%x", 'x', f_rt, "f_rd 0x%x", 'x', f_rd, (char *) 0));
-
-#undef FLD
- return idesc;
- }
-
extract_sfmt_ram:
{
const IDESC *idesc = &iq2000bf_insn_data[itype];
diff --git a/sim/iq2000/decode.h b/sim/iq2000/decode.h
index 70af106..75d647e 100644
--- a/sim/iq2000/decode.h
+++ b/sim/iq2000/decode.h
@@ -2,22 +2,23 @@
THIS FILE IS MACHINE GENERATED WITH CGEN.
-Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+Copyright 1996-2009 Free Software Foundation, Inc.
This file is part of the GNU simulators.
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+ It is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
@@ -70,19 +71,19 @@ typedef enum iq2000bf_insn_type {
, IQ2000BF_INSN_WBR1U, IQ2000BF_INSN_WBR30, IQ2000BF_INSN_WBR30U, IQ2000BF_INSN_WX
, IQ2000BF_INSN_WXU, IQ2000BF_INSN_WXR1, IQ2000BF_INSN_WXR1U, IQ2000BF_INSN_WXR30
, IQ2000BF_INSN_WXR30U, IQ2000BF_INSN_LDW, IQ2000BF_INSN_SDW, IQ2000BF_INSN_J
- , IQ2000BF_INSN_JAL, IQ2000BF_INSN_BMB, IQ2000BF_INSN_MAX
+ , IQ2000BF_INSN_JAL, IQ2000BF_INSN_BMB, IQ2000BF_INSN__MAX
} IQ2000BF_INSN_TYPE;
/* Enum declaration for semantic formats in cpu family iq2000bf. */
typedef enum iq2000bf_sfmt_type {
- IQ2000BF_SFMT_EMPTY, IQ2000BF_SFMT_ADD, IQ2000BF_SFMT_ADDI, IQ2000BF_SFMT_ADO16
- , IQ2000BF_SFMT_RAM, IQ2000BF_SFMT_SLL, IQ2000BF_SFMT_SLMV, IQ2000BF_SFMT_SLT
- , IQ2000BF_SFMT_SLTI, IQ2000BF_SFMT_BBI, IQ2000BF_SFMT_BBV, IQ2000BF_SFMT_BGEZ
- , IQ2000BF_SFMT_BGEZAL, IQ2000BF_SFMT_JALR, IQ2000BF_SFMT_JR, IQ2000BF_SFMT_LB
- , IQ2000BF_SFMT_LH, IQ2000BF_SFMT_LUI, IQ2000BF_SFMT_LW, IQ2000BF_SFMT_SB
- , IQ2000BF_SFMT_SH, IQ2000BF_SFMT_SW, IQ2000BF_SFMT_BREAK, IQ2000BF_SFMT_SYSCALL
- , IQ2000BF_SFMT_ANDOUI, IQ2000BF_SFMT_MRGB, IQ2000BF_SFMT_BCTXT, IQ2000BF_SFMT_LDW
- , IQ2000BF_SFMT_SDW, IQ2000BF_SFMT_J, IQ2000BF_SFMT_JAL
+ IQ2000BF_SFMT_EMPTY, IQ2000BF_SFMT_ADD, IQ2000BF_SFMT_ADDI, IQ2000BF_SFMT_RAM
+ , IQ2000BF_SFMT_SLL, IQ2000BF_SFMT_SLMV, IQ2000BF_SFMT_SLT, IQ2000BF_SFMT_SLTI
+ , IQ2000BF_SFMT_BBI, IQ2000BF_SFMT_BBV, IQ2000BF_SFMT_BGEZ, IQ2000BF_SFMT_BGEZAL
+ , IQ2000BF_SFMT_JALR, IQ2000BF_SFMT_JR, IQ2000BF_SFMT_LB, IQ2000BF_SFMT_LH
+ , IQ2000BF_SFMT_LUI, IQ2000BF_SFMT_LW, IQ2000BF_SFMT_SB, IQ2000BF_SFMT_SH
+ , IQ2000BF_SFMT_SW, IQ2000BF_SFMT_BREAK, IQ2000BF_SFMT_SYSCALL, IQ2000BF_SFMT_ANDOUI
+ , IQ2000BF_SFMT_MRGB, IQ2000BF_SFMT_BCTXT, IQ2000BF_SFMT_LDW, IQ2000BF_SFMT_SDW
+ , IQ2000BF_SFMT_J, IQ2000BF_SFMT_JAL
} IQ2000BF_SFMT_TYPE;
/* Function unit handlers (user written). */
diff --git a/sim/iq2000/model.c b/sim/iq2000/model.c
index a745bd5..6ac3883 100644
--- a/sim/iq2000/model.c
+++ b/sim/iq2000/model.c
@@ -2,22 +2,23 @@
THIS FILE IS MACHINE GENERATED WITH CGEN.
-Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+Copyright 1996-2009 Free Software Foundation, Inc.
This file is part of the GNU simulators.
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+ It is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
@@ -2549,7 +2550,7 @@ iq2000_init_cpu (SIM_CPU *cpu)
CPU_PC_FETCH (cpu) = iq2000bf_h_pc_get;
CPU_PC_STORE (cpu) = iq2000bf_h_pc_set;
CPU_GET_IDATA (cpu) = iq2000bf_get_idata;
- CPU_MAX_INSNS (cpu) = IQ2000BF_INSN_BMB + 1;
+ CPU_MAX_INSNS (cpu) = IQ2000BF_INSN__MAX;
CPU_INSN_NAME (cpu) = cgen_insn_name;
CPU_FULL_ENGINE_FN (cpu) = iq2000bf_engine_run_full;
#if WITH_FAST
diff --git a/sim/iq2000/sem-switch.c b/sim/iq2000/sem-switch.c
index 845fc32..e54e60d 100644
--- a/sim/iq2000/sem-switch.c
+++ b/sim/iq2000/sem-switch.c
@@ -2,22 +2,23 @@
THIS FILE IS MACHINE GENERATED WITH CGEN.
-Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+Copyright 1996-2009 Free Software Foundation, Inc.
This file is part of the GNU simulators.
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+ It is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
@@ -2651,7 +2652,7 @@ if (NOTSI (ANDSI (FLD (f_mask), SLLSI (1, 3)))) {
}
NEXT (vpc);
- CASE (sem, INSN_PKRLR1) : /* pkrlr1 $rt,$index,$count */
+ CASE (sem, INSN_PKRLR1) : /* pkrlr1 $rt,$_index,$count */
{
SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
ARGBUF *abuf = SEM_ARGBUF (sem_arg);
@@ -2666,7 +2667,7 @@ if (NOTSI (ANDSI (FLD (f_mask), SLLSI (1, 3)))) {
}
NEXT (vpc);
- CASE (sem, INSN_PKRLR30) : /* pkrlr30 $rt,$index,$count */
+ CASE (sem, INSN_PKRLR30) : /* pkrlr30 $rt,$_index,$count */
{
SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
ARGBUF *abuf = SEM_ARGBUF (sem_arg);
@@ -2696,7 +2697,7 @@ if (NOTSI (ANDSI (FLD (f_mask), SLLSI (1, 3)))) {
}
NEXT (vpc);
- CASE (sem, INSN_RBR1) : /* rbr1 $rt,$index,$count */
+ CASE (sem, INSN_RBR1) : /* rbr1 $rt,$_index,$count */
{
SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
ARGBUF *abuf = SEM_ARGBUF (sem_arg);
@@ -2711,7 +2712,7 @@ if (NOTSI (ANDSI (FLD (f_mask), SLLSI (1, 3)))) {
}
NEXT (vpc);
- CASE (sem, INSN_RBR30) : /* rbr30 $rt,$index,$count */
+ CASE (sem, INSN_RBR30) : /* rbr30 $rt,$_index,$count */
{
SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
ARGBUF *abuf = SEM_ARGBUF (sem_arg);
@@ -2756,7 +2757,7 @@ if (NOTSI (ANDSI (FLD (f_mask), SLLSI (1, 3)))) {
}
NEXT (vpc);
- CASE (sem, INSN_RXR1) : /* rxr1 $rt,$index,$count */
+ CASE (sem, INSN_RXR1) : /* rxr1 $rt,$_index,$count */
{
SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
ARGBUF *abuf = SEM_ARGBUF (sem_arg);
@@ -2771,7 +2772,7 @@ if (NOTSI (ANDSI (FLD (f_mask), SLLSI (1, 3)))) {
}
NEXT (vpc);
- CASE (sem, INSN_RXR30) : /* rxr30 $rt,$index,$count */
+ CASE (sem, INSN_RXR30) : /* rxr30 $rt,$_index,$count */
{
SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
ARGBUF *abuf = SEM_ARGBUF (sem_arg);
@@ -2951,7 +2952,7 @@ if (NOTSI (ANDSI (FLD (f_mask), SLLSI (1, 3)))) {
}
NEXT (vpc);
- CASE (sem, INSN_WBR1) : /* wbr1 $rt,$index,$count */
+ CASE (sem, INSN_WBR1) : /* wbr1 $rt,$_index,$count */
{
SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
ARGBUF *abuf = SEM_ARGBUF (sem_arg);
@@ -2966,7 +2967,7 @@ if (NOTSI (ANDSI (FLD (f_mask), SLLSI (1, 3)))) {
}
NEXT (vpc);
- CASE (sem, INSN_WBR1U) : /* wbr1u $rt,$index,$count */
+ CASE (sem, INSN_WBR1U) : /* wbr1u $rt,$_index,$count */
{
SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
ARGBUF *abuf = SEM_ARGBUF (sem_arg);
@@ -2981,7 +2982,7 @@ if (NOTSI (ANDSI (FLD (f_mask), SLLSI (1, 3)))) {
}
NEXT (vpc);
- CASE (sem, INSN_WBR30) : /* wbr30 $rt,$index,$count */
+ CASE (sem, INSN_WBR30) : /* wbr30 $rt,$_index,$count */
{
SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
ARGBUF *abuf = SEM_ARGBUF (sem_arg);
@@ -2996,7 +2997,7 @@ if (NOTSI (ANDSI (FLD (f_mask), SLLSI (1, 3)))) {
}
NEXT (vpc);
- CASE (sem, INSN_WBR30U) : /* wbr30u $rt,$index,$count */
+ CASE (sem, INSN_WBR30U) : /* wbr30u $rt,$_index,$count */
{
SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
ARGBUF *abuf = SEM_ARGBUF (sem_arg);
@@ -3041,7 +3042,7 @@ if (NOTSI (ANDSI (FLD (f_mask), SLLSI (1, 3)))) {
}
NEXT (vpc);
- CASE (sem, INSN_WXR1) : /* wxr1 $rt,$index,$count */
+ CASE (sem, INSN_WXR1) : /* wxr1 $rt,$_index,$count */
{
SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
ARGBUF *abuf = SEM_ARGBUF (sem_arg);
@@ -3056,7 +3057,7 @@ if (NOTSI (ANDSI (FLD (f_mask), SLLSI (1, 3)))) {
}
NEXT (vpc);
- CASE (sem, INSN_WXR1U) : /* wxr1u $rt,$index,$count */
+ CASE (sem, INSN_WXR1U) : /* wxr1u $rt,$_index,$count */
{
SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
ARGBUF *abuf = SEM_ARGBUF (sem_arg);
@@ -3071,7 +3072,7 @@ if (NOTSI (ANDSI (FLD (f_mask), SLLSI (1, 3)))) {
}
NEXT (vpc);
- CASE (sem, INSN_WXR30) : /* wxr30 $rt,$index,$count */
+ CASE (sem, INSN_WXR30) : /* wxr30 $rt,$_index,$count */
{
SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
ARGBUF *abuf = SEM_ARGBUF (sem_arg);
@@ -3086,7 +3087,7 @@ if (NOTSI (ANDSI (FLD (f_mask), SLLSI (1, 3)))) {
}
NEXT (vpc);
- CASE (sem, INSN_WXR30U) : /* wxr30u $rt,$index,$count */
+ CASE (sem, INSN_WXR30U) : /* wxr30u $rt,$_index,$count */
{
SEM_ARG sem_arg = SEM_SEM_ARG (vpc, sc);
ARGBUF *abuf = SEM_ARGBUF (sem_arg);
@@ -3256,7 +3257,6 @@ if (tmp_branch_) {
}
ENDSWITCH (sem) /* End of semantic switch. */
- ;
/* At this point `vpc' contains the next insn to execute. */
}
diff --git a/sim/iq2000/sem.c b/sim/iq2000/sem.c
index 25c833a..8a58c58 100644
--- a/sim/iq2000/sem.c
+++ b/sim/iq2000/sem.c
@@ -2,22 +2,23 @@
THIS FILE IS MACHINE GENERATED WITH CGEN.
-Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+Copyright 1996-2009 Free Software Foundation, Inc.
This file is part of the GNU simulators.
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.
+ This file is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+ It is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
@@ -2685,7 +2686,7 @@ SEM_FN_NAME (iq2000bf,pkrl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
#undef FLD
}
-/* pkrlr1: pkrlr1 $rt,$index,$count */
+/* pkrlr1: pkrlr1 $rt,$_index,$count */
static SEM_PC
SEM_FN_NAME (iq2000bf,pkrlr1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
@@ -2702,7 +2703,7 @@ SEM_FN_NAME (iq2000bf,pkrlr1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
#undef FLD
}
-/* pkrlr30: pkrlr30 $rt,$index,$count */
+/* pkrlr30: pkrlr30 $rt,$_index,$count */
static SEM_PC
SEM_FN_NAME (iq2000bf,pkrlr30) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
@@ -2736,7 +2737,7 @@ SEM_FN_NAME (iq2000bf,rb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
#undef FLD
}
-/* rbr1: rbr1 $rt,$index,$count */
+/* rbr1: rbr1 $rt,$_index,$count */
static SEM_PC
SEM_FN_NAME (iq2000bf,rbr1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
@@ -2753,7 +2754,7 @@ SEM_FN_NAME (iq2000bf,rbr1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
#undef FLD
}
-/* rbr30: rbr30 $rt,$index,$count */
+/* rbr30: rbr30 $rt,$_index,$count */
static SEM_PC
SEM_FN_NAME (iq2000bf,rbr30) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
@@ -2804,7 +2805,7 @@ SEM_FN_NAME (iq2000bf,rx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
#undef FLD
}
-/* rxr1: rxr1 $rt,$index,$count */
+/* rxr1: rxr1 $rt,$_index,$count */
static SEM_PC
SEM_FN_NAME (iq2000bf,rxr1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
@@ -2821,7 +2822,7 @@ SEM_FN_NAME (iq2000bf,rxr1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
#undef FLD
}
-/* rxr30: rxr30 $rt,$index,$count */
+/* rxr30: rxr30 $rt,$_index,$count */
static SEM_PC
SEM_FN_NAME (iq2000bf,rxr30) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
@@ -3025,7 +3026,7 @@ SEM_FN_NAME (iq2000bf,wbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
#undef FLD
}
-/* wbr1: wbr1 $rt,$index,$count */
+/* wbr1: wbr1 $rt,$_index,$count */
static SEM_PC
SEM_FN_NAME (iq2000bf,wbr1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
@@ -3042,7 +3043,7 @@ SEM_FN_NAME (iq2000bf,wbr1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
#undef FLD
}
-/* wbr1u: wbr1u $rt,$index,$count */
+/* wbr1u: wbr1u $rt,$_index,$count */
static SEM_PC
SEM_FN_NAME (iq2000bf,wbr1u) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
@@ -3059,7 +3060,7 @@ SEM_FN_NAME (iq2000bf,wbr1u) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
#undef FLD
}
-/* wbr30: wbr30 $rt,$index,$count */
+/* wbr30: wbr30 $rt,$_index,$count */
static SEM_PC
SEM_FN_NAME (iq2000bf,wbr30) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
@@ -3076,7 +3077,7 @@ SEM_FN_NAME (iq2000bf,wbr30) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
#undef FLD
}
-/* wbr30u: wbr30u $rt,$index,$count */
+/* wbr30u: wbr30u $rt,$_index,$count */
static SEM_PC
SEM_FN_NAME (iq2000bf,wbr30u) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
@@ -3127,7 +3128,7 @@ SEM_FN_NAME (iq2000bf,wxu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
#undef FLD
}
-/* wxr1: wxr1 $rt,$index,$count */
+/* wxr1: wxr1 $rt,$_index,$count */
static SEM_PC
SEM_FN_NAME (iq2000bf,wxr1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
@@ -3144,7 +3145,7 @@ SEM_FN_NAME (iq2000bf,wxr1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
#undef FLD
}
-/* wxr1u: wxr1u $rt,$index,$count */
+/* wxr1u: wxr1u $rt,$_index,$count */
static SEM_PC
SEM_FN_NAME (iq2000bf,wxr1u) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
@@ -3161,7 +3162,7 @@ SEM_FN_NAME (iq2000bf,wxr1u) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
#undef FLD
}
-/* wxr30: wxr30 $rt,$index,$count */
+/* wxr30: wxr30 $rt,$_index,$count */
static SEM_PC
SEM_FN_NAME (iq2000bf,wxr30) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
@@ -3178,7 +3179,7 @@ SEM_FN_NAME (iq2000bf,wxr30) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
#undef FLD
}
-/* wxr30u: wxr30u $rt,$index,$count */
+/* wxr30u: wxr30u $rt,$_index,$count */
static SEM_PC
SEM_FN_NAME (iq2000bf,wxr30u) (SIM_CPU *current_cpu, SEM_ARG sem_arg)