X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=cpu%2FCyclone%2Fapp.h;h=5e468c7fbbfcbffbc297b7ee657611e607acbcb3;hb=e743be2070a13d14cae39a55b815b62b0edb6776;hp=1796e9c8cba62d3e6a370f6c5a82a26b4ad4379d;hpb=b637c56aadc5b854ca28a8a111cf07324bc0e2ad;p=picodrive.git diff --git a/cpu/Cyclone/app.h b/cpu/Cyclone/app.h index 1796e9c..5e468c7 100644 --- a/cpu/Cyclone/app.h +++ b/cpu/Cyclone/app.h @@ -4,12 +4,17 @@ #include #include -#include "config.h" +#ifndef CONFIG_FILE +#define CONFIG_FILE "config.h" +#endif +#include CONFIG_FILE // Disa.c #include "Disa/Disa.h" // Ea.cpp +extern int earead_check_addrerr; +extern int eawrite_check_addrerr; extern int g_jmp_cycle_table[]; extern int g_jsr_cycle_table[]; extern int g_lea_cycle_table[]; @@ -18,6 +23,8 @@ extern int g_movem_cycle_table[]; int Ea_add_ns(int *tab, int ea); // add nonstandard EA cycles int EaCalc(int a,int mask,int ea,int size,int top=0,int sign_extend=1); // 6 int EaRead(int a,int v,int ea,int size,int mask,int top=0,int sign_extend=1); // 7 +int EaCalcRead(int r_ea,int r,int ea,int size,int mask,int sign_extend=1); // 6 +int EaCalcReadNoSE(int r_ea,int r,int ea,int size,int mask); int EaCanRead(int ea,int size); int EaWrite(int a,int v,int ea,int size,int mask,int top=0,int sign_extend_ea=1); int EaCanWrite(int ea); @@ -26,22 +33,24 @@ int EaAn(int ea); // Main.cpp extern int *CyJump; // Jump table extern int ms; // If non-zero, output in Microsoft ARMASM format -extern char *Narm[4]; // Normal ARM Extensions for operand sizes 0,1,2 -extern char *Sarm[4]; // Sign-extend ARM Extensions for operand sizes 0,1,2 +extern const char * const Narm[4]; // Normal ARM Extensions for operand sizes 0,1,2 +extern const char * const Sarm[4]; // Sign-extend ARM Extensions for operand sizes 0,1,2 extern int Cycles; // Current cycles for opcode extern int pc_dirty; // something changed PC during processing +extern int arm_op_count; // for stats void ot(const char *format, ...); void ltorg(); -void CheckInterrupt(int op); -int MemHandler(int type,int size,int addrreg=0); +int MemHandler(int type,int size,int addrreg=0,int need_addrerr_check=1); void FlushPC(void); // OpAny.cpp +extern int g_op; +extern int opend_op_changes_cycles, opend_check_interrupt, opend_check_trace; int OpGetFlags(int subtract,int xbit,int sprecialz=0); void OpUse(int op,int use); -void OpStart(int op,int sea=0,int tea=0); +void OpStart(int op,int sea=0,int tea=0,int op_changes_cycles=0,int supervisor_check=0); void OpEnd(int sea=0,int tea=0); -int OpBase(int op,int sepa=0); +int OpBase(int op,int size,int sepa=0); void OpAny(int op); //---------------------- @@ -87,7 +96,7 @@ int OpTas(int op, int gen_special=0); int OpMove(int op); int OpLea(int op); void OpFlagsToReg(int high); -void OpRegToFlags(int high); +void OpRegToFlags(int high,int srh_reg=0); int OpMoveSr(int op); int OpArithSr(int op); int OpPea(int op); @@ -95,8 +104,8 @@ int OpMovem(int op); int OpMoveq(int op); int OpMoveUsp(int op); int OpExg(int op); -int OpMovep(int op); // notaz +int OpMovep(int op); int OpStopReset(int op); -void SuperCheck(int op); -void SuperEnd(int op); -void SuperChange(int op); +void SuperEnd(void); +void SuperChange(int op,int srh_reg=-1); +