📄 armdefs.h
字号:
#define SVC32MODE 19L#define ABORT32MODE 23L#define UNDEF32MODE 27L#define SYSTEMMODE 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 ARMword ARMul_SafeReadByte (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 void ARMul_SafeWriteByte (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);extern void XScale_check_memacc (ARMul_State * state, ARMword * address, int store);extern void XScale_set_fsr_far (ARMul_State * state, ARMword fsr, ARMword far);extern int XScale_debug_moe (ARMul_State * state, int moe);/***************************************************************************\* 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 */#endifextern 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 + -