optimizations, bugfixes, uae works (but with timing glitches?)
[picodrive.git] / cpu / Cyclone / app.h
CommitLineData
cc68a136 1\r
2#include <stdio.h>\r
3#include <stdarg.h>\r
4#include <stdlib.h>\r
5#include <string.h>\r
6\r
7#include "config.h"\r
8\r
9// Disa.c\r
10#include "Disa/Disa.h"\r
11\r
12// Ea.cpp\r
13extern int g_jmp_cycle_table[];\r
14extern int g_jsr_cycle_table[];\r
15extern int g_lea_cycle_table[];\r
16extern int g_pea_cycle_table[];\r
17extern int g_movem_cycle_table[];\r
18int Ea_add_ns(int *tab, int ea); // add nonstandard EA cycles\r
b637c56a 19int EaCalc(int a,int mask,int ea,int size,int top=0,int sign_extend=1); // 6\r
20int EaRead(int a,int v,int ea,int size,int mask,int top=0,int sign_extend=1); // 7\r
85a36a57 21int EaCalcRead(int r_ea,int r,int ea,int size,int mask,int sign_extend=1); // 6\r
22int EaCalcReadNoSE(int r_ea,int r,int ea,int size,int mask);\r
cc68a136 23int EaCanRead(int ea,int size);\r
b637c56a 24int EaWrite(int a,int v,int ea,int size,int mask,int top=0,int sign_extend_ea=1);\r
cc68a136 25int EaCanWrite(int ea);\r
26int EaAn(int ea);\r
27\r
28// Main.cpp\r
cfb3dfa0 29extern int *CyJump; // Jump table\r
30extern int ms; // If non-zero, output in Microsoft ARMASM format\r
cc68a136 31extern char *Narm[4]; // Normal ARM Extensions for operand sizes 0,1,2\r
32extern char *Sarm[4]; // Sign-extend ARM Extensions for operand sizes 0,1,2\r
cfb3dfa0 33extern int Cycles; // Current cycles for opcode\r
34extern int pc_dirty; // something changed PC during processing\r
ee5e024c 35extern int arm_op_count; // for stats\r
cc68a136 36void ot(const char *format, ...);\r
37void ltorg();\r
cfb3dfa0 38int MemHandler(int type,int size,int addrreg=0);\r
39void FlushPC(void);\r
cc68a136 40\r
41// OpAny.cpp\r
85a36a57 42extern int g_op;\r
cc68a136 43int OpGetFlags(int subtract,int xbit,int sprecialz=0);\r
44void OpUse(int op,int use);\r
ee5e024c 45void OpStart(int op,int sea=0,int tea=0,int op_changes_cycles=0,int supervisor_check=0);\r
46void OpEnd(int sea=0,int tea=0,int op_changes_cycles=0,int check_interrupt=0);\r
85a36a57 47int OpBase(int op,int size,int sepa=0);\r
cc68a136 48void OpAny(int op);\r
49\r
50//----------------------\r
51// OpArith.cpp\r
52int OpArith(int op);\r
53int OpLea(int op);\r
54int OpAddq(int op);\r
55int OpArithReg(int op);\r
56int OpMul(int op);\r
57int OpAbcd(int op);\r
58int OpNbcd(int op);\r
59int OpAritha(int op);\r
60int OpAddx(int op);\r
61int OpCmpEor(int op);\r
62int OpCmpm(int op);\r
63int OpChk(int op);\r
64int GetXBit(int subtract);\r
65\r
66// OpBranch.cpp\r
67void OpPush32();\r
68void OpPushSr(int high);\r
69int OpTrap(int op);\r
70int OpLink(int op);\r
71int OpUnlk(int op);\r
72int Op4E70(int op);\r
73int OpJsr(int op);\r
74int OpBranch(int op);\r
75int OpDbra(int op);\r
76\r
77// OpLogic.cpp\r
78int OpBtstReg(int op);\r
79int OpBtstImm(int op);\r
80int OpNeg(int op);\r
81int OpSwap(int op);\r
82int OpTst(int op);\r
83int OpExt(int op);\r
84int OpSet(int op);\r
85int OpAsr(int op);\r
86int OpAsrEa(int op);\r
c008977e 87int OpTas(int op, int gen_special=0);\r
cc68a136 88\r
89// OpMove.cpp\r
90int OpMove(int op);\r
91int OpLea(int op);\r
92void OpFlagsToReg(int high);\r
93void OpRegToFlags(int high);\r
94int OpMoveSr(int op);\r
95int OpArithSr(int op);\r
96int OpPea(int op);\r
97int OpMovem(int op);\r
98int OpMoveq(int op);\r
99int OpMoveUsp(int op);\r
100int OpExg(int op);\r
85a36a57 101int OpMovep(int op);\r
cc68a136 102int OpStopReset(int op);\r
85a36a57 103void SuperEnd(void);\r
104void SuperChange(int op,int load_srh=1);\r
105\r