X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=mach.h;h=0e55fe877d54428c372134f0636cff0c0d4f2142;hp=8b10038823a5f399e3163f5c756b01f9a700ef9f;hb=5f23454f7155f0c77ea1bede3f9e60b39da99fa8;hpb=03eb5a53e1990094c317c12d496245d8b472333c diff --git a/mach.h b/mach.h index 8b10038..0e55fe8 100644 --- a/mach.h +++ b/mach.h @@ -10,7 +10,16 @@ #define __MACH_H__ #include "rmac.h" -#include "amode.h" + +// Mnemonic table structure +#define MNTAB struct _mntab +MNTAB { + WORD mnattr; // Attributes (CGSPECIAL, SIZN, ...) + LONG mn0, mn1; // Addressing modes + WORD mninst; // Instruction mask + WORD mncont; // Continuation (or -1) + int (* mnfunc)(WORD, WORD); // Mnemonic builder +}; // Exported variables extern char seg_error[]; @@ -18,265 +27,9 @@ extern char undef_error[]; extern char rel_error[]; extern char range_error[]; extern char abs_error[]; +extern char unsupport[]; extern MNTAB machtab[]; -extern int activecpu; -extern int activefpu; extern int movep; -// Fucntion prototypes -int m_unimp(WORD, WORD), m_badmode(WORD, WORD), m_bad6mode(WORD, WORD), m_bad6inst(WORD, WORD); -int m_self(WORD, WORD); -int m_abcd(WORD, WORD); -int m_reg(WORD, WORD); -int m_imm(WORD, WORD); -int m_imm8(WORD, WORD); -int m_shi(WORD, WORD); -int m_shr(WORD, WORD); -int m_bitop(WORD, WORD); -int m_exg(WORD, WORD); -int m_ea(WORD, WORD); -int m_lea(WORD, WORD); -int m_br(WORD, WORD); -int m_dbra(WORD, WORD); -int m_link(WORD, WORD); -int m_adda(WORD, WORD); -int m_addq(WORD, WORD); -//int m_move(WORD, int); -int m_move(WORD, WORD); -int m_moveq(WORD, WORD); -int m_usp(WORD, WORD); -int m_movep(WORD, WORD); -int m_trap(WORD, WORD); -int m_movem(WORD, WORD); -int m_clra(WORD, WORD); - -int m_move30(WORD, WORD); //68020/30/40/60 -int m_br30(WORD inst, WORD siz); -int m_ea030(WORD inst, WORD siz); -int m_bfop(WORD inst, WORD siz); -int m_callm(WORD inst, WORD siz); -int m_cas(WORD inst, WORD siz); -int m_cas2(WORD inst, WORD siz); -int m_chk2(WORD inst, WORD siz); -int m_cmp2(WORD inst, WORD siz); -int m_bkpt(WORD inst, WORD siz); -int m_cpbr(WORD inst, WORD siz); -int m_cpdbr(WORD inst, WORD siz); -int m_divs(WORD inst, WORD siz); -int m_muls(WORD inst, WORD siz); -int m_divu(WORD inst, WORD siz); -int m_mulu(WORD inst, WORD siz); -int m_divsl(WORD inst, WORD siz); -int m_divul(WORD inst, WORD siz); -int m_move16a(WORD inst, WORD siz); -int m_move16b(WORD inst, WORD siz); -int m_pack(WORD inst, WORD siz); -int m_rtm(WORD inst, WORD siz); -int m_rtd(WORD inst, WORD siz); -int m_trapcc(WORD inst, WORD siz); -int m_cinv(WORD inst, WORD siz); -int m_cprest(WORD inst, WORD siz); -int m_movec(WORD inst, WORD siz); -int m_moves(WORD inst, WORD siz); - -// PMMU -int m_pbcc(WORD inst, WORD siz); -int m_pflusha(WORD inst, WORD siz); -int m_pflush(WORD inst, WORD siz); -int m_pflushr(WORD inst, WORD siz); -int m_pload(WORD inst, WORD siz); -int m_pmove(WORD inst, WORD siz); -int m_pmovefd(WORD inst, WORD siz); -int m_ptest(WORD inst, WORD siz); -int m_ptrapbs(WORD inst, WORD siz); -int m_ptrapbc(WORD inst, WORD siz); -int m_ptrapls(WORD inst, WORD siz); -int m_ptraplc(WORD inst, WORD siz); -int m_ptrapss(WORD inst, WORD siz); -int m_ptrapsc(WORD inst, WORD siz); -int m_ptrapas(WORD inst, WORD siz); -int m_ptrapac(WORD inst, WORD siz); -int m_ptrapws(WORD inst, WORD siz); -int m_ptrapwc(WORD inst, WORD siz); -int m_ptrapis(WORD inst, WORD siz); -int m_ptrapic(WORD inst, WORD siz); -int m_ptrapgc(WORD inst, WORD siz); -int m_ptrapgs(WORD inst, WORD siz); -int m_ptrapcs(WORD inst, WORD siz); -int m_ptrapcc(WORD inst, WORD siz); -int m_ptrapbsn(WORD inst, WORD siz); -int m_ptrapbcn(WORD inst, WORD siz); -int m_ptraplsn(WORD inst, WORD siz); -int m_ptraplcn(WORD inst, WORD siz); -int m_ptrapssn(WORD inst, WORD siz); -int m_ptrapscn(WORD inst, WORD siz); -int m_ptrapasn(WORD inst, WORD siz); -int m_ptrapacn(WORD inst, WORD siz); -int m_ptrapwsn(WORD inst, WORD siz); -int m_ptrapwcn(WORD inst, WORD siz); -int m_ptrapisn(WORD inst, WORD siz); -int m_ptrapicn(WORD inst, WORD siz); -int m_ptrapgsn(WORD inst, WORD siz); -int m_ptrapgcn(WORD inst, WORD siz); -int m_ptrapcsn(WORD inst, WORD siz); -int m_ptrapccn(WORD inst, WORD siz); - -//FPU -int m_fabs(WORD inst, WORD siz); -int m_facos(WORD inst, WORD siz); -int m_fadd(WORD inst, WORD siz); -int m_fasin(WORD inst, WORD siz); -int m_fatan(WORD inst, WORD siz); -int m_fatanh(WORD inst, WORD siz); -int m_fcmp(WORD inst, WORD siz); -int m_fcos(WORD inst, WORD siz); -int m_fcosh(WORD inst, WORD siz); -int m_fdabs(WORD inst, WORD siz); -int m_fdadd(WORD inst, WORD siz); -int m_fdbcc(WORD inst, WORD siz); -int m_fddiv(WORD inst, WORD siz); -int m_fdfsqrt(WORD inst, WORD siz); -int m_fdiv(WORD inst, WORD siz); -int m_fdmove(WORD inst, WORD siz); -int m_fdmul(WORD inst, WORD siz); -int m_fdneg(WORD inst, WORD siz); -int m_fdsub(WORD inst, WORD siz); -int m_fetox(WORD inst, WORD siz); -int m_fetoxm1(WORD inst, WORD siz); -int m_fgetexp(WORD inst, WORD siz); -int m_fgetman(WORD inst, WORD siz); -int m_fint(WORD inst, WORD siz); -int m_fintrz(WORD inst, WORD siz); -int m_flog10(WORD inst, WORD siz); -int m_flog2(WORD inst, WORD siz); -int m_flogn(WORD inst, WORD siz); -int m_flognp1(WORD inst, WORD siz); -int m_fmod(WORD inst, WORD siz); -int m_fmove(WORD inst, WORD siz); -int m_fmovescr(WORD inst, WORD siz); -int m_fmovecr(WORD inst, WORD siz); -int m_fmovem(WORD inst, WORD siz); -int m_fmul(WORD inst, WORD siz); -int m_fneg(WORD inst, WORD siz); -int m_fnop(WORD inst, WORD siz); -int m_frem(WORD inst, WORD siz); -int m_fsabs(WORD inst, WORD siz); -int m_fsadd(WORD inst, WORD siz); -int m_fseq(WORD inst, WORD siz); -int m_fsne(WORD inst, WORD siz); -int m_fsgt(WORD inst, WORD siz); -int m_fsngt(WORD inst, WORD siz); -int m_fsge(WORD inst, WORD siz); -int m_fsnge(WORD inst, WORD siz); -int m_fslt(WORD inst, WORD siz); -int m_fsnlt(WORD inst, WORD siz); -int m_fsle(WORD inst, WORD siz); -int m_fsnle(WORD inst, WORD siz); -int m_fsgl(WORD inst, WORD siz); -int m_fsngl(WORD inst, WORD siz); -int m_fsgle(WORD inst, WORD siz); -int m_fsngle(WORD inst, WORD siz); -int m_fsogt(WORD inst, WORD siz); -int m_fsule(WORD inst, WORD siz); -int m_fsoge(WORD inst, WORD siz); -int m_fsult(WORD inst, WORD siz); -int m_fsolt(WORD inst, WORD siz); -int m_fsuge(WORD inst, WORD siz); -int m_fsole(WORD inst, WORD siz); -int m_fsugt(WORD inst, WORD siz); -int m_fsogl(WORD inst, WORD siz); -int m_fsueq(WORD inst, WORD siz); -int m_fsor(WORD inst, WORD siz); -int m_fsun(WORD inst, WORD siz); -int m_fsf(WORD inst, WORD siz); -int m_fst(WORD inst, WORD siz); -int m_fssf(WORD inst, WORD siz); -int m_fsst(WORD inst, WORD siz); -int m_fsseq(WORD inst, WORD siz); -int m_fssne(WORD inst, WORD siz); -int m_fscale(WORD inst, WORD siz); -int m_fsdiv(WORD inst, WORD siz); -int m_fsfsqrt(WORD inst, WORD siz); -int m_fsfsub(WORD inst, WORD siz); -int m_fsgldiv(WORD inst, WORD siz); -int m_fsglmul(WORD inst, WORD siz); -int m_fsin(WORD inst, WORD siz); -int m_fsincos(WORD inst, WORD siz); -int m_fsinh(WORD inst, WORD siz); -int m_fsmove(WORD inst, WORD siz); -int m_fsmul(WORD inst, WORD siz); -int m_fsneg(WORD inst, WORD siz); -int m_fsqrt(WORD inst, WORD siz); -int m_fsub(WORD inst, WORD siz); -int m_ftan(WORD inst, WORD siz); -int m_ftanh(WORD inst, WORD siz); -int m_ftentox(WORD inst, WORD siz); -int m_ftst(WORD inst, WORD siz); -int m_ftwotox(WORD inst, WORD siz); -int m_ftrapeq(WORD inst, WORD siz); -int m_ftrapne(WORD inst, WORD siz); -int m_ftrapgt(WORD inst, WORD siz); -int m_ftrapngt(WORD inst, WORD siz); -int m_ftrapge(WORD inst, WORD siz); -int m_ftrapnge(WORD inst, WORD siz); -int m_ftraplt(WORD inst, WORD siz); -int m_ftrapnlt(WORD inst, WORD siz); -int m_ftraple(WORD inst, WORD siz); -int m_ftrapnle(WORD inst, WORD siz); -int m_ftrapgl(WORD inst, WORD siz); -int m_ftrapngl(WORD inst, WORD siz); -int m_ftrapgle(WORD inst, WORD siz); -int m_ftrapngle(WORD inst, WORD siz); -int m_ftrapogt(WORD inst, WORD siz); -int m_ftrapule(WORD inst, WORD siz); -int m_ftrapoge(WORD inst, WORD siz); -int m_ftrapult(WORD inst, WORD siz); -int m_ftrapolt(WORD inst, WORD siz); -int m_ftrapuge(WORD inst, WORD siz); -int m_ftrapole(WORD inst, WORD siz); -int m_ftrapugt(WORD inst, WORD siz); -int m_ftrapogl(WORD inst, WORD siz); -int m_ftrapueq(WORD inst, WORD siz); -int m_ftrapor(WORD inst, WORD siz); -int m_ftrapun(WORD inst, WORD siz); -int m_ftrapf(WORD inst, WORD siz); -int m_ftrapt(WORD inst, WORD siz); -int m_ftrapsf(WORD inst, WORD siz); -int m_ftrapst(WORD inst, WORD siz); -int m_ftrapseq(WORD inst, WORD siz); -int m_ftrapsne(WORD inst, WORD siz); -int m_ftrapeqn(WORD inst, WORD siz); -int m_ftrapnen(WORD inst, WORD siz); -int m_ftrapgtn(WORD inst, WORD siz); -int m_ftrapngtn(WORD inst, WORD siz); -int m_ftrapgen(WORD inst, WORD siz); -int m_ftrapngen(WORD inst, WORD siz); -int m_ftrapltn(WORD inst, WORD siz); -int m_ftrapnltn(WORD inst, WORD siz); -int m_ftraplen(WORD inst, WORD siz); -int m_ftrapnlen(WORD inst, WORD siz); -int m_ftrapgln(WORD inst, WORD siz); -int m_ftrapngln(WORD inst, WORD siz); -int m_ftrapglen(WORD inst, WORD siz); -int m_ftrapnglen(WORD inst, WORD siz); -int m_ftrapogtn(WORD inst, WORD siz); -int m_ftrapulen(WORD inst, WORD siz); -int m_ftrapogen(WORD inst, WORD siz); -int m_ftrapultn(WORD inst, WORD siz); -int m_ftrapoltn(WORD inst, WORD siz); -int m_ftrapugen(WORD inst, WORD siz); -int m_ftrapolen(WORD inst, WORD siz); -int m_ftrapugtn(WORD inst, WORD siz); -int m_ftrapogln(WORD inst, WORD siz); -int m_ftrapueqn(WORD inst, WORD siz); -int m_ftraporn(WORD inst, WORD siz); -int m_ftrapunn(WORD inst, WORD siz); -int m_ftrapfn(WORD inst, WORD siz); -int m_ftraptn(WORD inst, WORD siz); -int m_ftrapsfn(WORD inst, WORD siz); -int m_ftrapstn(WORD inst, WORD siz); -int m_ftrapseqn(WORD inst, WORD siz); -int m_ftrapsnen(WORD inst, WORD siz); - #endif // __MACH_H__