#include "Disa/Disa.h"\r
\r
// Ea.cpp\r
+enum EaRWType {\r
+ earwt_sign_extend = 1,\r
+ earwt_zero_extend,\r
+ earwt_shifted_up,\r
+ earwt_msb_dont_care,\r
+};\r
+\r
extern int earead_check_addrerr;\r
extern int eawrite_check_addrerr;\r
extern int g_jmp_cycle_table[];\r
extern int g_pea_cycle_table[];\r
extern int g_movem_cycle_table[];\r
int Ea_add_ns(int *tab, int ea); // add nonstandard EA cycles\r
-int EaCalc(int a,int mask,int ea,int size,int top=0,int sign_extend=1); // 6\r
-int EaRead(int a,int v,int ea,int size,int mask,int top=0,int sign_extend=1,int set_nz=0); // 8\r
-int EaCalcRead(int r_ea,int r,int ea,int size,int mask,int sign_extend=1,int set_nz=0); // 7\r
-int EaCalcReadNoSE(int r_ea,int r,int ea,int size,int mask);\r
+int EaCalc(int a,int mask,int ea,int size,EaRWType type=earwt_sign_extend); // 6\r
+int EaRead(int a,int v,int ea,int size,int mask,EaRWType type=earwt_sign_extend,int set_nz=0); // 8\r
+int EaCalcRead(int r_ea,int r,int ea,int size,int mask,EaRWType type=earwt_sign_extend,int set_nz=0); // 7\r
int EaCanRead(int ea,int size);\r
-int EaWrite(int a,int v,int ea,int size,int mask,int top=0,int sign_extend_ea=1);\r
+int EaWrite(int a,int v,int ea,int size,int mask,EaRWType type=earwt_sign_extend);\r
int EaCanWrite(int ea);\r
int EaAn(int ea);\r
\r
extern int Cycles; // Current cycles for opcode\r
extern int pc_dirty; // something changed PC during processing\r
extern int arm_op_count; // for stats\r
-void ot(const char *format, ...);\r
+void ot(const char *format, ...)\r
+#ifdef __GNUC__\r
+ __attribute__((format(printf, 1, 2)));\r
+#endif\r
+ ;\r
void ltorg();\r
int MemHandler(int type,int size,int addrreg=0,int need_addrerr_check=1);\r
-void FlushPC(void);\r
+void FlushPC(int force=0);\r
\r
// OpAny.cpp\r
extern int g_op;\r
extern int opend_op_changes_cycles, opend_check_interrupt, opend_check_trace;\r
int OpGetFlags(int subtract,int xbit,int sprecialz=0);\r
void OpGetFlagsNZ(int rd);\r
+void SignExtend(int rd, int rs, int size);\r
+void ZeroExtend(int rd, int rs, int size);\r
void OpUse(int op,int use);\r
void OpStart(int op,int sea=0,int tea=0,int op_changes_cycles=0,int supervisor_check=0);\r
void OpEnd(int sea=0,int tea=0);\r