* Makefile.in (stamp-arch): Pass FLAGS to cgen.

* arch.c,arch.h,cpuall.h: Regenerate.
	* cpu.c,cpu.h,decode.c,decode.h,model.c,sem-switch.c,sem.c: Regenerate.
	* traps.c (sim_engine_invalid_insn): PCADDR->IADDR.
	* cpux.c,cpux.h,decodex.c,decodex.h,modelx.c,semx-switch.c: Regenerate.
This commit is contained in:
Doug Evans 1999-01-15 07:27:00 +00:00
parent 976a48e6c3
commit ddfae34d82
5 changed files with 1752 additions and 1559 deletions

View File

@ -1,3 +1,13 @@
1999-01-14 Doug Evans <devans@casey.cygnus.com>
* Makefile.in (stamp-arch): Pass FLAGS to cgen.
* arch.c,arch.h,cpuall.h: Regenerate.
* cpu.c,cpu.h,decode.c,decode.h,model.c,sem-switch.c,sem.c: Regenerate.
* traps.c (sim_engine_invalid_insn): PCADDR->IADDR.
start-sanitize-m32rx
* cpux.c,cpux.h,decodex.c,decodex.h,modelx.c,semx-switch.c: Regenerate.
end-sanitize-m32rx
1999-01-11 Doug Evans <devans@casey.cygnus.com>
* Makefile.in (m32r-clean): rm eng.h.

View File

@ -1,8 +1,8 @@
/* Decode header for m32r.
/* Decode header for m32rbf.
This file is machine generated with CGEN.
THIS FILE IS MACHINE GENERATED WITH CGEN.
Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU Simulators.
@ -22,273 +22,216 @@ with this program; if not, write to the Free Software Foundation, Inc.,
*/
#ifndef M32R_DECODE_H
#define M32R_DECODE_H
#ifndef M32RBF_DECODE_H
#define M32RBF_DECODE_H
#define EX(fn) XCONCAT3 (m32r,_ex_,fn)
#define SEM(fn) XCONCAT3 (m32r,_sem_,fn)
#define SEMF(fn) XCONCAT3 (m32r,_semf_,fn)
/* Run-time computed instruction descriptor. */
extern EXTRACT_FN EX (illegal);
extern SEMANTIC_FN SEM (illegal);
extern SEMANTIC_FN SEMF (illegal);
extern EXTRACT_FN EX (fmt_0_add);
extern EXTRACT_FN EX (fmt_1_add3);
extern EXTRACT_FN EX (fmt_2_and3);
extern EXTRACT_FN EX (fmt_3_or3);
extern EXTRACT_FN EX (fmt_4_addi);
extern EXTRACT_FN EX (fmt_5_addv);
extern EXTRACT_FN EX (fmt_6_addv3);
extern EXTRACT_FN EX (fmt_7_addx);
extern EXTRACT_FN EX (fmt_8_bc8);
extern EXTRACT_FN EX (fmt_9_bc24);
extern EXTRACT_FN EX (fmt_10_beq);
extern EXTRACT_FN EX (fmt_11_beqz);
extern EXTRACT_FN EX (fmt_12_bl8);
extern EXTRACT_FN EX (fmt_13_bl24);
extern EXTRACT_FN EX (fmt_14_bra8);
extern EXTRACT_FN EX (fmt_15_bra24);
extern EXTRACT_FN EX (fmt_16_cmp);
extern EXTRACT_FN EX (fmt_17_cmpi);
extern EXTRACT_FN EX (fmt_18_cmpui);
extern EXTRACT_FN EX (fmt_19_div);
extern EXTRACT_FN EX (fmt_20_jl);
extern EXTRACT_FN EX (fmt_21_jmp);
extern EXTRACT_FN EX (fmt_22_ld);
extern EXTRACT_FN EX (fmt_23_ld_d);
extern EXTRACT_FN EX (fmt_24_ldb);
extern EXTRACT_FN EX (fmt_25_ldb_d);
extern EXTRACT_FN EX (fmt_26_ldh);
extern EXTRACT_FN EX (fmt_27_ldh_d);
extern EXTRACT_FN EX (fmt_28_ld_plus);
extern EXTRACT_FN EX (fmt_29_ld24);
extern EXTRACT_FN EX (fmt_30_ldi8);
extern EXTRACT_FN EX (fmt_31_ldi16);
extern EXTRACT_FN EX (fmt_32_lock);
extern EXTRACT_FN EX (fmt_33_machi);
extern EXTRACT_FN EX (fmt_34_mulhi);
extern EXTRACT_FN EX (fmt_35_mv);
extern EXTRACT_FN EX (fmt_36_mvfachi);
extern EXTRACT_FN EX (fmt_37_mvfc);
extern EXTRACT_FN EX (fmt_38_mvtachi);
extern EXTRACT_FN EX (fmt_39_mvtc);
extern EXTRACT_FN EX (fmt_40_nop);
extern EXTRACT_FN EX (fmt_41_rac);
extern EXTRACT_FN EX (fmt_42_rte);
extern EXTRACT_FN EX (fmt_43_seth);
extern EXTRACT_FN EX (fmt_44_sll3);
extern EXTRACT_FN EX (fmt_45_slli);
extern EXTRACT_FN EX (fmt_46_st);
extern EXTRACT_FN EX (fmt_47_st_d);
extern EXTRACT_FN EX (fmt_48_stb);
extern EXTRACT_FN EX (fmt_49_stb_d);
extern EXTRACT_FN EX (fmt_50_sth);
extern EXTRACT_FN EX (fmt_51_sth_d);
extern EXTRACT_FN EX (fmt_52_st_plus);
extern EXTRACT_FN EX (fmt_53_trap);
extern EXTRACT_FN EX (fmt_54_unlock);
struct idesc {
#if WITH_SEM_SWITCH_FULL
#ifdef __GNUC__
void *sem_full_lab;
#endif
#else
SEMANTIC_FN *sem_full;
#endif
extern SEMANTIC_FN SEM (add);
extern SEMANTIC_FN SEMF (add);
extern SEMANTIC_FN SEM (add3);
extern SEMANTIC_FN SEMF (add3);
extern SEMANTIC_FN SEM (and);
extern SEMANTIC_FN SEMF (and);
extern SEMANTIC_FN SEM (and3);
extern SEMANTIC_FN SEMF (and3);
extern SEMANTIC_FN SEM (or);
extern SEMANTIC_FN SEMF (or);
extern SEMANTIC_FN SEM (or3);
extern SEMANTIC_FN SEMF (or3);
extern SEMANTIC_FN SEM (xor);
extern SEMANTIC_FN SEMF (xor);
extern SEMANTIC_FN SEM (xor3);
extern SEMANTIC_FN SEMF (xor3);
extern SEMANTIC_FN SEM (addi);
extern SEMANTIC_FN SEMF (addi);
extern SEMANTIC_FN SEM (addv);
extern SEMANTIC_FN SEMF (addv);
extern SEMANTIC_FN SEM (addv3);
extern SEMANTIC_FN SEMF (addv3);
extern SEMANTIC_FN SEM (addx);
extern SEMANTIC_FN SEMF (addx);
extern SEMANTIC_FN SEM (bc8);
extern SEMANTIC_FN SEMF (bc8);
extern SEMANTIC_FN SEM (bc24);
extern SEMANTIC_FN SEMF (bc24);
extern SEMANTIC_FN SEM (beq);
extern SEMANTIC_FN SEMF (beq);
extern SEMANTIC_FN SEM (beqz);
extern SEMANTIC_FN SEMF (beqz);
extern SEMANTIC_FN SEM (bgez);
extern SEMANTIC_FN SEMF (bgez);
extern SEMANTIC_FN SEM (bgtz);
extern SEMANTIC_FN SEMF (bgtz);
extern SEMANTIC_FN SEM (blez);
extern SEMANTIC_FN SEMF (blez);
extern SEMANTIC_FN SEM (bltz);
extern SEMANTIC_FN SEMF (bltz);
extern SEMANTIC_FN SEM (bnez);
extern SEMANTIC_FN SEMF (bnez);
extern SEMANTIC_FN SEM (bl8);
extern SEMANTIC_FN SEMF (bl8);
extern SEMANTIC_FN SEM (bl24);
extern SEMANTIC_FN SEMF (bl24);
extern SEMANTIC_FN SEM (bnc8);
extern SEMANTIC_FN SEMF (bnc8);
extern SEMANTIC_FN SEM (bnc24);
extern SEMANTIC_FN SEMF (bnc24);
extern SEMANTIC_FN SEM (bne);
extern SEMANTIC_FN SEMF (bne);
extern SEMANTIC_FN SEM (bra8);
extern SEMANTIC_FN SEMF (bra8);
extern SEMANTIC_FN SEM (bra24);
extern SEMANTIC_FN SEMF (bra24);
extern SEMANTIC_FN SEM (cmp);
extern SEMANTIC_FN SEMF (cmp);
extern SEMANTIC_FN SEM (cmpi);
extern SEMANTIC_FN SEMF (cmpi);
extern SEMANTIC_FN SEM (cmpu);
extern SEMANTIC_FN SEMF (cmpu);
extern SEMANTIC_FN SEM (cmpui);
extern SEMANTIC_FN SEMF (cmpui);
extern SEMANTIC_FN SEM (div);
extern SEMANTIC_FN SEMF (div);
extern SEMANTIC_FN SEM (divu);
extern SEMANTIC_FN SEMF (divu);
extern SEMANTIC_FN SEM (rem);
extern SEMANTIC_FN SEMF (rem);
extern SEMANTIC_FN SEM (remu);
extern SEMANTIC_FN SEMF (remu);
extern SEMANTIC_FN SEM (jl);
extern SEMANTIC_FN SEMF (jl);
extern SEMANTIC_FN SEM (jmp);
extern SEMANTIC_FN SEMF (jmp);
extern SEMANTIC_FN SEM (ld);
extern SEMANTIC_FN SEMF (ld);
extern SEMANTIC_FN SEM (ld_d);
extern SEMANTIC_FN SEMF (ld_d);
extern SEMANTIC_FN SEM (ldb);
extern SEMANTIC_FN SEMF (ldb);
extern SEMANTIC_FN SEM (ldb_d);
extern SEMANTIC_FN SEMF (ldb_d);
extern SEMANTIC_FN SEM (ldh);
extern SEMANTIC_FN SEMF (ldh);
extern SEMANTIC_FN SEM (ldh_d);
extern SEMANTIC_FN SEMF (ldh_d);
extern SEMANTIC_FN SEM (ldub);
extern SEMANTIC_FN SEMF (ldub);
extern SEMANTIC_FN SEM (ldub_d);
extern SEMANTIC_FN SEMF (ldub_d);
extern SEMANTIC_FN SEM (lduh);
extern SEMANTIC_FN SEMF (lduh);
extern SEMANTIC_FN SEM (lduh_d);
extern SEMANTIC_FN SEMF (lduh_d);
extern SEMANTIC_FN SEM (ld_plus);
extern SEMANTIC_FN SEMF (ld_plus);
extern SEMANTIC_FN SEM (ld24);
extern SEMANTIC_FN SEMF (ld24);
extern SEMANTIC_FN SEM (ldi8);
extern SEMANTIC_FN SEMF (ldi8);
extern SEMANTIC_FN SEM (ldi16);
extern SEMANTIC_FN SEMF (ldi16);
extern SEMANTIC_FN SEM (lock);
extern SEMANTIC_FN SEMF (lock);
extern SEMANTIC_FN SEM (machi);
extern SEMANTIC_FN SEMF (machi);
extern SEMANTIC_FN SEM (maclo);
extern SEMANTIC_FN SEMF (maclo);
extern SEMANTIC_FN SEM (macwhi);
extern SEMANTIC_FN SEMF (macwhi);
extern SEMANTIC_FN SEM (macwlo);
extern SEMANTIC_FN SEMF (macwlo);
extern SEMANTIC_FN SEM (mul);
extern SEMANTIC_FN SEMF (mul);
extern SEMANTIC_FN SEM (mulhi);
extern SEMANTIC_FN SEMF (mulhi);
extern SEMANTIC_FN SEM (mullo);
extern SEMANTIC_FN SEMF (mullo);
extern SEMANTIC_FN SEM (mulwhi);
extern SEMANTIC_FN SEMF (mulwhi);
extern SEMANTIC_FN SEM (mulwlo);
extern SEMANTIC_FN SEMF (mulwlo);
extern SEMANTIC_FN SEM (mv);
extern SEMANTIC_FN SEMF (mv);
extern SEMANTIC_FN SEM (mvfachi);
extern SEMANTIC_FN SEMF (mvfachi);
extern SEMANTIC_FN SEM (mvfaclo);
extern SEMANTIC_FN SEMF (mvfaclo);
extern SEMANTIC_FN SEM (mvfacmi);
extern SEMANTIC_FN SEMF (mvfacmi);
extern SEMANTIC_FN SEM (mvfc);
extern SEMANTIC_FN SEMF (mvfc);
extern SEMANTIC_FN SEM (mvtachi);
extern SEMANTIC_FN SEMF (mvtachi);
extern SEMANTIC_FN SEM (mvtaclo);
extern SEMANTIC_FN SEMF (mvtaclo);
extern SEMANTIC_FN SEM (mvtc);
extern SEMANTIC_FN SEMF (mvtc);
extern SEMANTIC_FN SEM (neg);
extern SEMANTIC_FN SEMF (neg);
extern SEMANTIC_FN SEM (nop);
extern SEMANTIC_FN SEMF (nop);
extern SEMANTIC_FN SEM (not);
extern SEMANTIC_FN SEMF (not);
extern SEMANTIC_FN SEM (rac);
extern SEMANTIC_FN SEMF (rac);
extern SEMANTIC_FN SEM (rach);
extern SEMANTIC_FN SEMF (rach);
extern SEMANTIC_FN SEM (rte);
extern SEMANTIC_FN SEMF (rte);
extern SEMANTIC_FN SEM (seth);
extern SEMANTIC_FN SEMF (seth);
extern SEMANTIC_FN SEM (sll);
extern SEMANTIC_FN SEMF (sll);
extern SEMANTIC_FN SEM (sll3);
extern SEMANTIC_FN SEMF (sll3);
extern SEMANTIC_FN SEM (slli);
extern SEMANTIC_FN SEMF (slli);
extern SEMANTIC_FN SEM (sra);
extern SEMANTIC_FN SEMF (sra);
extern SEMANTIC_FN SEM (sra3);
extern SEMANTIC_FN SEMF (sra3);
extern SEMANTIC_FN SEM (srai);
extern SEMANTIC_FN SEMF (srai);
extern SEMANTIC_FN SEM (srl);
extern SEMANTIC_FN SEMF (srl);
extern SEMANTIC_FN SEM (srl3);
extern SEMANTIC_FN SEMF (srl3);
extern SEMANTIC_FN SEM (srli);
extern SEMANTIC_FN SEMF (srli);
extern SEMANTIC_FN SEM (st);
extern SEMANTIC_FN SEMF (st);
extern SEMANTIC_FN SEM (st_d);
extern SEMANTIC_FN SEMF (st_d);
extern SEMANTIC_FN SEM (stb);
extern SEMANTIC_FN SEMF (stb);
extern SEMANTIC_FN SEM (stb_d);
extern SEMANTIC_FN SEMF (stb_d);
extern SEMANTIC_FN SEM (sth);
extern SEMANTIC_FN SEMF (sth);
extern SEMANTIC_FN SEM (sth_d);
extern SEMANTIC_FN SEMF (sth_d);
extern SEMANTIC_FN SEM (st_plus);
extern SEMANTIC_FN SEMF (st_plus);
extern SEMANTIC_FN SEM (st_minus);
extern SEMANTIC_FN SEMF (st_minus);
extern SEMANTIC_FN SEM (sub);
extern SEMANTIC_FN SEMF (sub);
extern SEMANTIC_FN SEM (subv);
extern SEMANTIC_FN SEMF (subv);
extern SEMANTIC_FN SEM (subx);
extern SEMANTIC_FN SEMF (subx);
extern SEMANTIC_FN SEM (trap);
extern SEMANTIC_FN SEMF (trap);
extern SEMANTIC_FN SEM (unlock);
extern SEMANTIC_FN SEMF (unlock);
#if WITH_SEM_SWITCH_FAST
#ifdef __GNUC__
void *sem_fast_lab;
#endif
#else
SEMANTIC_FN *sem_fast;
#endif
#undef EX
/* Instruction number (index in IDESC table, profile table).
Also used to switch on in non-gcc semantic switches. */
int num;
/* opcode table data */
const CGEN_INSN *opcode;
/* profiling/modelling support */
const INSN_TIMING *timing;
};
extern const IDESC *m32rbf_decode (SIM_CPU *, IADDR,
CGEN_INSN_INT, CGEN_INSN_INT,
ARGBUF *);
/* Enum declaration for instructions in cpu family m32rbf. */
typedef enum m32rbf_insn_type {
M32RBF_INSN_X_INVALID, M32RBF_INSN_X_AFTER, M32RBF_INSN_X_BEFORE, M32RBF_INSN_X_CTI_CHAIN
, M32RBF_INSN_X_CHAIN, M32RBF_INSN_X_BEGIN, M32RBF_INSN_ADD, M32RBF_INSN_ADD3
, M32RBF_INSN_AND, M32RBF_INSN_AND3, M32RBF_INSN_OR, M32RBF_INSN_OR3
, M32RBF_INSN_XOR, M32RBF_INSN_XOR3, M32RBF_INSN_ADDI, M32RBF_INSN_ADDV
, M32RBF_INSN_ADDV3, M32RBF_INSN_ADDX, M32RBF_INSN_BC8, M32RBF_INSN_BC24
, M32RBF_INSN_BEQ, M32RBF_INSN_BEQZ, M32RBF_INSN_BGEZ, M32RBF_INSN_BGTZ
, M32RBF_INSN_BLEZ, M32RBF_INSN_BLTZ, M32RBF_INSN_BNEZ, M32RBF_INSN_BL8
, M32RBF_INSN_BL24, M32RBF_INSN_BNC8, M32RBF_INSN_BNC24, M32RBF_INSN_BNE
, M32RBF_INSN_BRA8, M32RBF_INSN_BRA24, M32RBF_INSN_CMP, M32RBF_INSN_CMPI
, M32RBF_INSN_CMPU, M32RBF_INSN_CMPUI, M32RBF_INSN_DIV, M32RBF_INSN_DIVU
, M32RBF_INSN_REM, M32RBF_INSN_REMU, M32RBF_INSN_JL, M32RBF_INSN_JMP
, M32RBF_INSN_LD, M32RBF_INSN_LD_D, M32RBF_INSN_LDB, M32RBF_INSN_LDB_D
, M32RBF_INSN_LDH, M32RBF_INSN_LDH_D, M32RBF_INSN_LDUB, M32RBF_INSN_LDUB_D
, M32RBF_INSN_LDUH, M32RBF_INSN_LDUH_D, M32RBF_INSN_LD_PLUS, M32RBF_INSN_LD24
, M32RBF_INSN_LDI8, M32RBF_INSN_LDI16, M32RBF_INSN_LOCK, M32RBF_INSN_MACHI
, M32RBF_INSN_MACLO, M32RBF_INSN_MACWHI, M32RBF_INSN_MACWLO, M32RBF_INSN_MUL
, M32RBF_INSN_MULHI, M32RBF_INSN_MULLO, M32RBF_INSN_MULWHI, M32RBF_INSN_MULWLO
, M32RBF_INSN_MV, M32RBF_INSN_MVFACHI, M32RBF_INSN_MVFACLO, M32RBF_INSN_MVFACMI
, M32RBF_INSN_MVFC, M32RBF_INSN_MVTACHI, M32RBF_INSN_MVTACLO, M32RBF_INSN_MVTC
, M32RBF_INSN_NEG, M32RBF_INSN_NOP, M32RBF_INSN_NOT, M32RBF_INSN_RAC
, M32RBF_INSN_RACH, M32RBF_INSN_RTE, M32RBF_INSN_SETH, M32RBF_INSN_SLL
, M32RBF_INSN_SLL3, M32RBF_INSN_SLLI, M32RBF_INSN_SRA, M32RBF_INSN_SRA3
, M32RBF_INSN_SRAI, M32RBF_INSN_SRL, M32RBF_INSN_SRL3, M32RBF_INSN_SRLI
, M32RBF_INSN_ST, M32RBF_INSN_ST_D, M32RBF_INSN_STB, M32RBF_INSN_STB_D
, M32RBF_INSN_STH, M32RBF_INSN_STH_D, M32RBF_INSN_ST_PLUS, M32RBF_INSN_ST_MINUS
, M32RBF_INSN_SUB, M32RBF_INSN_SUBV, M32RBF_INSN_SUBX, M32RBF_INSN_TRAP
, M32RBF_INSN_UNLOCK, M32RBF_INSN_MAX
} M32RBF_INSN_TYPE;
#if ! WITH_SEM_SWITCH_FULL
#define SEMFULL(fn) extern SEMANTIC_FN CONCAT3 (m32rbf,_sem_,fn);
#else
#define SEMFULL(fn)
#endif
#if ! WITH_SEM_SWITCH_FAST
#define SEMFAST(fn) extern SEMANTIC_FN CONCAT3 (m32rbf,_semf_,fn);
#else
#define SEMFAST(fn)
#endif
#define SEM(fn) SEMFULL (fn) SEMFAST (fn)
/* The function version of the before/after handlers is always needed,
so we always want the SEMFULL declaration of them. */
extern SEMANTIC_FN CONCAT3 (m32rbf,_sem_,x_before);
extern SEMANTIC_FN CONCAT3 (m32rbf,_sem_,x_after);
SEM (x_invalid)
SEM (x_after)
SEM (x_before)
SEM (x_cti_chain)
SEM (x_chain)
SEM (x_begin)
SEM (add)
SEM (add3)
SEM (and)
SEM (and3)
SEM (or)
SEM (or3)
SEM (xor)
SEM (xor3)
SEM (addi)
SEM (addv)
SEM (addv3)
SEM (addx)
SEM (bc8)
SEM (bc24)
SEM (beq)
SEM (beqz)
SEM (bgez)
SEM (bgtz)
SEM (blez)
SEM (bltz)
SEM (bnez)
SEM (bl8)
SEM (bl24)
SEM (bnc8)
SEM (bnc24)
SEM (bne)
SEM (bra8)
SEM (bra24)
SEM (cmp)
SEM (cmpi)
SEM (cmpu)
SEM (cmpui)
SEM (div)
SEM (divu)
SEM (rem)
SEM (remu)
SEM (jl)
SEM (jmp)
SEM (ld)
SEM (ld_d)
SEM (ldb)
SEM (ldb_d)
SEM (ldh)
SEM (ldh_d)
SEM (ldub)
SEM (ldub_d)
SEM (lduh)
SEM (lduh_d)
SEM (ld_plus)
SEM (ld24)
SEM (ldi8)
SEM (ldi16)
SEM (lock)
SEM (machi)
SEM (maclo)
SEM (macwhi)
SEM (macwlo)
SEM (mul)
SEM (mulhi)
SEM (mullo)
SEM (mulwhi)
SEM (mulwlo)
SEM (mv)
SEM (mvfachi)
SEM (mvfaclo)
SEM (mvfacmi)
SEM (mvfc)
SEM (mvtachi)
SEM (mvtaclo)
SEM (mvtc)
SEM (neg)
SEM (nop)
SEM (not)
SEM (rac)
SEM (rach)
SEM (rte)
SEM (seth)
SEM (sll)
SEM (sll3)
SEM (slli)
SEM (sra)
SEM (sra3)
SEM (srai)
SEM (srl)
SEM (srl3)
SEM (srli)
SEM (st)
SEM (st_d)
SEM (stb)
SEM (stb_d)
SEM (sth)
SEM (sth_d)
SEM (st_plus)
SEM (st_minus)
SEM (sub)
SEM (subv)
SEM (subx)
SEM (trap)
SEM (unlock)
#undef SEMFULL
#undef SEMFAST
#undef SEM
#undef SEMF
#endif /* M32R_DECODE_H */
/* Function unit handlers (user written). */
extern int m32rbf_model_m32r_d_u_store (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*src1*/, INT /*src2*/);
extern int m32rbf_model_m32r_d_u_load (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*sr*/, INT /*dr*/);
extern int m32rbf_model_m32r_d_u_cti (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*sr*/);
extern int m32rbf_model_m32r_d_u_mac (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*src1*/, INT /*src2*/);
extern int m32rbf_model_m32r_d_u_cmp (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*src1*/, INT /*src2*/);
extern int m32rbf_model_m32r_d_u_exec (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*sr*/, INT /*sr2*/, INT /*dr*/);
extern int m32rbf_model_test_u_exec (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/);
/* Profiling before/after handlers (user written) */
extern void m32rbf_model_insn_before (SIM_CPU *, int /*first_p*/);
extern void m32rbf_model_insn_after (SIM_CPU *, int /*last_p*/, int /*cycles*/);
#endif /* M32RBF_DECODE_H */

View File

@ -1,8 +1,8 @@
/* Decode header for m32rx.
/* Decode header for m32rxf.
This file is machine generated with CGEN.
THIS FILE IS MACHINE GENERATED WITH CGEN.
Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU Simulators.
@ -22,316 +22,545 @@ with this program; if not, write to the Free Software Foundation, Inc.,
*/
#ifndef M32RX_DECODE_H
#define M32RX_DECODE_H
#ifndef M32RXF_DECODE_H
#define M32RXF_DECODE_H
#define EX(fn) CONCAT3 (m32rx,_ex_,fn)
#define SEM(fn) CONCAT3 (m32rx,_sem_,fn)
#define SEMF(fn) CONCAT3 (m32rx,_semf_,fn)
/* Run-time computed instruction descriptor. */
extern EXTRACT_FN EX (illegal);
extern SEMANTIC_FN SEM (illegal);
extern SEMANTIC_FN SEMF (illegal);
extern EXTRACT_FN EX (fmt_0_add);
extern EXTRACT_FN EX (fmt_1_add3);
extern EXTRACT_FN EX (fmt_2_and3);
extern EXTRACT_FN EX (fmt_3_or3);
extern EXTRACT_FN EX (fmt_4_addi);
extern EXTRACT_FN EX (fmt_5_addv);
extern EXTRACT_FN EX (fmt_6_addv3);
extern EXTRACT_FN EX (fmt_7_addx);
extern EXTRACT_FN EX (fmt_8_bc8);
extern EXTRACT_FN EX (fmt_9_bc24);
extern EXTRACT_FN EX (fmt_10_beq);
extern EXTRACT_FN EX (fmt_11_beqz);
extern EXTRACT_FN EX (fmt_12_bl8);
extern EXTRACT_FN EX (fmt_13_bl24);
extern EXTRACT_FN EX (fmt_14_bcl8);
extern EXTRACT_FN EX (fmt_15_bcl24);
extern EXTRACT_FN EX (fmt_16_bra8);
extern EXTRACT_FN EX (fmt_17_bra24);
extern EXTRACT_FN EX (fmt_18_cmp);
extern EXTRACT_FN EX (fmt_19_cmpi);
extern EXTRACT_FN EX (fmt_20_cmpui);
extern EXTRACT_FN EX (fmt_21_cmpz);
extern EXTRACT_FN EX (fmt_22_div);
extern EXTRACT_FN EX (fmt_23_jc);
extern EXTRACT_FN EX (fmt_24_jl);
extern EXTRACT_FN EX (fmt_25_jmp);
extern EXTRACT_FN EX (fmt_26_ld);
extern EXTRACT_FN EX (fmt_27_ld_d);
extern EXTRACT_FN EX (fmt_28_ldb);
extern EXTRACT_FN EX (fmt_29_ldb_d);
extern EXTRACT_FN EX (fmt_30_ldh);
extern EXTRACT_FN EX (fmt_31_ldh_d);
extern EXTRACT_FN EX (fmt_32_ld_plus);
extern EXTRACT_FN EX (fmt_33_ld24);
extern EXTRACT_FN EX (fmt_34_ldi8);
extern EXTRACT_FN EX (fmt_35_ldi16);
extern EXTRACT_FN EX (fmt_36_lock);
extern EXTRACT_FN EX (fmt_37_machi_a);
extern EXTRACT_FN EX (fmt_38_mulhi_a);
extern EXTRACT_FN EX (fmt_39_mv);
extern EXTRACT_FN EX (fmt_40_mvfachi_a);
extern EXTRACT_FN EX (fmt_41_mvfc);
extern EXTRACT_FN EX (fmt_42_mvtachi_a);
extern EXTRACT_FN EX (fmt_43_mvtc);
extern EXTRACT_FN EX (fmt_44_nop);
extern EXTRACT_FN EX (fmt_45_rac_dsi);
extern EXTRACT_FN EX (fmt_46_rte);
extern EXTRACT_FN EX (fmt_47_seth);
extern EXTRACT_FN EX (fmt_48_sll3);
extern EXTRACT_FN EX (fmt_49_slli);
extern EXTRACT_FN EX (fmt_50_st);
extern EXTRACT_FN EX (fmt_51_st_d);
extern EXTRACT_FN EX (fmt_52_stb);
extern EXTRACT_FN EX (fmt_53_stb_d);
extern EXTRACT_FN EX (fmt_54_sth);
extern EXTRACT_FN EX (fmt_55_sth_d);
extern EXTRACT_FN EX (fmt_56_st_plus);
extern EXTRACT_FN EX (fmt_57_trap);
extern EXTRACT_FN EX (fmt_58_unlock);
extern EXTRACT_FN EX (fmt_59_satb);
extern EXTRACT_FN EX (fmt_60_sat);
extern EXTRACT_FN EX (fmt_61_sadd);
extern EXTRACT_FN EX (fmt_62_macwu1);
extern EXTRACT_FN EX (fmt_63_msblo);
extern EXTRACT_FN EX (fmt_64_mulwu1);
extern EXTRACT_FN EX (fmt_65_sc);
struct idesc {
/* Pointer to parallel handler if serial insn.
Pointer to writeback handler if parallel insn. */
struct idesc *par_idesc;
extern SEMANTIC_FN SEM (add);
extern SEMANTIC_FN SEMF (add);
extern SEMANTIC_FN SEM (add3);
extern SEMANTIC_FN SEMF (add3);
extern SEMANTIC_FN SEM (and);
extern SEMANTIC_FN SEMF (and);
extern SEMANTIC_FN SEM (and3);
extern SEMANTIC_FN SEMF (and3);
extern SEMANTIC_FN SEM (or);
extern SEMANTIC_FN SEMF (or);
extern SEMANTIC_FN SEM (or3);
extern SEMANTIC_FN SEMF (or3);
extern SEMANTIC_FN SEM (xor);
extern SEMANTIC_FN SEMF (xor);
extern SEMANTIC_FN SEM (xor3);
extern SEMANTIC_FN SEMF (xor3);
extern SEMANTIC_FN SEM (addi);
extern SEMANTIC_FN SEMF (addi);
extern SEMANTIC_FN SEM (addv);
extern SEMANTIC_FN SEMF (addv);
extern SEMANTIC_FN SEM (addv3);
extern SEMANTIC_FN SEMF (addv3);
extern SEMANTIC_FN SEM (addx);
extern SEMANTIC_FN SEMF (addx);
extern SEMANTIC_FN SEM (bc8);
extern SEMANTIC_FN SEMF (bc8);
extern SEMANTIC_FN SEM (bc24);
extern SEMANTIC_FN SEMF (bc24);
extern SEMANTIC_FN SEM (beq);
extern SEMANTIC_FN SEMF (beq);
extern SEMANTIC_FN SEM (beqz);
extern SEMANTIC_FN SEMF (beqz);
extern SEMANTIC_FN SEM (bgez);
extern SEMANTIC_FN SEMF (bgez);
extern SEMANTIC_FN SEM (bgtz);
extern SEMANTIC_FN SEMF (bgtz);
extern SEMANTIC_FN SEM (blez);
extern SEMANTIC_FN SEMF (blez);
extern SEMANTIC_FN SEM (bltz);
extern SEMANTIC_FN SEMF (bltz);
extern SEMANTIC_FN SEM (bnez);
extern SEMANTIC_FN SEMF (bnez);
extern SEMANTIC_FN SEM (bl8);
extern SEMANTIC_FN SEMF (bl8);
extern SEMANTIC_FN SEM (bl24);
extern SEMANTIC_FN SEMF (bl24);
extern SEMANTIC_FN SEM (bcl8);
extern SEMANTIC_FN SEMF (bcl8);
extern SEMANTIC_FN SEM (bcl24);
extern SEMANTIC_FN SEMF (bcl24);
extern SEMANTIC_FN SEM (bnc8);
extern SEMANTIC_FN SEMF (bnc8);
extern SEMANTIC_FN SEM (bnc24);
extern SEMANTIC_FN SEMF (bnc24);
extern SEMANTIC_FN SEM (bne);
extern SEMANTIC_FN SEMF (bne);
extern SEMANTIC_FN SEM (bra8);
extern SEMANTIC_FN SEMF (bra8);
extern SEMANTIC_FN SEM (bra24);
extern SEMANTIC_FN SEMF (bra24);
extern SEMANTIC_FN SEM (bncl8);
extern SEMANTIC_FN SEMF (bncl8);
extern SEMANTIC_FN SEM (bncl24);
extern SEMANTIC_FN SEMF (bncl24);
extern SEMANTIC_FN SEM (cmp);
extern SEMANTIC_FN SEMF (cmp);
extern SEMANTIC_FN SEM (cmpi);
extern SEMANTIC_FN SEMF (cmpi);
extern SEMANTIC_FN SEM (cmpu);
extern SEMANTIC_FN SEMF (cmpu);
extern SEMANTIC_FN SEM (cmpui);
extern SEMANTIC_FN SEMF (cmpui);
extern SEMANTIC_FN SEM (cmpeq);
extern SEMANTIC_FN SEMF (cmpeq);
extern SEMANTIC_FN SEM (cmpz);
extern SEMANTIC_FN SEMF (cmpz);
extern SEMANTIC_FN SEM (div);
extern SEMANTIC_FN SEMF (div);
extern SEMANTIC_FN SEM (divu);
extern SEMANTIC_FN SEMF (divu);
extern SEMANTIC_FN SEM (rem);
extern SEMANTIC_FN SEMF (rem);
extern SEMANTIC_FN SEM (remu);
extern SEMANTIC_FN SEMF (remu);
extern SEMANTIC_FN SEM (divh);
extern SEMANTIC_FN SEMF (divh);
extern SEMANTIC_FN SEM (jc);
extern SEMANTIC_FN SEMF (jc);
extern SEMANTIC_FN SEM (jnc);
extern SEMANTIC_FN SEMF (jnc);
extern SEMANTIC_FN SEM (jl);
extern SEMANTIC_FN SEMF (jl);
extern SEMANTIC_FN SEM (jmp);
extern SEMANTIC_FN SEMF (jmp);
extern SEMANTIC_FN SEM (ld);
extern SEMANTIC_FN SEMF (ld);
extern SEMANTIC_FN SEM (ld_d);
extern SEMANTIC_FN SEMF (ld_d);
extern SEMANTIC_FN SEM (ldb);
extern SEMANTIC_FN SEMF (ldb);
extern SEMANTIC_FN SEM (ldb_d);
extern SEMANTIC_FN SEMF (ldb_d);
extern SEMANTIC_FN SEM (ldh);
extern SEMANTIC_FN SEMF (ldh);
extern SEMANTIC_FN SEM (ldh_d);
extern SEMANTIC_FN SEMF (ldh_d);
extern SEMANTIC_FN SEM (ldub);
extern SEMANTIC_FN SEMF (ldub);
extern SEMANTIC_FN SEM (ldub_d);
extern SEMANTIC_FN SEMF (ldub_d);
extern SEMANTIC_FN SEM (lduh);
extern SEMANTIC_FN SEMF (lduh);
extern SEMANTIC_FN SEM (lduh_d);
extern SEMANTIC_FN SEMF (lduh_d);
extern SEMANTIC_FN SEM (ld_plus);
extern SEMANTIC_FN SEMF (ld_plus);
extern SEMANTIC_FN SEM (ld24);
extern SEMANTIC_FN SEMF (ld24);
extern SEMANTIC_FN SEM (ldi8);
extern SEMANTIC_FN SEMF (ldi8);
extern SEMANTIC_FN SEM (ldi16);
extern SEMANTIC_FN SEMF (ldi16);
extern SEMANTIC_FN SEM (lock);
extern SEMANTIC_FN SEMF (lock);
extern SEMANTIC_FN SEM (machi_a);
extern SEMANTIC_FN SEMF (machi_a);
extern SEMANTIC_FN SEM (maclo_a);
extern SEMANTIC_FN SEMF (maclo_a);
extern SEMANTIC_FN SEM (mul);
extern SEMANTIC_FN SEMF (mul);
extern SEMANTIC_FN SEM (mulhi_a);
extern SEMANTIC_FN SEMF (mulhi_a);
extern SEMANTIC_FN SEM (mullo_a);
extern SEMANTIC_FN SEMF (mullo_a);
extern SEMANTIC_FN SEM (mv);
extern SEMANTIC_FN SEMF (mv);
extern SEMANTIC_FN SEM (mvfachi_a);
extern SEMANTIC_FN SEMF (mvfachi_a);
extern SEMANTIC_FN SEM (mvfaclo_a);
extern SEMANTIC_FN SEMF (mvfaclo_a);
extern SEMANTIC_FN SEM (mvfacmi_a);
extern SEMANTIC_FN SEMF (mvfacmi_a);
extern SEMANTIC_FN SEM (mvfc);
extern SEMANTIC_FN SEMF (mvfc);
extern SEMANTIC_FN SEM (mvtachi_a);
extern SEMANTIC_FN SEMF (mvtachi_a);
extern SEMANTIC_FN SEM (mvtaclo_a);
extern SEMANTIC_FN SEMF (mvtaclo_a);
extern SEMANTIC_FN SEM (mvtc);
extern SEMANTIC_FN SEMF (mvtc);
extern SEMANTIC_FN SEM (neg);
extern SEMANTIC_FN SEMF (neg);
extern SEMANTIC_FN SEM (nop);
extern SEMANTIC_FN SEMF (nop);
extern SEMANTIC_FN SEM (not);
extern SEMANTIC_FN SEMF (not);
extern SEMANTIC_FN SEM (rac_dsi);
extern SEMANTIC_FN SEMF (rac_dsi);
extern SEMANTIC_FN SEM (rach_dsi);
extern SEMANTIC_FN SEMF (rach_dsi);
extern SEMANTIC_FN SEM (rte);
extern SEMANTIC_FN SEMF (rte);
extern SEMANTIC_FN SEM (seth);
extern SEMANTIC_FN SEMF (seth);
extern SEMANTIC_FN SEM (sll);
extern SEMANTIC_FN SEMF (sll);
extern SEMANTIC_FN SEM (sll3);
extern SEMANTIC_FN SEMF (sll3);
extern SEMANTIC_FN SEM (slli);
extern SEMANTIC_FN SEMF (slli);
extern SEMANTIC_FN SEM (sra);
extern SEMANTIC_FN SEMF (sra);
extern SEMANTIC_FN SEM (sra3);
extern SEMANTIC_FN SEMF (sra3);
extern SEMANTIC_FN SEM (srai);
extern SEMANTIC_FN SEMF (srai);
extern SEMANTIC_FN SEM (srl);
extern SEMANTIC_FN SEMF (srl);
extern SEMANTIC_FN SEM (srl3);
extern SEMANTIC_FN SEMF (srl3);
extern SEMANTIC_FN SEM (srli);
extern SEMANTIC_FN SEMF (srli);
extern SEMANTIC_FN SEM (st);
extern SEMANTIC_FN SEMF (st);
extern SEMANTIC_FN SEM (st_d);
extern SEMANTIC_FN SEMF (st_d);
extern SEMANTIC_FN SEM (stb);
extern SEMANTIC_FN SEMF (stb);
extern SEMANTIC_FN SEM (stb_d);
extern SEMANTIC_FN SEMF (stb_d);
extern SEMANTIC_FN SEM (sth);
extern SEMANTIC_FN SEMF (sth);
extern SEMANTIC_FN SEM (sth_d);
extern SEMANTIC_FN SEMF (sth_d);
extern SEMANTIC_FN SEM (st_plus);
extern SEMANTIC_FN SEMF (st_plus);
extern SEMANTIC_FN SEM (st_minus);
extern SEMANTIC_FN SEMF (st_minus);
extern SEMANTIC_FN SEM (sub);
extern SEMANTIC_FN SEMF (sub);
extern SEMANTIC_FN SEM (subv);
extern SEMANTIC_FN SEMF (subv);
extern SEMANTIC_FN SEM (subx);
extern SEMANTIC_FN SEMF (subx);
extern SEMANTIC_FN SEM (trap);
extern SEMANTIC_FN SEMF (trap);
extern SEMANTIC_FN SEM (unlock);
extern SEMANTIC_FN SEMF (unlock);
extern SEMANTIC_FN SEM (satb);
extern SEMANTIC_FN SEMF (satb);
extern SEMANTIC_FN SEM (sath);
extern SEMANTIC_FN SEMF (sath);
extern SEMANTIC_FN SEM (sat);
extern SEMANTIC_FN SEMF (sat);
extern SEMANTIC_FN SEM (pcmpbz);
extern SEMANTIC_FN SEMF (pcmpbz);
extern SEMANTIC_FN SEM (sadd);
extern SEMANTIC_FN SEMF (sadd);
extern SEMANTIC_FN SEM (macwu1);
extern SEMANTIC_FN SEMF (macwu1);
extern SEMANTIC_FN SEM (msblo);
extern SEMANTIC_FN SEMF (msblo);
extern SEMANTIC_FN SEM (mulwu1);
extern SEMANTIC_FN SEMF (mulwu1);
extern SEMANTIC_FN SEM (maclh1);
extern SEMANTIC_FN SEMF (maclh1);
extern SEMANTIC_FN SEM (sc);
extern SEMANTIC_FN SEMF (sc);
extern SEMANTIC_FN SEM (snc);
extern SEMANTIC_FN SEMF (snc);
#if WITH_SEM_SWITCH_FULL
#ifdef __GNUC__
void *sem_full_lab;
#endif
#else
SEMANTIC_FN *sem_full;
#endif
#undef EX
#if WITH_SEM_SWITCH_FAST
#ifdef __GNUC__
void *sem_fast_lab;
#endif
#else
SEMANTIC_FN *sem_fast;
#endif
/* Instruction number (index in IDESC table, profile table).
Also used to switch on in non-gcc semantic switches. */
int num;
/* opcode table data */
const CGEN_INSN *opcode;
/* profiling/modelling support */
const INSN_TIMING *timing;
};
extern const IDESC *m32rxf_decode (SIM_CPU *, IADDR,
CGEN_INSN_INT, CGEN_INSN_INT,
ARGBUF *);
/* Enum declaration for instructions in cpu family m32rxf. */
typedef enum m32rxf_insn_type {
M32RXF_INSN_X_INVALID, M32RXF_INSN_X_AFTER, M32RXF_INSN_X_BEFORE, M32RXF_INSN_X_CTI_CHAIN
, M32RXF_INSN_X_CHAIN, M32RXF_INSN_X_BEGIN, M32RXF_INSN_ADD, M32RXF_INSN_ADD3
, M32RXF_INSN_AND, M32RXF_INSN_AND3, M32RXF_INSN_OR, M32RXF_INSN_OR3
, M32RXF_INSN_XOR, M32RXF_INSN_XOR3, M32RXF_INSN_ADDI, M32RXF_INSN_ADDV
, M32RXF_INSN_ADDV3, M32RXF_INSN_ADDX, M32RXF_INSN_BC8, M32RXF_INSN_BC24
, M32RXF_INSN_BEQ, M32RXF_INSN_BEQZ, M32RXF_INSN_BGEZ, M32RXF_INSN_BGTZ
, M32RXF_INSN_BLEZ, M32RXF_INSN_BLTZ, M32RXF_INSN_BNEZ, M32RXF_INSN_BL8
, M32RXF_INSN_BL24
/* start-sanitize-m32rx */
, M32RXF_INSN_BCL8
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_BCL24
/* end-sanitize-m32rx */
, M32RXF_INSN_BNC8, M32RXF_INSN_BNC24, M32RXF_INSN_BNE, M32RXF_INSN_BRA8
, M32RXF_INSN_BRA24
/* start-sanitize-m32rx */
, M32RXF_INSN_BNCL8
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_BNCL24
/* end-sanitize-m32rx */
, M32RXF_INSN_CMP, M32RXF_INSN_CMPI, M32RXF_INSN_CMPU, M32RXF_INSN_CMPUI
/* start-sanitize-m32rx */
, M32RXF_INSN_CMPEQ
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_CMPZ
/* end-sanitize-m32rx */
, M32RXF_INSN_DIV, M32RXF_INSN_DIVU, M32RXF_INSN_REM, M32RXF_INSN_REMU
/* start-sanitize-m32rx */
, M32RXF_INSN_DIVH
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_JC
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_JNC
/* end-sanitize-m32rx */
, M32RXF_INSN_JL, M32RXF_INSN_JMP, M32RXF_INSN_LD, M32RXF_INSN_LD_D
, M32RXF_INSN_LDB, M32RXF_INSN_LDB_D, M32RXF_INSN_LDH, M32RXF_INSN_LDH_D
, M32RXF_INSN_LDUB, M32RXF_INSN_LDUB_D, M32RXF_INSN_LDUH, M32RXF_INSN_LDUH_D
, M32RXF_INSN_LD_PLUS, M32RXF_INSN_LD24, M32RXF_INSN_LDI8, M32RXF_INSN_LDI16
, M32RXF_INSN_LOCK
/* start-sanitize-m32rx */
, M32RXF_INSN_MACHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_MACLO_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_MACWHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_MACWLO_A
/* end-sanitize-m32rx */
, M32RXF_INSN_MUL
/* start-sanitize-m32rx */
, M32RXF_INSN_MULHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_MULLO_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_MULWHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_MULWLO_A
/* end-sanitize-m32rx */
, M32RXF_INSN_MV
/* start-sanitize-m32rx */
, M32RXF_INSN_MVFACHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_MVFACLO_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_MVFACMI_A
/* end-sanitize-m32rx */
, M32RXF_INSN_MVFC
/* start-sanitize-m32rx */
, M32RXF_INSN_MVTACHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_MVTACLO_A
/* end-sanitize-m32rx */
, M32RXF_INSN_MVTC, M32RXF_INSN_NEG, M32RXF_INSN_NOP, M32RXF_INSN_NOT
/* start-sanitize-m32rx */
, M32RXF_INSN_RAC_DSI
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_RACH_DSI
/* end-sanitize-m32rx */
, M32RXF_INSN_RTE, M32RXF_INSN_SETH, M32RXF_INSN_SLL, M32RXF_INSN_SLL3
, M32RXF_INSN_SLLI, M32RXF_INSN_SRA, M32RXF_INSN_SRA3, M32RXF_INSN_SRAI
, M32RXF_INSN_SRL, M32RXF_INSN_SRL3, M32RXF_INSN_SRLI, M32RXF_INSN_ST
, M32RXF_INSN_ST_D, M32RXF_INSN_STB, M32RXF_INSN_STB_D, M32RXF_INSN_STH
, M32RXF_INSN_STH_D, M32RXF_INSN_ST_PLUS, M32RXF_INSN_ST_MINUS, M32RXF_INSN_SUB
, M32RXF_INSN_SUBV, M32RXF_INSN_SUBX, M32RXF_INSN_TRAP, M32RXF_INSN_UNLOCK
/* start-sanitize-m32rx */
, M32RXF_INSN_SATB
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_SATH
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_SAT
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PCMPBZ
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_SADD
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_MACWU1
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_MSBLO
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_MULWU1
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_MACLH1
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_SC
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_SNC
/* end-sanitize-m32rx */
, M32RXF_INSN_PAR_ADD, M32RXF_INSN_WRITE_ADD, M32RXF_INSN_PAR_AND, M32RXF_INSN_WRITE_AND
, M32RXF_INSN_PAR_OR, M32RXF_INSN_WRITE_OR, M32RXF_INSN_PAR_XOR, M32RXF_INSN_WRITE_XOR
, M32RXF_INSN_PAR_ADDI, M32RXF_INSN_WRITE_ADDI, M32RXF_INSN_PAR_ADDV, M32RXF_INSN_WRITE_ADDV
, M32RXF_INSN_PAR_ADDX, M32RXF_INSN_WRITE_ADDX, M32RXF_INSN_PAR_BC8, M32RXF_INSN_WRITE_BC8
, M32RXF_INSN_PAR_BL8, M32RXF_INSN_WRITE_BL8
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_BCL8
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_BCL8
/* end-sanitize-m32rx */
, M32RXF_INSN_PAR_BNC8, M32RXF_INSN_WRITE_BNC8, M32RXF_INSN_PAR_BRA8, M32RXF_INSN_WRITE_BRA8
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_BNCL8
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_BNCL8
/* end-sanitize-m32rx */
, M32RXF_INSN_PAR_CMP, M32RXF_INSN_WRITE_CMP, M32RXF_INSN_PAR_CMPU, M32RXF_INSN_WRITE_CMPU
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_CMPEQ
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_CMPEQ
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_CMPZ
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_CMPZ
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_JC
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_JC
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_JNC
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_JNC
/* end-sanitize-m32rx */
, M32RXF_INSN_PAR_JL, M32RXF_INSN_WRITE_JL, M32RXF_INSN_PAR_JMP, M32RXF_INSN_WRITE_JMP
, M32RXF_INSN_PAR_LD, M32RXF_INSN_WRITE_LD, M32RXF_INSN_PAR_LDB, M32RXF_INSN_WRITE_LDB
, M32RXF_INSN_PAR_LDH, M32RXF_INSN_WRITE_LDH, M32RXF_INSN_PAR_LDUB, M32RXF_INSN_WRITE_LDUB
, M32RXF_INSN_PAR_LDUH, M32RXF_INSN_WRITE_LDUH, M32RXF_INSN_PAR_LD_PLUS, M32RXF_INSN_WRITE_LD_PLUS
, M32RXF_INSN_PAR_LDI8, M32RXF_INSN_WRITE_LDI8, M32RXF_INSN_PAR_LOCK, M32RXF_INSN_WRITE_LOCK
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_MACHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_MACHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_MACLO_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_MACLO_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_MACWHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_MACWHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_MACWLO_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_MACWLO_A
/* end-sanitize-m32rx */
, M32RXF_INSN_PAR_MUL, M32RXF_INSN_WRITE_MUL
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_MULHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_MULHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_MULLO_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_MULLO_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_MULWHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_MULWHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_MULWLO_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_MULWLO_A
/* end-sanitize-m32rx */
, M32RXF_INSN_PAR_MV, M32RXF_INSN_WRITE_MV
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_MVFACHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_MVFACHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_MVFACLO_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_MVFACLO_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_MVFACMI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_MVFACMI_A
/* end-sanitize-m32rx */
, M32RXF_INSN_PAR_MVFC, M32RXF_INSN_WRITE_MVFC
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_MVTACHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_MVTACHI_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_MVTACLO_A
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_MVTACLO_A
/* end-sanitize-m32rx */
, M32RXF_INSN_PAR_MVTC, M32RXF_INSN_WRITE_MVTC, M32RXF_INSN_PAR_NEG, M32RXF_INSN_WRITE_NEG
, M32RXF_INSN_PAR_NOP, M32RXF_INSN_WRITE_NOP, M32RXF_INSN_PAR_NOT, M32RXF_INSN_WRITE_NOT
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_RAC_DSI
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_RAC_DSI
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_RACH_DSI
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_RACH_DSI
/* end-sanitize-m32rx */
, M32RXF_INSN_PAR_RTE, M32RXF_INSN_WRITE_RTE, M32RXF_INSN_PAR_SLL, M32RXF_INSN_WRITE_SLL
, M32RXF_INSN_PAR_SLLI, M32RXF_INSN_WRITE_SLLI, M32RXF_INSN_PAR_SRA, M32RXF_INSN_WRITE_SRA
, M32RXF_INSN_PAR_SRAI, M32RXF_INSN_WRITE_SRAI, M32RXF_INSN_PAR_SRL, M32RXF_INSN_WRITE_SRL
, M32RXF_INSN_PAR_SRLI, M32RXF_INSN_WRITE_SRLI, M32RXF_INSN_PAR_ST, M32RXF_INSN_WRITE_ST
, M32RXF_INSN_PAR_STB, M32RXF_INSN_WRITE_STB, M32RXF_INSN_PAR_STH, M32RXF_INSN_WRITE_STH
, M32RXF_INSN_PAR_ST_PLUS, M32RXF_INSN_WRITE_ST_PLUS, M32RXF_INSN_PAR_ST_MINUS, M32RXF_INSN_WRITE_ST_MINUS
, M32RXF_INSN_PAR_SUB, M32RXF_INSN_WRITE_SUB, M32RXF_INSN_PAR_SUBV, M32RXF_INSN_WRITE_SUBV
, M32RXF_INSN_PAR_SUBX, M32RXF_INSN_WRITE_SUBX, M32RXF_INSN_PAR_TRAP, M32RXF_INSN_WRITE_TRAP
, M32RXF_INSN_PAR_UNLOCK, M32RXF_INSN_WRITE_UNLOCK
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_PCMPBZ
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_PCMPBZ
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_SADD
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_SADD
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_MACWU1
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_MACWU1
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_MSBLO
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_MSBLO
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_MULWU1
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_MULWU1
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_MACLH1
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_MACLH1
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_SC
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_SC
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_PAR_SNC
/* end-sanitize-m32rx */
/* start-sanitize-m32rx */
, M32RXF_INSN_WRITE_SNC
/* end-sanitize-m32rx */
, M32RXF_INSN_MAX
} M32RXF_INSN_TYPE;
#if ! WITH_SEM_SWITCH_FULL
#define SEMFULL(fn) extern SEMANTIC_FN CONCAT3 (m32rxf,_sem_,fn);
#else
#define SEMFULL(fn)
#endif
#if ! WITH_SEM_SWITCH_FAST
#define SEMFAST(fn) extern SEMANTIC_FN CONCAT3 (m32rxf,_semf_,fn);
#else
#define SEMFAST(fn)
#endif
#define SEM(fn) SEMFULL (fn) SEMFAST (fn)
/* The function version of the before/after handlers is always needed,
so we always want the SEMFULL declaration of them. */
extern SEMANTIC_FN CONCAT3 (m32rxf,_sem_,x_before);
extern SEMANTIC_FN CONCAT3 (m32rxf,_sem_,x_after);
SEM (x_invalid)
SEM (x_after)
SEM (x_before)
SEM (x_cti_chain)
SEM (x_chain)
SEM (x_begin)
SEM (add)
SEM (add3)
SEM (and)
SEM (and3)
SEM (or)
SEM (or3)
SEM (xor)
SEM (xor3)
SEM (addi)
SEM (addv)
SEM (addv3)
SEM (addx)
SEM (bc8)
SEM (bc24)
SEM (beq)
SEM (beqz)
SEM (bgez)
SEM (bgtz)
SEM (blez)
SEM (bltz)
SEM (bnez)
SEM (bl8)
SEM (bl24)
SEM (bcl8)
SEM (bcl24)
SEM (bnc8)
SEM (bnc24)
SEM (bne)
SEM (bra8)
SEM (bra24)
SEM (bncl8)
SEM (bncl24)
SEM (cmp)
SEM (cmpi)
SEM (cmpu)
SEM (cmpui)
SEM (cmpeq)
SEM (cmpz)
SEM (div)
SEM (divu)
SEM (rem)
SEM (remu)
SEM (divh)
SEM (jc)
SEM (jnc)
SEM (jl)
SEM (jmp)
SEM (ld)
SEM (ld_d)
SEM (ldb)
SEM (ldb_d)
SEM (ldh)
SEM (ldh_d)
SEM (ldub)
SEM (ldub_d)
SEM (lduh)
SEM (lduh_d)
SEM (ld_plus)
SEM (ld24)
SEM (ldi8)
SEM (ldi16)
SEM (lock)
SEM (machi_a)
SEM (maclo_a)
SEM (macwhi_a)
SEM (macwlo_a)
SEM (mul)
SEM (mulhi_a)
SEM (mullo_a)
SEM (mulwhi_a)
SEM (mulwlo_a)
SEM (mv)
SEM (mvfachi_a)
SEM (mvfaclo_a)
SEM (mvfacmi_a)
SEM (mvfc)
SEM (mvtachi_a)
SEM (mvtaclo_a)
SEM (mvtc)
SEM (neg)
SEM (nop)
SEM (not)
SEM (rac_dsi)
SEM (rach_dsi)
SEM (rte)
SEM (seth)
SEM (sll)
SEM (sll3)
SEM (slli)
SEM (sra)
SEM (sra3)
SEM (srai)
SEM (srl)
SEM (srl3)
SEM (srli)
SEM (st)
SEM (st_d)
SEM (stb)
SEM (stb_d)
SEM (sth)
SEM (sth_d)
SEM (st_plus)
SEM (st_minus)
SEM (sub)
SEM (subv)
SEM (subx)
SEM (trap)
SEM (unlock)
SEM (satb)
SEM (sath)
SEM (sat)
SEM (pcmpbz)
SEM (sadd)
SEM (macwu1)
SEM (msblo)
SEM (mulwu1)
SEM (maclh1)
SEM (sc)
SEM (snc)
#undef SEMFULL
#undef SEMFAST
#undef SEM
#undef SEMF
#endif /* M32RX_DECODE_H */
/* Function unit handlers (user written). */
extern int m32rxf_model_m32rx_u_store (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*src1*/, INT /*src2*/);
extern int m32rxf_model_m32rx_u_load (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*sr*/, INT /*dr*/);
extern int m32rxf_model_m32rx_u_cti (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*sr*/);
extern int m32rxf_model_m32rx_u_mac (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*src1*/, INT /*src2*/);
extern int m32rxf_model_m32rx_u_cmp (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*src1*/, INT /*src2*/);
extern int m32rxf_model_m32rx_u_exec (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*sr*/, INT /*sr2*/, INT /*dr*/);
/* Profiling before/after handlers (user written) */
extern void m32rxf_model_insn_before (SIM_CPU *, int /*first_p*/);
extern void m32rxf_model_insn_after (SIM_CPU *, int /*last_p*/, int /*cycles*/);
#endif /* M32RXF_DECODE_H */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff