fix compatibility with ancient gas
[cyclone68000.git] / app.h
CommitLineData
6003a768 1\r
619b1824 2// This file is part of the Cyclone 68000 Emulator\r
3\r
d9d77995 4// Copyright (c) 2004,2011 FinalDave (emudave (at) gmail.com)\r
5// Copyright (c) 2005-2011 GraÅžvydas "notaz" Ignotas (notasas (at) gmail.com)\r
c41b9b97 6\r
619b1824 7// This code is licensed under the GNU General Public License version 2.0 and the MAME License.\r
8// You can choose the license that has the most advantages for you.\r
9\r
10// SVN repository can be found at http://code.google.com/p/cyclone68000/\r
11\r
d9d77995 12\r
6003a768 13#include <stdio.h>\r
14#include <stdarg.h>\r
15#include <stdlib.h>\r
16#include <string.h>\r
17\r
d9d77995 18#ifndef CONFIG_FILE\r
19#define CONFIG_FILE "config.h"\r
20#endif\r
21#include CONFIG_FILE\r
22\r
6003a768 23// Disa.c\r
d9d77995 24#include "Disa/Disa.h"\r
6003a768 25\r
26// Ea.cpp\r
65044ba9 27enum EaRWType {\r
28 earwt_sign_extend = 1,\r
29 earwt_zero_extend,\r
30 earwt_shifted_up,\r
31 earwt_msb_dont_care,\r
32};\r
33\r
d9d77995 34extern int earead_check_addrerr;\r
35extern int eawrite_check_addrerr;\r
36extern int g_jmp_cycle_table[];\r
37extern int g_jsr_cycle_table[];\r
38extern int g_lea_cycle_table[];\r
39extern int g_pea_cycle_table[];\r
40extern int g_movem_cycle_table[];\r
41int Ea_add_ns(int *tab, int ea); // add nonstandard EA cycles\r
65044ba9 42int EaCalc(int a,int mask,int ea,int size,EaRWType type=earwt_sign_extend); // 6\r
43int EaRead(int a,int v,int ea,int size,int mask,EaRWType type=earwt_sign_extend,int set_nz=0); // 8\r
44int EaCalcRead(int r_ea,int r,int ea,int size,int mask,EaRWType type=earwt_sign_extend,int set_nz=0); // 7\r
6003a768 45int EaCanRead(int ea,int size);\r
65044ba9 46int EaWrite(int a,int v,int ea,int size,int mask,EaRWType type=earwt_sign_extend);\r
6003a768 47int EaCanWrite(int ea);\r
d9d77995 48int EaAn(int ea);\r
6003a768 49\r
50// Main.cpp\r
d9d77995 51extern int *CyJump; // Jump table\r
52extern int ms; // If non-zero, output in Microsoft ARMASM format\r
53extern const char * const Narm[4]; // Normal ARM Extensions for operand sizes 0,1,2\r
54extern const char * const Sarm[4]; // Sign-extend ARM Extensions for operand sizes 0,1,2\r
55extern int Cycles; // Current cycles for opcode\r
56extern int pc_dirty; // something changed PC during processing\r
57extern int arm_op_count; // for stats\r
19a2e095 58void ot(const char *format, ...)\r
59#ifdef __GNUC__\r
60 __attribute__((format(printf, 1, 2)));\r
61#endif\r
62 ;\r
6003a768 63void ltorg();\r
d9d77995 64int MemHandler(int type,int size,int addrreg=0,int need_addrerr_check=1);\r
355815eb 65void FlushPC(int force=0);\r
6003a768 66\r
67// OpAny.cpp\r
d9d77995 68extern int g_op;\r
69extern int opend_op_changes_cycles, opend_check_interrupt, opend_check_trace;\r
70int OpGetFlags(int subtract,int xbit,int sprecialz=0);\r
3504ce94 71void OpGetFlagsNZ(int rd);\r
19881760 72void SignExtend(int rd, int rs, int size);\r
73void ZeroExtend(int rd, int rs, int size);\r
6003a768 74void OpUse(int op,int use);\r
d9d77995 75void OpStart(int op,int sea=0,int tea=0,int op_changes_cycles=0,int supervisor_check=0);\r
76void OpEnd(int sea=0,int tea=0);\r
77int OpBase(int op,int size,int sepa=0);\r
6003a768 78void OpAny(int op);\r
79\r
80//----------------------\r
81// OpArith.cpp\r
82int OpArith(int op);\r
83int OpLea(int op);\r
84int OpAddq(int op);\r
85int OpArithReg(int op);\r
86int OpMul(int op);\r
87int OpAbcd(int op);\r
d9d77995 88int OpNbcd(int op);\r
6003a768 89int OpAritha(int op);\r
90int OpAddx(int op);\r
91int OpCmpEor(int op);\r
d9d77995 92int OpCmpm(int op);\r
93int OpChk(int op);\r
94int GetXBit(int subtract);\r
6003a768 95\r
96// OpBranch.cpp\r
97void OpPush32();\r
98void OpPushSr(int high);\r
99int OpTrap(int op);\r
100int OpLink(int op);\r
101int OpUnlk(int op);\r
102int Op4E70(int op);\r
103int OpJsr(int op);\r
104int OpBranch(int op);\r
105int OpDbra(int op);\r
106\r
107// OpLogic.cpp\r
108int OpBtstReg(int op);\r
109int OpBtstImm(int op);\r
110int OpNeg(int op);\r
111int OpSwap(int op);\r
112int OpTst(int op);\r
113int OpExt(int op);\r
114int OpSet(int op);\r
115int OpAsr(int op);\r
116int OpAsrEa(int op);\r
d9d77995 117int OpTas(int op, int gen_special=0);\r
cfe17eee 118const char *TestCond(int m68k_cc, int invert=0);\r
6003a768 119\r
120// OpMove.cpp\r
121int OpMove(int op);\r
122int OpLea(int op);\r
123void OpFlagsToReg(int high);\r
d9d77995 124void OpRegToFlags(int high,int srh_reg=0);\r
6003a768 125int OpMoveSr(int op);\r
126int OpArithSr(int op);\r
127int OpPea(int op);\r
128int OpMovem(int op);\r
129int OpMoveq(int op);\r
130int OpMoveUsp(int op);\r
131int OpExg(int op);\r
d9d77995 132int OpMovep(int op);\r
133int OpStopReset(int op);\r
134void SuperEnd(void);\r
135void SuperChange(int op,int srh_reg=-1);\r
136\r