⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 armdefs.h

📁 skyeye的开源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
the base register was unchanged for all other instructions. (oldest)Base Restored Abort Model: If a Data Abort occurs in an instruction whichspecifies base register writeback, the value in the base register isunchanged. (strongarm, xscale)Base Updated Abort Model: If a Data Abort occurs in an instruction whichspecifies base register writeback, the base register writeback still occurs.(arm720T)read PART Bchap2 The System Control Coprocessor  CP152.4 Register1:control registerL(bit 6): in some ARMv3 and earlier implementations, the abort model of theprocessor could be configured:0=early Abort Model Selected(now obsolete)1=Late Abort Model selceted(same as Base Updated Abort Model)on later processors, this bit reads as 1 and ignores writes.-------------------------------------------------------------So, if lateabtSig=1, then it means Late Abort Model(Base Updated Abort Model)    if lateabtSig=0, then it means Base Restored Abort Model*/	unsigned lateabtSig;	ARMword Vector;		/* synthesize aborts in cycle modes */	ARMword Aborted;	/* sticky flag for aborts */	ARMword Reseted;	/* sticky flag for Reset */	ARMword Inted, LastInted;	/* sticky flags for interrupts */	ARMword Base;		/* extra hand for base writeback */	ARMword AbortAddr;	/* to keep track of Prefetch aborts */	const struct Dbg_HostosInterface *hostif;	int verbose;		/* non-zero means print various messages like the banner */	mmu_state_t mmu;	mem_state_t mem;	/*remove io_state to skyeye_mach_*.c files */	//io_state_t io;	/* point to a interrupt pending register. now for skyeye-ne2k.c	 * later should move somewhere. e.g machine_config_t*/	//chy: 2003-08-11, for different arm core type	unsigned is_v4;		/* Are we emulating a v4 architecture (or higher) ?  */	unsigned is_v5;		/* Are we emulating a v5 architecture ?  */	unsigned is_v5e;	/* Are we emulating a v5e architecture ?  */	unsigned is_v6;		/* Are we emulating a v6 architecture ?  */	unsigned is_XScale;	/* Are we emulating an XScale architecture ?  */	unsigned is_iWMMXt;	/* Are we emulating an iWMMXt co-processor ?  */	unsigned is_ep9312;	/* Are we emulating a Cirrus Maverick co-processor ?  */	//chy 2005-09-19	unsigned is_pxa27x;	/* Are we emulating a Intel PXA27x co-processor ?  */	//chy: seems only used in xscale's CP14	unsigned int LastTime;	/* Value of last call to ARMul_Time() */	ARMword CP14R0_CCD;	/* used to count 64 clock cycles with CP14 R0 bit 3 set *///added by ksh:for handle different machs io 2004-3-5	ARMul_io mach_io;/*added by ksh,2004-11-26,some energy profiling*/	ARMul_Energy energy;//teawater add for next_dis 2004.10.27-----------------------	int disassemble;//AJ2D------------------------------------------//teawater add for arm2x86 2005.02.15-------------------------------------------	uint32_t trap;	uint32_t tea_break_addr;	uint32_t tea_break_ok;	int tea_pc;//AJ2D--------------------------------------------------------------------------//teawater add for arm2x86 2005.07.03-------------------------------------------	/*	 * 2007-01-24 removed the term-io functions by Anthony Lee,	 * moved to "device/uart/skyeye_uart_stdio.c".	 *///AJ2D--------------------------------------------------------------------------//teawater add for arm2x86 2005.07.05-------------------------------------------	//arm_arm A2-18	int abort_model;	//0 Base Restored Abort Model, 1 the Early Abort Model, 2 Base Updated Abort Model //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;/* added LPC remap function */	int vector_remap_flag;	uint32_t vector_remap_addr;	uint32_t vector_remap_size;//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 int delay,				 unsigned (*func) ());extern void ARMul_EnvokeEvent (ARMul_State * state);extern unsigned int 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);#ifdef MODET#define ARMul_ABORTWORD (state->TFlag ? 0xefffdfff : 0xefffffff)	/* SWI -1 */#define ARMul_PREFETCHABORT(address) if (state->AbortAddr == 1) \                                        state->AbortAddr = (address & (state->TFlag ? ~1L : ~3L))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -