diff options
author | Doug Evans <dje@google.com> | 1999-01-15 07:27:00 +0000 |
---|---|---|
committer | Doug Evans <dje@google.com> | 1999-01-15 07:27:00 +0000 |
commit | ddfae34d82bb3e1a07f8639fc34d13c6805285e5 (patch) | |
tree | d7fee4ee8ea49ae7df7e81ee0e0a6fc9cc863be9 /sim/m32r/decodex.h | |
parent | 976a48e6c399d1dd0c0a52e60ca38c752337bc7e (diff) | |
download | gdb-ddfae34d82bb3e1a07f8639fc34d13c6805285e5.zip gdb-ddfae34d82bb3e1a07f8639fc34d13c6805285e5.tar.gz gdb-ddfae34d82bb3e1a07f8639fc34d13c6805285e5.tar.bz2 |
* 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.
Diffstat (limited to 'sim/m32r/decodex.h')
-rw-r--r-- | sim/m32r/decodex.h | 849 |
1 files changed, 539 insertions, 310 deletions
diff --git a/sim/m32r/decodex.h b/sim/m32r/decodex.h index e8afc96..36ba4f1 100644 --- a/sim/m32r/decodex.h +++ b/sim/m32r/decodex.h @@ -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 */ |