mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-29 18:41:27 +00:00
2001-11-14 Dave Brolley <brolley@redhat.com>
* arch.c: Regenerate. * arch.h: Regenerate. * cpu.c: Regenerate. * cpu.h: Regenerate. * cpuall.h: Regenerate. * cpux.c: Regenerate. * cpux.h: Regenerate. * decode.c: Regenerate. * decode.h: Regenerate. * decodex.c: Regenerate. * decodex.h: Regenerate. * model.c: Regenerate. * modelx.c: Regenerate. * sem-switch.c: Regenerate. * sem.c: Regenerate. * semx-switch.c: Regenerate.
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
|
||||
THIS FILE IS MACHINE GENERATED WITH CGEN.
|
||||
|
||||
Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
|
||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Simulators.
|
||||
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
|
||||
@@ -37,7 +37,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
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 m32rxf_insn_data[M32RXF_INSN_MAX];
|
||||
static IDESC m32rxf_insn_data[M32RXF_INSN_SNC + 1];
|
||||
|
||||
/* Commas between elements are contained in the macros.
|
||||
Some of these are conditionally compiled out. */
|
||||
@@ -99,14 +99,14 @@ static const struct insn_sem m32rxf_insn_sem[] =
|
||||
{ M32R_INSN_JMP, M32RXF_INSN_JMP, M32RXF_SFMT_JMP, M32RXF_INSN_PAR_JMP, M32RXF_INSN_WRITE_JMP },
|
||||
{ M32R_INSN_LD, M32RXF_INSN_LD, M32RXF_SFMT_LD, M32RXF_INSN_PAR_LD, M32RXF_INSN_WRITE_LD },
|
||||
{ M32R_INSN_LD_D, M32RXF_INSN_LD_D, M32RXF_SFMT_LD_D, NOPAR, NOPAR },
|
||||
{ M32R_INSN_LDB, M32RXF_INSN_LDB, M32RXF_SFMT_LD, M32RXF_INSN_PAR_LDB, M32RXF_INSN_WRITE_LDB },
|
||||
{ M32R_INSN_LDB_D, M32RXF_INSN_LDB_D, M32RXF_SFMT_LD_D, NOPAR, NOPAR },
|
||||
{ M32R_INSN_LDH, M32RXF_INSN_LDH, M32RXF_SFMT_LD, M32RXF_INSN_PAR_LDH, M32RXF_INSN_WRITE_LDH },
|
||||
{ M32R_INSN_LDH_D, M32RXF_INSN_LDH_D, M32RXF_SFMT_LD_D, NOPAR, NOPAR },
|
||||
{ M32R_INSN_LDUB, M32RXF_INSN_LDUB, M32RXF_SFMT_LD, M32RXF_INSN_PAR_LDUB, M32RXF_INSN_WRITE_LDUB },
|
||||
{ M32R_INSN_LDUB_D, M32RXF_INSN_LDUB_D, M32RXF_SFMT_LD_D, NOPAR, NOPAR },
|
||||
{ M32R_INSN_LDUH, M32RXF_INSN_LDUH, M32RXF_SFMT_LD, M32RXF_INSN_PAR_LDUH, M32RXF_INSN_WRITE_LDUH },
|
||||
{ M32R_INSN_LDUH_D, M32RXF_INSN_LDUH_D, M32RXF_SFMT_LD_D, NOPAR, NOPAR },
|
||||
{ M32R_INSN_LDB, M32RXF_INSN_LDB, M32RXF_SFMT_LDB, M32RXF_INSN_PAR_LDB, M32RXF_INSN_WRITE_LDB },
|
||||
{ M32R_INSN_LDB_D, M32RXF_INSN_LDB_D, M32RXF_SFMT_LDB_D, NOPAR, NOPAR },
|
||||
{ M32R_INSN_LDH, M32RXF_INSN_LDH, M32RXF_SFMT_LDH, M32RXF_INSN_PAR_LDH, M32RXF_INSN_WRITE_LDH },
|
||||
{ M32R_INSN_LDH_D, M32RXF_INSN_LDH_D, M32RXF_SFMT_LDH_D, NOPAR, NOPAR },
|
||||
{ M32R_INSN_LDUB, M32RXF_INSN_LDUB, M32RXF_SFMT_LDB, M32RXF_INSN_PAR_LDUB, M32RXF_INSN_WRITE_LDUB },
|
||||
{ M32R_INSN_LDUB_D, M32RXF_INSN_LDUB_D, M32RXF_SFMT_LDB_D, NOPAR, NOPAR },
|
||||
{ M32R_INSN_LDUH, M32RXF_INSN_LDUH, M32RXF_SFMT_LDH, M32RXF_INSN_PAR_LDUH, M32RXF_INSN_WRITE_LDUH },
|
||||
{ M32R_INSN_LDUH_D, M32RXF_INSN_LDUH_D, M32RXF_SFMT_LDH_D, NOPAR, NOPAR },
|
||||
{ M32R_INSN_LD_PLUS, M32RXF_INSN_LD_PLUS, M32RXF_SFMT_LD_PLUS, M32RXF_INSN_PAR_LD_PLUS, M32RXF_INSN_WRITE_LD_PLUS },
|
||||
{ M32R_INSN_LD24, M32RXF_INSN_LD24, M32RXF_SFMT_LD24, NOPAR, NOPAR },
|
||||
{ M32R_INSN_LDI8, M32RXF_INSN_LDI8, M32RXF_SFMT_LDI8, M32RXF_INSN_PAR_LDI8, M32RXF_INSN_WRITE_LDI8 },
|
||||
@@ -210,7 +210,7 @@ m32rxf_init_idesc_table (SIM_CPU *cpu)
|
||||
{
|
||||
IDESC *id,*tabend;
|
||||
const struct insn_sem *t,*tend;
|
||||
int tabsize = M32RXF_INSN_MAX;
|
||||
int tabsize = sizeof (m32rxf_insn_data) / sizeof (IDESC);
|
||||
IDESC *table = m32rxf_insn_data;
|
||||
|
||||
memset (table, 0, tabsize * sizeof (IDESC));
|
||||
@@ -258,31 +258,81 @@ m32rxf_decode (SIM_CPU *current_cpu, IADDR pc,
|
||||
unsigned int val = (((insn >> 8) & (15 << 4)) | ((insn >> 4) & (15 << 0)));
|
||||
switch (val)
|
||||
{
|
||||
case 0 : itype = M32RXF_INSN_SUBV; goto extract_sfmt_addv; case 1 : itype = M32RXF_INSN_SUBX; goto extract_sfmt_addx; case 2 : itype = M32RXF_INSN_SUB; goto extract_sfmt_add; case 3 : itype = M32RXF_INSN_NEG; goto extract_sfmt_mv; case 4 : itype = M32RXF_INSN_CMP; goto extract_sfmt_cmp; case 5 : itype = M32RXF_INSN_CMPU; goto extract_sfmt_cmp; case 6 : itype = M32RXF_INSN_CMPEQ; goto extract_sfmt_cmp; case 7 :
|
||||
case 0 : itype = M32RXF_INSN_SUBV;goto extract_sfmt_addv;
|
||||
case 1 : itype = M32RXF_INSN_SUBX;goto extract_sfmt_addx;
|
||||
case 2 : itype = M32RXF_INSN_SUB;goto extract_sfmt_add;
|
||||
case 3 : itype = M32RXF_INSN_NEG;goto extract_sfmt_mv;
|
||||
case 4 : itype = M32RXF_INSN_CMP;goto extract_sfmt_cmp;
|
||||
case 5 : itype = M32RXF_INSN_CMPU;goto extract_sfmt_cmp;
|
||||
case 6 : itype = M32RXF_INSN_CMPEQ;goto extract_sfmt_cmp;
|
||||
case 7 :
|
||||
{
|
||||
unsigned int val = (((insn >> 8) & (3 << 0)));
|
||||
switch (val)
|
||||
{
|
||||
case 0 : itype = M32RXF_INSN_CMPZ; goto extract_sfmt_cmpz; case 3 : itype = M32RXF_INSN_PCMPBZ; goto extract_sfmt_cmpz; default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
case 0 : itype = M32RXF_INSN_CMPZ;goto extract_sfmt_cmpz;
|
||||
case 3 : itype = M32RXF_INSN_PCMPBZ;goto extract_sfmt_cmpz;
|
||||
default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
}
|
||||
}
|
||||
case 8 : itype = M32RXF_INSN_ADDV; goto extract_sfmt_addv; case 9 : itype = M32RXF_INSN_ADDX; goto extract_sfmt_addx; case 10 : itype = M32RXF_INSN_ADD; goto extract_sfmt_add; case 11 : itype = M32RXF_INSN_NOT; goto extract_sfmt_mv; case 12 : itype = M32RXF_INSN_AND; goto extract_sfmt_add; case 13 : itype = M32RXF_INSN_XOR; goto extract_sfmt_add; case 14 : itype = M32RXF_INSN_OR; goto extract_sfmt_add; case 16 : itype = M32RXF_INSN_SRL; goto extract_sfmt_add; case 18 : itype = M32RXF_INSN_SRA; goto extract_sfmt_add; case 20 : itype = M32RXF_INSN_SLL; goto extract_sfmt_add; case 22 : itype = M32RXF_INSN_MUL; goto extract_sfmt_add; case 24 : itype = M32RXF_INSN_MV; goto extract_sfmt_mv; case 25 : itype = M32RXF_INSN_MVFC; goto extract_sfmt_mvfc; case 26 : itype = M32RXF_INSN_MVTC; goto extract_sfmt_mvtc; case 28 :
|
||||
case 8 : itype = M32RXF_INSN_ADDV;goto extract_sfmt_addv;
|
||||
case 9 : itype = M32RXF_INSN_ADDX;goto extract_sfmt_addx;
|
||||
case 10 : itype = M32RXF_INSN_ADD;goto extract_sfmt_add;
|
||||
case 11 : itype = M32RXF_INSN_NOT;goto extract_sfmt_mv;
|
||||
case 12 : itype = M32RXF_INSN_AND;goto extract_sfmt_add;
|
||||
case 13 : itype = M32RXF_INSN_XOR;goto extract_sfmt_add;
|
||||
case 14 : itype = M32RXF_INSN_OR;goto extract_sfmt_add;
|
||||
case 16 : itype = M32RXF_INSN_SRL;goto extract_sfmt_add;
|
||||
case 18 : itype = M32RXF_INSN_SRA;goto extract_sfmt_add;
|
||||
case 20 : itype = M32RXF_INSN_SLL;goto extract_sfmt_add;
|
||||
case 22 : itype = M32RXF_INSN_MUL;goto extract_sfmt_add;
|
||||
case 24 : itype = M32RXF_INSN_MV;goto extract_sfmt_mv;
|
||||
case 25 : itype = M32RXF_INSN_MVFC;goto extract_sfmt_mvfc;
|
||||
case 26 : itype = M32RXF_INSN_MVTC;goto extract_sfmt_mvtc;
|
||||
case 28 :
|
||||
{
|
||||
unsigned int val = (((insn >> 8) & (3 << 0)));
|
||||
switch (val)
|
||||
{
|
||||
case 0 : itype = M32RXF_INSN_JC; goto extract_sfmt_jc; case 1 : itype = M32RXF_INSN_JNC; goto extract_sfmt_jc; case 2 : itype = M32RXF_INSN_JL; goto extract_sfmt_jl; case 3 : itype = M32RXF_INSN_JMP; goto extract_sfmt_jmp; default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
case 0 : itype = M32RXF_INSN_JC;goto extract_sfmt_jc;
|
||||
case 1 : itype = M32RXF_INSN_JNC;goto extract_sfmt_jc;
|
||||
case 2 : itype = M32RXF_INSN_JL;goto extract_sfmt_jl;
|
||||
case 3 : itype = M32RXF_INSN_JMP;goto extract_sfmt_jmp;
|
||||
default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
}
|
||||
}
|
||||
case 29 : itype = M32RXF_INSN_RTE; goto extract_sfmt_rte; case 31 : itype = M32RXF_INSN_TRAP; goto extract_sfmt_trap; case 32 : itype = M32RXF_INSN_STB; goto extract_sfmt_stb; case 34 : itype = M32RXF_INSN_STH; goto extract_sfmt_sth; case 36 : itype = M32RXF_INSN_ST; goto extract_sfmt_st; case 37 : itype = M32RXF_INSN_UNLOCK; goto extract_sfmt_unlock; case 38 : itype = M32RXF_INSN_ST_PLUS; goto extract_sfmt_st_plus; case 39 : itype = M32RXF_INSN_ST_MINUS; goto extract_sfmt_st_plus; case 40 : itype = M32RXF_INSN_LDB; goto extract_sfmt_ld; case 41 : itype = M32RXF_INSN_LDUB; goto extract_sfmt_ld; case 42 : itype = M32RXF_INSN_LDH; goto extract_sfmt_ld; case 43 : itype = M32RXF_INSN_LDUH; goto extract_sfmt_ld; case 44 : itype = M32RXF_INSN_LD; goto extract_sfmt_ld; case 45 : itype = M32RXF_INSN_LOCK; goto extract_sfmt_lock; case 46 : itype = M32RXF_INSN_LD_PLUS; goto extract_sfmt_ld_plus; case 48 : /* fall through */
|
||||
case 56 : itype = M32RXF_INSN_MULHI_A; goto extract_sfmt_mulhi_a; case 49 : /* fall through */
|
||||
case 57 : itype = M32RXF_INSN_MULLO_A; goto extract_sfmt_mulhi_a; case 50 : /* fall through */
|
||||
case 58 : itype = M32RXF_INSN_MULWHI_A; goto extract_sfmt_mulhi_a; case 51 : /* fall through */
|
||||
case 59 : itype = M32RXF_INSN_MULWLO_A; goto extract_sfmt_mulhi_a; case 52 : /* fall through */
|
||||
case 60 : itype = M32RXF_INSN_MACHI_A; goto extract_sfmt_machi_a; case 53 : /* fall through */
|
||||
case 61 : itype = M32RXF_INSN_MACLO_A; goto extract_sfmt_machi_a; case 54 : /* fall through */
|
||||
case 62 : itype = M32RXF_INSN_MACWHI_A; goto extract_sfmt_machi_a; case 55 : /* fall through */
|
||||
case 63 : itype = M32RXF_INSN_MACWLO_A; goto extract_sfmt_machi_a; case 64 : /* fall through */
|
||||
case 29 : itype = M32RXF_INSN_RTE;goto extract_sfmt_rte;
|
||||
case 31 : itype = M32RXF_INSN_TRAP;goto extract_sfmt_trap;
|
||||
case 32 : itype = M32RXF_INSN_STB;goto extract_sfmt_stb;
|
||||
case 34 : itype = M32RXF_INSN_STH;goto extract_sfmt_sth;
|
||||
case 36 : itype = M32RXF_INSN_ST;goto extract_sfmt_st;
|
||||
case 37 : itype = M32RXF_INSN_UNLOCK;goto extract_sfmt_unlock;
|
||||
case 38 : itype = M32RXF_INSN_ST_PLUS;goto extract_sfmt_st_plus;
|
||||
case 39 : itype = M32RXF_INSN_ST_MINUS;goto extract_sfmt_st_plus;
|
||||
case 40 : itype = M32RXF_INSN_LDB;goto extract_sfmt_ldb;
|
||||
case 41 : itype = M32RXF_INSN_LDUB;goto extract_sfmt_ldb;
|
||||
case 42 : itype = M32RXF_INSN_LDH;goto extract_sfmt_ldh;
|
||||
case 43 : itype = M32RXF_INSN_LDUH;goto extract_sfmt_ldh;
|
||||
case 44 : itype = M32RXF_INSN_LD;goto extract_sfmt_ld;
|
||||
case 45 : itype = M32RXF_INSN_LOCK;goto extract_sfmt_lock;
|
||||
case 46 : itype = M32RXF_INSN_LD_PLUS;goto extract_sfmt_ld_plus;
|
||||
case 48 : /* fall through */
|
||||
case 56 : itype = M32RXF_INSN_MULHI_A;goto extract_sfmt_mulhi_a;
|
||||
case 49 : /* fall through */
|
||||
case 57 : itype = M32RXF_INSN_MULLO_A;goto extract_sfmt_mulhi_a;
|
||||
case 50 : /* fall through */
|
||||
case 58 : itype = M32RXF_INSN_MULWHI_A;goto extract_sfmt_mulhi_a;
|
||||
case 51 : /* fall through */
|
||||
case 59 : itype = M32RXF_INSN_MULWLO_A;goto extract_sfmt_mulhi_a;
|
||||
case 52 : /* fall through */
|
||||
case 60 : itype = M32RXF_INSN_MACHI_A;goto extract_sfmt_machi_a;
|
||||
case 53 : /* fall through */
|
||||
case 61 : itype = M32RXF_INSN_MACLO_A;goto extract_sfmt_machi_a;
|
||||
case 54 : /* fall through */
|
||||
case 62 : itype = M32RXF_INSN_MACWHI_A;goto extract_sfmt_machi_a;
|
||||
case 55 : /* fall through */
|
||||
case 63 : itype = M32RXF_INSN_MACWLO_A;goto extract_sfmt_machi_a;
|
||||
case 64 : /* fall through */
|
||||
case 65 : /* fall through */
|
||||
case 66 : /* fall through */
|
||||
case 67 : /* fall through */
|
||||
@@ -297,23 +347,39 @@ m32rxf_decode (SIM_CPU *current_cpu, IADDR pc,
|
||||
case 76 : /* fall through */
|
||||
case 77 : /* fall through */
|
||||
case 78 : /* fall through */
|
||||
case 79 : itype = M32RXF_INSN_ADDI; goto extract_sfmt_addi; case 80 : /* fall through */
|
||||
case 81 : itype = M32RXF_INSN_SRLI; goto extract_sfmt_slli; case 82 : /* fall through */
|
||||
case 83 : itype = M32RXF_INSN_SRAI; goto extract_sfmt_slli; case 84 : /* fall through */
|
||||
case 85 : itype = M32RXF_INSN_SLLI; goto extract_sfmt_slli; case 87 :
|
||||
case 79 : itype = M32RXF_INSN_ADDI;goto extract_sfmt_addi;
|
||||
case 80 : /* fall through */
|
||||
case 81 : itype = M32RXF_INSN_SRLI;goto extract_sfmt_slli;
|
||||
case 82 : /* fall through */
|
||||
case 83 : itype = M32RXF_INSN_SRAI;goto extract_sfmt_slli;
|
||||
case 84 : /* fall through */
|
||||
case 85 : itype = M32RXF_INSN_SLLI;goto extract_sfmt_slli;
|
||||
case 87 :
|
||||
{
|
||||
unsigned int val = (((insn >> 0) & (1 << 0)));
|
||||
switch (val)
|
||||
{
|
||||
case 0 : itype = M32RXF_INSN_MVTACHI_A; goto extract_sfmt_mvtachi_a; case 1 : itype = M32RXF_INSN_MVTACLO_A; goto extract_sfmt_mvtachi_a; default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
case 0 : itype = M32RXF_INSN_MVTACHI_A;goto extract_sfmt_mvtachi_a;
|
||||
case 1 : itype = M32RXF_INSN_MVTACLO_A;goto extract_sfmt_mvtachi_a;
|
||||
default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
}
|
||||
}
|
||||
case 88 : itype = M32RXF_INSN_RACH_DSI; goto extract_sfmt_rac_dsi; case 89 : itype = M32RXF_INSN_RAC_DSI; goto extract_sfmt_rac_dsi; case 90 : itype = M32RXF_INSN_MULWU1; goto extract_sfmt_mulwu1; case 91 : itype = M32RXF_INSN_MACWU1; goto extract_sfmt_macwu1; case 92 : itype = M32RXF_INSN_MACLH1; goto extract_sfmt_macwu1; case 93 : itype = M32RXF_INSN_MSBLO; goto extract_sfmt_msblo; case 94 : itype = M32RXF_INSN_SADD; goto extract_sfmt_sadd; case 95 :
|
||||
case 88 : itype = M32RXF_INSN_RACH_DSI;goto extract_sfmt_rac_dsi;
|
||||
case 89 : itype = M32RXF_INSN_RAC_DSI;goto extract_sfmt_rac_dsi;
|
||||
case 90 : itype = M32RXF_INSN_MULWU1;goto extract_sfmt_mulwu1;
|
||||
case 91 : itype = M32RXF_INSN_MACWU1;goto extract_sfmt_macwu1;
|
||||
case 92 : itype = M32RXF_INSN_MACLH1;goto extract_sfmt_macwu1;
|
||||
case 93 : itype = M32RXF_INSN_MSBLO;goto extract_sfmt_msblo;
|
||||
case 94 : itype = M32RXF_INSN_SADD;goto extract_sfmt_sadd;
|
||||
case 95 :
|
||||
{
|
||||
unsigned int val = (((insn >> 0) & (3 << 0)));
|
||||
switch (val)
|
||||
{
|
||||
case 0 : itype = M32RXF_INSN_MVFACHI_A; goto extract_sfmt_mvfachi_a; case 1 : itype = M32RXF_INSN_MVFACLO_A; goto extract_sfmt_mvfachi_a; case 2 : itype = M32RXF_INSN_MVFACMI_A; goto extract_sfmt_mvfachi_a; default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
case 0 : itype = M32RXF_INSN_MVFACHI_A;goto extract_sfmt_mvfachi_a;
|
||||
case 1 : itype = M32RXF_INSN_MVFACLO_A;goto extract_sfmt_mvfachi_a;
|
||||
case 2 : itype = M32RXF_INSN_MVFACMI_A;goto extract_sfmt_mvfachi_a;
|
||||
default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
}
|
||||
}
|
||||
case 96 : /* fall through */
|
||||
@@ -331,12 +397,22 @@ m32rxf_decode (SIM_CPU *current_cpu, IADDR pc,
|
||||
case 108 : /* fall through */
|
||||
case 109 : /* fall through */
|
||||
case 110 : /* fall through */
|
||||
case 111 : itype = M32RXF_INSN_LDI8; goto extract_sfmt_ldi8; case 112 :
|
||||
case 111 : itype = M32RXF_INSN_LDI8;goto extract_sfmt_ldi8;
|
||||
case 112 :
|
||||
{
|
||||
unsigned int val = (((insn >> 8) & (15 << 0)));
|
||||
switch (val)
|
||||
{
|
||||
case 0 : itype = M32RXF_INSN_NOP; goto extract_sfmt_nop; case 4 : itype = M32RXF_INSN_SC; goto extract_sfmt_sc; case 5 : itype = M32RXF_INSN_SNC; goto extract_sfmt_sc; case 8 : itype = M32RXF_INSN_BCL8; goto extract_sfmt_bcl8; case 9 : itype = M32RXF_INSN_BNCL8; goto extract_sfmt_bcl8; case 12 : itype = M32RXF_INSN_BC8; goto extract_sfmt_bc8; case 13 : itype = M32RXF_INSN_BNC8; goto extract_sfmt_bc8; case 14 : itype = M32RXF_INSN_BL8; goto extract_sfmt_bl8; case 15 : itype = M32RXF_INSN_BRA8; goto extract_sfmt_bra8; default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
case 0 : itype = M32RXF_INSN_NOP;goto extract_sfmt_nop;
|
||||
case 4 : itype = M32RXF_INSN_SC;goto extract_sfmt_sc;
|
||||
case 5 : itype = M32RXF_INSN_SNC;goto extract_sfmt_sc;
|
||||
case 8 : itype = M32RXF_INSN_BCL8;goto extract_sfmt_bcl8;
|
||||
case 9 : itype = M32RXF_INSN_BNCL8;goto extract_sfmt_bcl8;
|
||||
case 12 : itype = M32RXF_INSN_BC8;goto extract_sfmt_bc8;
|
||||
case 13 : itype = M32RXF_INSN_BNC8;goto extract_sfmt_bc8;
|
||||
case 14 : itype = M32RXF_INSN_BL8;goto extract_sfmt_bl8;
|
||||
case 15 : itype = M32RXF_INSN_BRA8;goto extract_sfmt_bra8;
|
||||
default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
}
|
||||
}
|
||||
case 113 : /* fall through */
|
||||
@@ -358,26 +434,68 @@ m32rxf_decode (SIM_CPU *current_cpu, IADDR pc,
|
||||
unsigned int val = (((insn >> 8) & (7 << 0)));
|
||||
switch (val)
|
||||
{
|
||||
case 0 : itype = M32RXF_INSN_BCL8; goto extract_sfmt_bcl8; case 1 : itype = M32RXF_INSN_BNCL8; goto extract_sfmt_bcl8; case 4 : itype = M32RXF_INSN_BC8; goto extract_sfmt_bc8; case 5 : itype = M32RXF_INSN_BNC8; goto extract_sfmt_bc8; case 6 : itype = M32RXF_INSN_BL8; goto extract_sfmt_bl8; case 7 : itype = M32RXF_INSN_BRA8; goto extract_sfmt_bra8; default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
case 0 : itype = M32RXF_INSN_BCL8;goto extract_sfmt_bcl8;
|
||||
case 1 : itype = M32RXF_INSN_BNCL8;goto extract_sfmt_bcl8;
|
||||
case 4 : itype = M32RXF_INSN_BC8;goto extract_sfmt_bc8;
|
||||
case 5 : itype = M32RXF_INSN_BNC8;goto extract_sfmt_bc8;
|
||||
case 6 : itype = M32RXF_INSN_BL8;goto extract_sfmt_bl8;
|
||||
case 7 : itype = M32RXF_INSN_BRA8;goto extract_sfmt_bra8;
|
||||
default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
}
|
||||
}
|
||||
case 132 : itype = M32RXF_INSN_CMPI; goto extract_sfmt_cmpi; case 133 : itype = M32RXF_INSN_CMPUI; goto extract_sfmt_cmpi; case 134 :
|
||||
case 132 : itype = M32RXF_INSN_CMPI;goto extract_sfmt_cmpi;
|
||||
case 133 : itype = M32RXF_INSN_CMPUI;goto extract_sfmt_cmpi;
|
||||
case 134 :
|
||||
{
|
||||
unsigned int val = (((insn >> -8) & (3 << 0)));
|
||||
switch (val)
|
||||
{
|
||||
case 0 : itype = M32RXF_INSN_SAT; goto extract_sfmt_sat; case 2 : itype = M32RXF_INSN_SATH; goto extract_sfmt_satb; case 3 : itype = M32RXF_INSN_SATB; goto extract_sfmt_satb; default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
case 0 : itype = M32RXF_INSN_SAT;goto extract_sfmt_sat;
|
||||
case 2 : itype = M32RXF_INSN_SATH;goto extract_sfmt_satb;
|
||||
case 3 : itype = M32RXF_INSN_SATB;goto extract_sfmt_satb;
|
||||
default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
}
|
||||
}
|
||||
case 136 : itype = M32RXF_INSN_ADDV3; goto extract_sfmt_addv3; case 138 : itype = M32RXF_INSN_ADD3; goto extract_sfmt_add3; case 140 : itype = M32RXF_INSN_AND3; goto extract_sfmt_and3; case 141 : itype = M32RXF_INSN_XOR3; goto extract_sfmt_and3; case 142 : itype = M32RXF_INSN_OR3; goto extract_sfmt_or3; case 144 :
|
||||
case 136 : itype = M32RXF_INSN_ADDV3;goto extract_sfmt_addv3;
|
||||
case 138 : itype = M32RXF_INSN_ADD3;goto extract_sfmt_add3;
|
||||
case 140 : itype = M32RXF_INSN_AND3;goto extract_sfmt_and3;
|
||||
case 141 : itype = M32RXF_INSN_XOR3;goto extract_sfmt_and3;
|
||||
case 142 : itype = M32RXF_INSN_OR3;goto extract_sfmt_or3;
|
||||
case 144 :
|
||||
{
|
||||
unsigned int val = (((insn >> -12) & (1 << 0)));
|
||||
switch (val)
|
||||
{
|
||||
case 0 : itype = M32RXF_INSN_DIV; goto extract_sfmt_div; case 1 : itype = M32RXF_INSN_DIVH; goto extract_sfmt_div; default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
case 0 : itype = M32RXF_INSN_DIV;goto extract_sfmt_div;
|
||||
case 1 : itype = M32RXF_INSN_DIVH;goto extract_sfmt_div;
|
||||
default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
}
|
||||
}
|
||||
case 145 : itype = M32RXF_INSN_DIVU; goto extract_sfmt_div; case 146 : itype = M32RXF_INSN_REM; goto extract_sfmt_div; case 147 : itype = M32RXF_INSN_REMU; goto extract_sfmt_div; case 152 : itype = M32RXF_INSN_SRL3; goto extract_sfmt_sll3; case 154 : itype = M32RXF_INSN_SRA3; goto extract_sfmt_sll3; case 156 : itype = M32RXF_INSN_SLL3; goto extract_sfmt_sll3; case 159 : itype = M32RXF_INSN_LDI16; goto extract_sfmt_ldi16; case 160 : itype = M32RXF_INSN_STB_D; goto extract_sfmt_stb_d; case 162 : itype = M32RXF_INSN_STH_D; goto extract_sfmt_sth_d; case 164 : itype = M32RXF_INSN_ST_D; goto extract_sfmt_st_d; case 168 : itype = M32RXF_INSN_LDB_D; goto extract_sfmt_ld_d; case 169 : itype = M32RXF_INSN_LDUB_D; goto extract_sfmt_ld_d; case 170 : itype = M32RXF_INSN_LDH_D; goto extract_sfmt_ld_d; case 171 : itype = M32RXF_INSN_LDUH_D; goto extract_sfmt_ld_d; case 172 : itype = M32RXF_INSN_LD_D; goto extract_sfmt_ld_d; case 176 : itype = M32RXF_INSN_BEQ; goto extract_sfmt_beq; case 177 : itype = M32RXF_INSN_BNE; goto extract_sfmt_beq; case 184 : itype = M32RXF_INSN_BEQZ; goto extract_sfmt_beqz; case 185 : itype = M32RXF_INSN_BNEZ; goto extract_sfmt_beqz; case 186 : itype = M32RXF_INSN_BLTZ; goto extract_sfmt_beqz; case 187 : itype = M32RXF_INSN_BGEZ; goto extract_sfmt_beqz; case 188 : itype = M32RXF_INSN_BLEZ; goto extract_sfmt_beqz; case 189 : itype = M32RXF_INSN_BGTZ; goto extract_sfmt_beqz; case 220 : itype = M32RXF_INSN_SETH; goto extract_sfmt_seth; case 224 : /* fall through */
|
||||
case 145 : itype = M32RXF_INSN_DIVU;goto extract_sfmt_div;
|
||||
case 146 : itype = M32RXF_INSN_REM;goto extract_sfmt_div;
|
||||
case 147 : itype = M32RXF_INSN_REMU;goto extract_sfmt_div;
|
||||
case 152 : itype = M32RXF_INSN_SRL3;goto extract_sfmt_sll3;
|
||||
case 154 : itype = M32RXF_INSN_SRA3;goto extract_sfmt_sll3;
|
||||
case 156 : itype = M32RXF_INSN_SLL3;goto extract_sfmt_sll3;
|
||||
case 159 : itype = M32RXF_INSN_LDI16;goto extract_sfmt_ldi16;
|
||||
case 160 : itype = M32RXF_INSN_STB_D;goto extract_sfmt_stb_d;
|
||||
case 162 : itype = M32RXF_INSN_STH_D;goto extract_sfmt_sth_d;
|
||||
case 164 : itype = M32RXF_INSN_ST_D;goto extract_sfmt_st_d;
|
||||
case 168 : itype = M32RXF_INSN_LDB_D;goto extract_sfmt_ldb_d;
|
||||
case 169 : itype = M32RXF_INSN_LDUB_D;goto extract_sfmt_ldb_d;
|
||||
case 170 : itype = M32RXF_INSN_LDH_D;goto extract_sfmt_ldh_d;
|
||||
case 171 : itype = M32RXF_INSN_LDUH_D;goto extract_sfmt_ldh_d;
|
||||
case 172 : itype = M32RXF_INSN_LD_D;goto extract_sfmt_ld_d;
|
||||
case 176 : itype = M32RXF_INSN_BEQ;goto extract_sfmt_beq;
|
||||
case 177 : itype = M32RXF_INSN_BNE;goto extract_sfmt_beq;
|
||||
case 184 : itype = M32RXF_INSN_BEQZ;goto extract_sfmt_beqz;
|
||||
case 185 : itype = M32RXF_INSN_BNEZ;goto extract_sfmt_beqz;
|
||||
case 186 : itype = M32RXF_INSN_BLTZ;goto extract_sfmt_beqz;
|
||||
case 187 : itype = M32RXF_INSN_BGEZ;goto extract_sfmt_beqz;
|
||||
case 188 : itype = M32RXF_INSN_BLEZ;goto extract_sfmt_beqz;
|
||||
case 189 : itype = M32RXF_INSN_BGTZ;goto extract_sfmt_beqz;
|
||||
case 220 : itype = M32RXF_INSN_SETH;goto extract_sfmt_seth;
|
||||
case 224 : /* fall through */
|
||||
case 225 : /* fall through */
|
||||
case 226 : /* fall through */
|
||||
case 227 : /* fall through */
|
||||
@@ -392,7 +510,8 @@ m32rxf_decode (SIM_CPU *current_cpu, IADDR pc,
|
||||
case 236 : /* fall through */
|
||||
case 237 : /* fall through */
|
||||
case 238 : /* fall through */
|
||||
case 239 : itype = M32RXF_INSN_LD24; goto extract_sfmt_ld24; case 240 : /* fall through */
|
||||
case 239 : itype = M32RXF_INSN_LD24;goto extract_sfmt_ld24;
|
||||
case 240 : /* fall through */
|
||||
case 241 : /* fall through */
|
||||
case 242 : /* fall through */
|
||||
case 243 : /* fall through */
|
||||
@@ -412,7 +531,13 @@ m32rxf_decode (SIM_CPU *current_cpu, IADDR pc,
|
||||
unsigned int val = (((insn >> 8) & (7 << 0)));
|
||||
switch (val)
|
||||
{
|
||||
case 0 : itype = M32RXF_INSN_BCL24; goto extract_sfmt_bcl24; case 1 : itype = M32RXF_INSN_BNCL24; goto extract_sfmt_bcl24; case 4 : itype = M32RXF_INSN_BC24; goto extract_sfmt_bc24; case 5 : itype = M32RXF_INSN_BNC24; goto extract_sfmt_bc24; case 6 : itype = M32RXF_INSN_BL24; goto extract_sfmt_bl24; case 7 : itype = M32RXF_INSN_BRA24; goto extract_sfmt_bra24; default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
case 0 : itype = M32RXF_INSN_BCL24;goto extract_sfmt_bcl24;
|
||||
case 1 : itype = M32RXF_INSN_BNCL24;goto extract_sfmt_bcl24;
|
||||
case 4 : itype = M32RXF_INSN_BC24;goto extract_sfmt_bc24;
|
||||
case 5 : itype = M32RXF_INSN_BNC24;goto extract_sfmt_bc24;
|
||||
case 6 : itype = M32RXF_INSN_BL24;goto extract_sfmt_bl24;
|
||||
case 7 : itype = M32RXF_INSN_BRA24;goto extract_sfmt_bra24;
|
||||
default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
}
|
||||
}
|
||||
default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
|
||||
@@ -813,7 +938,7 @@ m32rxf_decode (SIM_CPU *current_cpu, IADDR pc,
|
||||
/* Record the fields for profiling. */
|
||||
if (PROFILE_MODEL_P (current_cpu))
|
||||
{
|
||||
FLD (out_h_gr_14) = 14;
|
||||
FLD (out_h_gr_SI_14) = 14;
|
||||
}
|
||||
#endif
|
||||
#undef FLD
|
||||
@@ -837,7 +962,7 @@ m32rxf_decode (SIM_CPU *current_cpu, IADDR pc,
|
||||
/* Record the fields for profiling. */
|
||||
if (PROFILE_MODEL_P (current_cpu))
|
||||
{
|
||||
FLD (out_h_gr_14) = 14;
|
||||
FLD (out_h_gr_SI_14) = 14;
|
||||
}
|
||||
#endif
|
||||
#undef FLD
|
||||
@@ -861,7 +986,7 @@ m32rxf_decode (SIM_CPU *current_cpu, IADDR pc,
|
||||
/* Record the fields for profiling. */
|
||||
if (PROFILE_MODEL_P (current_cpu))
|
||||
{
|
||||
FLD (out_h_gr_14) = 14;
|
||||
FLD (out_h_gr_SI_14) = 14;
|
||||
}
|
||||
#endif
|
||||
#undef FLD
|
||||
@@ -885,7 +1010,7 @@ m32rxf_decode (SIM_CPU *current_cpu, IADDR pc,
|
||||
/* Record the fields for profiling. */
|
||||
if (PROFILE_MODEL_P (current_cpu))
|
||||
{
|
||||
FLD (out_h_gr_14) = 14;
|
||||
FLD (out_h_gr_SI_14) = 14;
|
||||
}
|
||||
#endif
|
||||
#undef FLD
|
||||
@@ -1096,7 +1221,7 @@ m32rxf_decode (SIM_CPU *current_cpu, IADDR pc,
|
||||
if (PROFILE_MODEL_P (current_cpu))
|
||||
{
|
||||
FLD (in_sr) = f_r2;
|
||||
FLD (out_h_gr_14) = 14;
|
||||
FLD (out_h_gr_SI_14) = 14;
|
||||
}
|
||||
#endif
|
||||
#undef FLD
|
||||
@@ -1179,6 +1304,132 @@ m32rxf_decode (SIM_CPU *current_cpu, IADDR pc,
|
||||
FLD (i_dr) = & CPU (h_gr)[f_r1];
|
||||
TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld_d", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
|
||||
|
||||
#if WITH_PROFILE_MODEL_P
|
||||
/* Record the fields for profiling. */
|
||||
if (PROFILE_MODEL_P (current_cpu))
|
||||
{
|
||||
FLD (in_sr) = f_r2;
|
||||
FLD (out_dr) = f_r1;
|
||||
}
|
||||
#endif
|
||||
#undef FLD
|
||||
return idesc;
|
||||
}
|
||||
|
||||
extract_sfmt_ldb:
|
||||
{
|
||||
const IDESC *idesc = &m32rxf_insn_data[itype];
|
||||
CGEN_INSN_INT insn = entire_insn;
|
||||
#define FLD(f) abuf->fields.sfmt_ld_plus.f
|
||||
UINT f_r1;
|
||||
UINT f_r2;
|
||||
|
||||
f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
|
||||
f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
|
||||
|
||||
/* Record the fields for the semantic handler. */
|
||||
FLD (f_r2) = f_r2;
|
||||
FLD (f_r1) = f_r1;
|
||||
FLD (i_sr) = & CPU (h_gr)[f_r2];
|
||||
FLD (i_dr) = & CPU (h_gr)[f_r1];
|
||||
TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldb", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
|
||||
|
||||
#if WITH_PROFILE_MODEL_P
|
||||
/* Record the fields for profiling. */
|
||||
if (PROFILE_MODEL_P (current_cpu))
|
||||
{
|
||||
FLD (in_sr) = f_r2;
|
||||
FLD (out_dr) = f_r1;
|
||||
}
|
||||
#endif
|
||||
#undef FLD
|
||||
return idesc;
|
||||
}
|
||||
|
||||
extract_sfmt_ldb_d:
|
||||
{
|
||||
const IDESC *idesc = &m32rxf_insn_data[itype];
|
||||
CGEN_INSN_INT insn = entire_insn;
|
||||
#define FLD(f) abuf->fields.sfmt_add3.f
|
||||
UINT f_r1;
|
||||
UINT f_r2;
|
||||
INT f_simm16;
|
||||
|
||||
f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
|
||||
f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
|
||||
f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
|
||||
|
||||
/* Record the fields for the semantic handler. */
|
||||
FLD (f_simm16) = f_simm16;
|
||||
FLD (f_r2) = f_r2;
|
||||
FLD (f_r1) = f_r1;
|
||||
FLD (i_sr) = & CPU (h_gr)[f_r2];
|
||||
FLD (i_dr) = & CPU (h_gr)[f_r1];
|
||||
TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldb_d", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
|
||||
|
||||
#if WITH_PROFILE_MODEL_P
|
||||
/* Record the fields for profiling. */
|
||||
if (PROFILE_MODEL_P (current_cpu))
|
||||
{
|
||||
FLD (in_sr) = f_r2;
|
||||
FLD (out_dr) = f_r1;
|
||||
}
|
||||
#endif
|
||||
#undef FLD
|
||||
return idesc;
|
||||
}
|
||||
|
||||
extract_sfmt_ldh:
|
||||
{
|
||||
const IDESC *idesc = &m32rxf_insn_data[itype];
|
||||
CGEN_INSN_INT insn = entire_insn;
|
||||
#define FLD(f) abuf->fields.sfmt_ld_plus.f
|
||||
UINT f_r1;
|
||||
UINT f_r2;
|
||||
|
||||
f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
|
||||
f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
|
||||
|
||||
/* Record the fields for the semantic handler. */
|
||||
FLD (f_r2) = f_r2;
|
||||
FLD (f_r1) = f_r1;
|
||||
FLD (i_sr) = & CPU (h_gr)[f_r2];
|
||||
FLD (i_dr) = & CPU (h_gr)[f_r1];
|
||||
TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldh", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
|
||||
|
||||
#if WITH_PROFILE_MODEL_P
|
||||
/* Record the fields for profiling. */
|
||||
if (PROFILE_MODEL_P (current_cpu))
|
||||
{
|
||||
FLD (in_sr) = f_r2;
|
||||
FLD (out_dr) = f_r1;
|
||||
}
|
||||
#endif
|
||||
#undef FLD
|
||||
return idesc;
|
||||
}
|
||||
|
||||
extract_sfmt_ldh_d:
|
||||
{
|
||||
const IDESC *idesc = &m32rxf_insn_data[itype];
|
||||
CGEN_INSN_INT insn = entire_insn;
|
||||
#define FLD(f) abuf->fields.sfmt_add3.f
|
||||
UINT f_r1;
|
||||
UINT f_r2;
|
||||
INT f_simm16;
|
||||
|
||||
f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
|
||||
f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
|
||||
f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
|
||||
|
||||
/* Record the fields for the semantic handler. */
|
||||
FLD (f_simm16) = f_simm16;
|
||||
FLD (f_r2) = f_r2;
|
||||
FLD (f_r1) = f_r1;
|
||||
FLD (i_sr) = & CPU (h_gr)[f_r2];
|
||||
FLD (i_dr) = & CPU (h_gr)[f_r1];
|
||||
TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldh_d", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
|
||||
|
||||
#if WITH_PROFILE_MODEL_P
|
||||
/* Record the fields for profiling. */
|
||||
if (PROFILE_MODEL_P (current_cpu))
|
||||
|
||||
Reference in New Issue
Block a user