📄 armdefs.h
字号:
//AJ2D--------------------------------------------------------------------------//teawater change for return if running tb dirty 2005.07.09--------------------- void *tb_now;//AJ2D--------------------------------------------------------------------------//teawater add for record reg value to ./reg.txt 2005.07.10--------------------- FILE *tea_reg_fd;//AJ2D--------------------------------------------------------------------------/*added by ksh in 2005-10-1*/ cpu_config_t *cpu; mem_config_t *mem_bank;//teawater add DBCT_TEST_SPEED 2005.10.04---------------------------------------#ifdef DBCT_TEST_SPEED uint64_t instr_count;#endif //DBCT_TEST_SPEED//AJ2D--------------------------------------------------------------------------};#define ResetPin NresetSig#define FIQPin NfiqSig#define IRQPin NirqSig#define AbortPin abortSig#define TransPin NtransSig#define BigEndPin bigendSig#define Prog32Pin prog32Sig#define Data32Pin data32Sig#define LateAbortPin lateabtSig/***************************************************************************\* Types of ARM we know about *\***************************************************************************//* The bitflags */#define ARM_Fix26_Prop 0x01#define ARM_Nexec_Prop 0x02#define ARM_Debug_Prop 0x10#define ARM_Isync_Prop ARM_Debug_Prop#define ARM_Lock_Prop 0x20//chy 2003-08-11 #define ARM_v4_Prop 0x40#define ARM_v5_Prop 0x80#define ARM_v5e_Prop 0x100#define ARM_XScale_Prop 0x200#define ARM_ep9312_Prop 0x400#define ARM_iWMMXt_Prop 0x800//chy 2005-09-19#define ARM_PXA27X_Prop 0x1000/* ARM2 family */#define ARM2 (ARM_Fix26_Prop)#define ARM2as ARM2#define ARM61 ARM2#define ARM3 ARM2#ifdef ARM60 /* previous definition in armopts.h */#undef ARM60#endif/* ARM6 family */#define ARM6 (ARM_Lock_Prop)#define ARM60 ARM6#define ARM600 ARM6#define ARM610 ARM6#define ARM620 ARM6/***************************************************************************\* Macros to extract instruction fields *\***************************************************************************/#define BIT(n) ( (ARMword)(instr>>(n))&1) /* bit n of instruction */#define BITS(m,n) ( (ARMword)(instr<<(31-(n))) >> ((31-(n))+(m)) ) /* bits m to n of instr */#define TOPBITS(n) (instr >> (n)) /* bits 31 to n of instr *//***************************************************************************\* The hardware vector addresses *\***************************************************************************/#define ARMResetV 0L#define ARMUndefinedInstrV 4L#define ARMSWIV 8L#define ARMPrefetchAbortV 12L#define ARMDataAbortV 16L#define ARMAddrExceptnV 20L#define ARMIRQV 24L#define ARMFIQV 28L#define ARMErrorV 32L /* This is an offset, not an address ! */#define ARMul_ResetV ARMResetV#define ARMul_UndefinedInstrV ARMUndefinedInstrV#define ARMul_SWIV ARMSWIV#define ARMul_PrefetchAbortV ARMPrefetchAbortV#define ARMul_DataAbortV ARMDataAbortV#define ARMul_AddrExceptnV ARMAddrExceptnV#define ARMul_IRQV ARMIRQV#define ARMul_FIQV ARMFIQV/***************************************************************************\* Mode and Bank Constants *\***************************************************************************/#define USER26MODE 0L#define FIQ26MODE 1L#define IRQ26MODE 2L#define SVC26MODE 3L#define USER32MODE 16L#define FIQ32MODE 17L#define IRQ32MODE 18L#define SVC32MODE 19L#define ABORT32MODE 23L#define UNDEF32MODE 27L//chy 2006-02-15 add system32 mode#define SYSTEM32MODE 31L#define ARM32BITMODE (state->Mode > 3)#define ARM26BITMODE (state->Mode <= 3)#define ARMMODE (state->Mode)#define ARMul_MODEBITS 0x1fL#define ARMul_MODE32BIT ARM32BITMODE#define ARMul_MODE26BIT ARM26BITMODE#define USERBANK 0#define FIQBANK 1#define IRQBANK 2#define SVCBANK 3#define ABORTBANK 4#define UNDEFBANK 5#define DUMMYBANK 6#define SYSTEMBANK USERBANK#define BANK_CAN_ACCESS_SPSR(bank) \ ((bank) != USERBANK && (bank) != SYSTEMBANK && (bank) != DUMMYBANK)/***************************************************************************\* Definitons of things in the emulator *\***************************************************************************/extern void ARMul_EmulateInit (void);extern ARMul_State *ARMul_NewState (void);extern void ARMul_Reset (ARMul_State * state);extern ARMword ARMul_DoProg (ARMul_State * state);extern ARMword ARMul_DoInstr (ARMul_State * state);/***************************************************************************\* Definitons of things for event handling *\***************************************************************************/extern void ARMul_ScheduleEvent (ARMul_State * state, unsigned long delay, unsigned (*func) ());extern void ARMul_EnvokeEvent (ARMul_State * state);extern unsigned long ARMul_Time (ARMul_State * state);/***************************************************************************\* Useful support routines *\***************************************************************************/extern ARMword ARMul_GetReg (ARMul_State * state, unsigned mode, unsigned reg);extern void ARMul_SetReg (ARMul_State * state, unsigned mode, unsigned reg, ARMword value);extern ARMword ARMul_GetPC (ARMul_State * state);extern ARMword ARMul_GetNextPC (ARMul_State * state);extern void ARMul_SetPC (ARMul_State * state, ARMword value);extern ARMword ARMul_GetR15 (ARMul_State * state);extern void ARMul_SetR15 (ARMul_State * state, ARMword value);extern ARMword ARMul_GetCPSR (ARMul_State * state);extern void ARMul_SetCPSR (ARMul_State * state, ARMword value);extern ARMword ARMul_GetSPSR (ARMul_State * state, ARMword mode);extern void ARMul_SetSPSR (ARMul_State * state, ARMword mode, ARMword value);/***************************************************************************\* Definitons of things to handle aborts *\***************************************************************************/extern void ARMul_Abort (ARMul_State * state, ARMword address);#define ARMul_ABORTWORD 0xefffffff /* SWI -1 */#define ARMul_PREFETCHABORT(address) if (state->AbortAddr == 1) \ state->AbortAddr = (address & ~3L)#define ARMul_DATAABORT(address) state->abortSig = HIGH ; \ state->Aborted = ARMul_DataAbortV ;#define ARMul_CLEARABORT state->abortSig = LOW/***************************************************************************\* Definitons of things in the memory interface *\***************************************************************************/extern unsigned ARMul_MemoryInit (ARMul_State * state, unsigned long initmemsize);extern void ARMul_MemoryExit (ARMul_State * state);extern ARMword ARMul_LoadInstrS (ARMul_State * state, ARMword address, ARMword isize);extern ARMword ARMul_LoadInstrN (ARMul_State * state, ARMword address, ARMword isize);extern ARMword ARMul_ReLoadInstr (ARMul_State * state, ARMword address, ARMword isize);extern ARMword ARMul_LoadWordS (ARMul_State * state, ARMword address);extern ARMword ARMul_LoadWordN (ARMul_State * state, ARMword address);extern ARMword ARMul_LoadHalfWord (ARMul_State * state, ARMword address);extern ARMword ARMul_LoadByte (ARMul_State * state, ARMword address);extern void ARMul_StoreWordS (ARMul_State * state, ARMword address, ARMword data);extern void ARMul_StoreWordN (ARMul_State * state, ARMword address, ARMword data);extern void ARMul_StoreHalfWord (ARMul_State * state, ARMword address, ARMword data);extern void ARMul_StoreByte (ARMul_State * state, ARMword address, ARMword data);extern ARMword ARMul_SwapWord (ARMul_State * state, ARMword address, ARMword data);extern ARMword ARMul_SwapByte (ARMul_State * state, ARMword address, ARMword data);extern void ARMul_Icycles (ARMul_State * state, unsigned number, ARMword address);extern void ARMul_Ccycles (ARMul_State * state, unsigned number, ARMword address);extern ARMword ARMul_ReadWord (ARMul_State * state, ARMword address);extern ARMword ARMul_ReadByte (ARMul_State * state, ARMword address);extern void ARMul_WriteWord (ARMul_State * state, ARMword address, ARMword data);extern void ARMul_WriteByte (ARMul_State * state, ARMword address, ARMword data);extern ARMword ARMul_MemAccess (ARMul_State * state, ARMword, ARMword, ARMword, ARMword, ARMword, ARMword, ARMword, ARMword, ARMword, ARMword);/***************************************************************************\* Definitons of things in the co-processor interface *\***************************************************************************/#define ARMul_FIRST 0#define ARMul_TRANSFER 1#define ARMul_BUSY 2#define ARMul_DATA 3#define ARMul_INTERRUPT 4#define ARMul_DONE 0#define ARMul_CANT 1#define ARMul_INC 3#define ARMul_CP13_R0_FIQ 0x1#define ARMul_CP13_R0_IRQ 0x2#define ARMul_CP13_R8_PMUS 0x1#define ARMul_CP14_R0_ENABLE 0x0001#define ARMul_CP14_R0_CLKRST 0x0004#define ARMul_CP14_R0_CCD 0x0008#define ARMul_CP14_R0_INTEN0 0x0010#define ARMul_CP14_R0_INTEN1 0x0020#define ARMul_CP14_R0_INTEN2 0x0040#define ARMul_CP14_R0_FLAG0 0x0100#define ARMul_CP14_R0_FLAG1 0x0200#define ARMul_CP14_R0_FLAG2 0x0400#define ARMul_CP14_R10_MOE_IB 0x0004#define ARMul_CP14_R10_MOE_DB 0x0008#define ARMul_CP14_R10_MOE_BT 0x000c#define ARMul_CP15_R1_ENDIAN 0x0080#define ARMul_CP15_R1_ALIGN 0x0002#define ARMul_CP15_R5_X 0x0400#define ARMul_CP15_R5_ST_ALIGN 0x0001#define ARMul_CP15_R5_IMPRE 0x0406#define ARMul_CP15_R5_MMU_EXCPT 0x0400#define ARMul_CP15_DBCON_M 0x0100#define ARMul_CP15_DBCON_E1 0x000c#define ARMul_CP15_DBCON_E0 0x0003extern unsigned ARMul_CoProInit (ARMul_State * state);extern void ARMul_CoProExit (ARMul_State * state);extern void ARMul_CoProAttach (ARMul_State * state, unsigned number, ARMul_CPInits * init, ARMul_CPExits * exit, ARMul_LDCs * ldc, ARMul_STCs * stc, ARMul_MRCs * mrc, ARMul_MCRs * mcr, ARMul_CDPs * cdp, ARMul_CPReads * read, ARMul_CPWrites * write);extern void ARMul_CoProDetach (ARMul_State * state, unsigned number);/***************************************************************************\* Definitons of things in the host environment *\***************************************************************************/extern unsigned ARMul_OSInit (ARMul_State * state);extern void ARMul_OSExit (ARMul_State * state);extern unsigned ARMul_OSHandleSWI (ARMul_State * state, ARMword number);extern ARMword ARMul_OSLastErrorP (ARMul_State * state);extern ARMword ARMul_Debug (ARMul_State * state, ARMword pc, ARMword instr);extern unsigned ARMul_OSException (ARMul_State * state, ARMword vector, ARMword pc);extern int rdi_log;/***************************************************************************\* Host-dependent stuff *\***************************************************************************/#ifdef macintoshpascal void SpinCursor (short increment); /* copied from CursorCtl.h */# define HOURGLASS SpinCursor( 1 )# define HOURGLASS_RATE 1023 /* 2^n - 1 */#endif//teawater add for arm2x86 2005.02.14-------------------------------------------/*ywc 2005-03-31*//*#include "arm2x86.h"#include "arm2x86_dp.h"#include "arm2x86_movl.h"#include "arm2x86_psr.h"#include "arm2x86_shift.h"#include "arm2x86_mem.h"#include "arm2x86_mul.h"#include "arm2x86_test.h"#include "arm2x86_other.h"#include "list.h"#include "tb.h"*/#define EQ 0#define NE 1#define CS 2#define CC 3#define MI 4#define PL 5#define VS 6#define VC 7#define HI 8#define LS 9#define GE 10#define LT 11#define GT 12#define LE 13#define AL 14#define NV 15#ifndef NFLAG#define NFLAG state->NFlag#endif //NFLAG#ifndef ZFLAG#define ZFLAG state->ZFlag#endif //ZFLAG#ifndef CFLAG#define CFLAG state->CFlag#endif //CFLAG#ifndef VFLAG#define VFLAG state->VFlag#endif //VFLAG#ifndef IFLAG#define IFLAG (state->IFFlags >> 1)#endif //IFLAG#ifndef FFLAG#define FFLAG (state->IFFlags & 1)#endif //FFLAG#ifndef IFFLAGS#define IFFLAGS state->IFFlags#endif //VFLAG#define FLAG_MASK 0xf0000000#define NBIT_SHIFT 31#define ZBIT_SHIFT 30#define CBIT_SHIFT 29#define VBIT_SHIFT 28//teawater change for local tb branch directly jump 2005.10.18------------------#include "dbct/list.h"#include "dbct/arm2x86.h"#include "dbct/arm2x86_dp.h"#include "dbct/arm2x86_movl.h"#include "dbct/arm2x86_psr.h"#include "dbct/arm2x86_shift.h"#include "dbct/arm2x86_mem.h"#include "dbct/arm2x86_mul.h"#include "dbct/arm2x86_test.h"#include "dbct/arm2x86_other.h"#include "dbct/arm2x86_coproc.h"#include "dbct/tb.h"//AJ2D--------------------------------------------------------------------------//AJ2D--------------------------------------------------------------------------#endif /* _ARMDEFS_H_ */extern void ARMul_UndefInstr (ARMul_State *, ARMword);extern void ARMul_FixCPSR (ARMul_State *, ARMword, ARMword);extern void ARMul_FixSPSR (ARMul_State *, ARMword, ARMword);extern void ARMul_ConsolePrint (ARMul_State *, const char *, ...);extern void ARMul_SelectProcessor (ARMul_State *, unsigned);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -