uvmac/src/HW/M68K/M68KITAB.h

275 lines
4.1 KiB
C
Raw Normal View History

2019-07-23 02:50:34 +00:00
/*
M68KITAB.h
Copyright (C) 2007, Paul C. Pratt
You can redistribute this file and/or modify it under the terms
of version 2 of the GNU General Public License as published by
the Free Software Foundation. You should have received a copy
of the license along with this file; see the file COPYING.
This file is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
license for more details.
*/
#ifndef M68KITAB_H
2019-07-23 02:50:34 +00:00
#define M68KITAB_H
enum {
// 68000
2019-07-23 02:50:34 +00:00
kIKindTst,
kIKindCmpB,
kIKindCmpW,
kIKindCmpL,
kIKindBccB,
kIKindBccW,
kIKindBraB,
kIKindBraW,
kIKindDBcc,
kIKindDBF,
kIKindSwap,
kIKindMoveL,
kIKindMoveW,
kIKindMoveB,
kIKindMoveAL,
kIKindMoveAW,
kIKindMoveQ,
kIKindAddB,
kIKindAddW,
kIKindAddL,
kIKindSubB,
kIKindSubW,
kIKindSubL,
kIKindLea,
kIKindPEA,
kIKindA,
kIKindBsrB,
kIKindBsrW,
kIKindJsr,
kIKindLinkA6,
kIKindMOVEMRmML,
kIKindMOVEMApRL,
kIKindUnlkA6,
kIKindRts,
kIKindJmp,
kIKindClr,
kIKindAddA,
kIKindAddQA,
kIKindSubA,
kIKindSubQA,
kIKindCmpA,
kIKindAddXB,
kIKindAddXW,
kIKindAddXL,
kIKindSubXB,
kIKindSubXW,
kIKindSubXL,
kIKindAslB,
kIKindAslW,
kIKindAslL,
kIKindAsrB,
kIKindAsrW,
kIKindAsrL,
kIKindLslB,
kIKindLslW,
kIKindLslL,
kIKindLsrB,
kIKindLsrW,
kIKindLsrL,
kIKindRxlB,
kIKindRxlW,
kIKindRxlL,
kIKindRxrB,
kIKindRxrW,
kIKindRxrL,
kIKindRolB,
kIKindRolW,
kIKindRolL,
kIKindRorB,
kIKindRorW,
kIKindRorL,
kIKindBTstB,
kIKindBChgB,
kIKindBClrB,
kIKindBSetB,
kIKindBTstL,
kIKindBChgL,
kIKindBClrL,
kIKindBSetL,
kIKindAndI,
kIKindAndEaD,
kIKindAndDEa,
kIKindOrI,
kIKindOrDEa,
kIKindOrEaD,
kIKindEor,
kIKindEorI,
kIKindNot,
kIKindScc,
kIKindNegXB,
kIKindNegXW,
kIKindNegXL,
kIKindNegB,
kIKindNegW,
kIKindNegL,
kIKindEXTW,
kIKindEXTL,
kIKindMulU,
kIKindMulS,
kIKindDivU,
kIKindDivS,
kIKindExg,
kIKindMoveEaCCR,
kIKindMoveSREa,
kIKindMoveEaSR,
kIKindOrISR,
kIKindAndISR,
kIKindEorISR,
kIKindOrICCR,
kIKindAndICCR,
kIKindEorICCR,
kIKindMOVEMApRW,
kIKindMOVEMRmMW,
kIKindMOVEMrmW,
kIKindMOVEMrmL,
kIKindMOVEMmrW,
kIKindMOVEMmrL,
kIKindAbcd,
kIKindSbcd,
kIKindNbcd,
kIKindRte,
kIKindNop,
kIKindMoveP0,
kIKindMoveP1,
kIKindMoveP2,
kIKindMoveP3,
kIKindIllegal,
kIKindChkW,
kIKindTrap,
kIKindTrapV,
kIKindRtr,
kIKindLink,
kIKindUnlk,
kIKindMoveRUSP,
kIKindMoveUSPR,
kIKindTas,
kIKindFdflt,
kIKindStop,
kIKindReset,
// 68020
2019-07-23 02:50:34 +00:00
kIKindCallMorRtm,
kIKindBraL,
kIKindBccL,
kIKindBsrL,
kIKindEXTBL,
kIKindTRAPcc,
kIKindChkL,
kIKindBkpt,
kIKindDivL,
kIKindMulL,
kIKindRtd,
kIKindMoveCCREa,
kIKindMoveCEa,
kIKindMoveEaC,
kIKindLinkL,
kIKindPack,
kIKindUnpk,
kIKindCHK2orCMP2,
kIKindCAS2,
kIKindCAS,
kIKindMoveS,
kIKindBitField,
// MMU
2019-07-23 02:50:34 +00:00
kIKindMMU,
// FPU
2019-07-23 02:50:34 +00:00
kIKindFPUmd60,
kIKindFPUDBcc,
kIKindFPUTrapcc,
kIKindFPUScc,
kIKindFPUFBccW,
kIKindFPUFBccL,
kIKindFPUSave,
kIKindFPURestore,
kIKindFPUdflt,
kNumIKinds
};
enum {
kAMdRegB,
kAMdRegW,
kAMdRegL,
kAMdIndirectB,
kAMdIndirectW,
kAMdIndirectL,
kAMdAPosIncB,
kAMdAPosIncW,
kAMdAPosIncL,
kAMdAPosInc7B,
kAMdAPreDecB,
kAMdAPreDecW,
kAMdAPreDecL,
kAMdAPreDec7B,
kAMdADispB,
kAMdADispW,
kAMdADispL,
kAMdAIndexB,
kAMdAIndexW,
kAMdAIndexL,
kAMdAbsWB,
kAMdAbsWW,
kAMdAbsWL,
kAMdAbsLB,
kAMdAbsLW,
kAMdAbsLL,
kAMdPCDispB,
kAMdPCDispW,
kAMdPCDispL,
kAMdPCIndexB,
kAMdPCIndexW,
kAMdPCIndexL,
kAMdImmedB,
kAMdImmedW,
kAMdImmedL,
kAMdDat4,
kNumAMds
};
struct DecOpXR {
/* expected size : 4 bytes */
uint16_t MainClas;
uint16_t Cycles;
2019-07-23 02:50:34 +00:00
};
typedef struct DecOpXR DecOpXR;
struct DecArgR {
/* expected size : 2 bytes */
uint8_t AMd;
uint8_t ArgDat;
2019-07-23 02:50:34 +00:00
};
typedef struct DecArgR DecArgR;
struct DecOpYR {
/* expected size : 4 bytes */
DecArgR v[2];
};
typedef struct DecOpYR DecOpYR;
struct DecOpR {
/* expected size : 8 bytes */
DecOpXR x;
DecOpYR y;
2020-02-11 05:34:32 +00:00
} align_8;
2019-07-23 02:50:34 +00:00
typedef struct DecOpR DecOpR;
#define GetDcoCycles(p) ((p)->x.Cycles)
#define SetDcoMainClas(p, xx) ((p)->x.MainClas = (xx))
#define SetDcoCycles(p, xx) ((p)->x.Cycles = (xx))
extern void M68KITAB_setup(DecOpR *p);
#endif