home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 6 / AACD06.ISO / AACD / Emulation / BasiliskII / src / uae_cpu / readcpu.h < prev    next >
C/C++ Source or Header  |  1999-10-28  |  3KB  |  115 lines

  1. #ifdef __cplusplus
  2. extern "C" {
  3. #endif
  4.  
  5. ENUMDECL {
  6.   Dreg, Areg, Aind, Aipi, Apdi, Ad16, Ad8r,
  7.   absw, absl, PC16, PC8r, imm, imm0, imm1, imm2, immi, am_unknown, am_illg
  8. } ENUMNAME (amodes);
  9.  
  10. ENUMDECL {
  11.     i_ILLG,
  12.  
  13.     i_OR, i_AND, i_EOR, i_ORSR, i_ANDSR, i_EORSR,
  14.     i_SUB, i_SUBA, i_SUBX, i_SBCD,
  15.     i_ADD, i_ADDA, i_ADDX, i_ABCD,
  16.     i_NEG, i_NEGX, i_NBCD, i_CLR, i_NOT, i_TST,
  17.     i_BTST, i_BCHG, i_BCLR, i_BSET,
  18.     i_CMP, i_CMPM, i_CMPA,
  19.     i_MVPRM, i_MVPMR, i_MOVE, i_MOVEA, i_MVSR2, i_MV2SR,
  20.     i_SWAP, i_EXG, i_EXT, i_MVMEL, i_MVMLE,
  21.     i_TRAP, i_MVR2USP, i_MVUSP2R, i_RESET, i_NOP, i_STOP, i_RTE, i_RTD,
  22.     i_LINK, i_UNLK,
  23.     i_RTS, i_TRAPV, i_RTR,
  24.     i_JSR, i_JMP, i_BSR, i_Bcc,
  25.     i_LEA, i_PEA, i_DBcc, i_Scc,
  26.     i_DIVU, i_DIVS, i_MULU, i_MULS,
  27.     i_ASR, i_ASL, i_LSR, i_LSL, i_ROL, i_ROR, i_ROXL, i_ROXR,
  28.     i_ASRW, i_ASLW, i_LSRW, i_LSLW, i_ROLW, i_RORW, i_ROXLW, i_ROXRW,
  29.     i_CHK,i_CHK2,
  30.     i_MOVEC2, i_MOVE2C, i_CAS, i_CAS2, i_DIVL, i_MULL,
  31.     i_BFTST,i_BFEXTU,i_BFCHG,i_BFEXTS,i_BFCLR,i_BFFFO,i_BFSET,i_BFINS,
  32.     i_PACK, i_UNPK, i_TAS, i_BKPT, i_CALLM, i_RTM, i_TRAPcc, i_MOVES,
  33.     i_FPP, i_FDBcc, i_FScc, i_FTRAPcc, i_FBcc, i_FSAVE, i_FRESTORE,
  34.     i_CINVL, i_CINVP, i_CINVA, i_CPUSHL, i_CPUSHP, i_CPUSHA, i_MOVE16,
  35.     i_MMUOP
  36. } ENUMNAME (instrmnem);
  37.  
  38. extern struct mnemolookup {
  39.     instrmnem mnemo;
  40.     const char *name;
  41. } lookuptab[];
  42.  
  43. ENUMDECL {
  44.     sz_byte, sz_word, sz_long
  45. } ENUMNAME (wordsizes);
  46.  
  47. ENUMDECL {
  48.     fa_set, fa_unset, fa_zero, fa_one, fa_dontcare, fa_unknown, fa_isjmp
  49. } ENUMNAME (flagaffect);
  50.  
  51. ENUMDECL {
  52.     fu_used, fu_unused, fu_maybecc, fu_unknown, fu_isjmp
  53. } ENUMNAME (flaguse);
  54.  
  55. ENUMDECL {
  56.     bit0, bit1, bitc, bitC, bitf, biti, bitI, bitj, bitJ, bitk, bitK,
  57.     bits, bitS, bitd, bitD, bitr, bitR, bitz, lastbit
  58. } ENUMNAME (bitvals);
  59.  
  60. struct instr_def {
  61.     unsigned int bits;
  62.     int n_variable;
  63.     char bitpos[16];
  64.     unsigned int mask;
  65.     int cpulevel;
  66.     int plevel;
  67.     struct {
  68.     unsigned int flaguse:3;
  69.     unsigned int flagset:3;
  70.     } flaginfo[5];
  71.     unsigned char sduse;
  72.     const char *opcstr;
  73. };
  74.  
  75. extern struct instr_def defs68k[];
  76. extern int n_defs68k;
  77.  
  78. extern struct instr {
  79.     long int handler;
  80.     unsigned char dreg;
  81.     unsigned char sreg;
  82.     signed char dpos;
  83.     signed char spos;
  84.     unsigned char sduse;
  85.     int flagdead:8, flaglive:8;
  86.     unsigned int mnemo:8;
  87.     unsigned int cc:4;
  88.     unsigned int plev:2;
  89. #ifdef sgi
  90.     wordsizes size:2;
  91.     amodes smode:5;
  92.     unsigned int stype:3;
  93.     amodes dmode:5;
  94. #else
  95.     unsigned int size:2;
  96.     unsigned int smode:5;
  97.     unsigned int stype:3;
  98.     unsigned int dmode:5;
  99. #endif
  100.     unsigned int suse:1;
  101.     unsigned int duse:1;
  102.     unsigned int unused1:1;
  103.     unsigned int clev:3;
  104.     unsigned int unused2:5;
  105. } *table68k;
  106.  
  107. extern void read_table68k (void);
  108. extern void do_merges (void);
  109. extern int get_no_mismatches (void);
  110. extern int nr_cpuop_funcs;
  111.  
  112. #ifdef __cplusplus
  113. }
  114. #endif
  115.