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

📄 mipsregs.h

📁 uboot详细解读可用启动引导LINUX2.6内核
💻 H
📖 第 1 页 / 共 3 页
字号:
/* Bits specific to the VR41xx.  */#define VR41_CONF_CS		(_ULCAST_(1) << 12)#define VR41_CONF_P4K		(_ULCAST_(1) << 13)#define VR41_CONF_BP		(_ULCAST_(1) << 16)#define VR41_CONF_M16		(_ULCAST_(1) << 20)#define VR41_CONF_AD		(_ULCAST_(1) << 23)/* Bits specific to the R30xx.  */#define R30XX_CONF_FDM		(_ULCAST_(1) << 19)#define R30XX_CONF_REV		(_ULCAST_(1) << 22)#define R30XX_CONF_AC		(_ULCAST_(1) << 23)#define R30XX_CONF_RF		(_ULCAST_(1) << 24)#define R30XX_CONF_HALT		(_ULCAST_(1) << 25)#define R30XX_CONF_FPINT	(_ULCAST_(7) << 26)#define R30XX_CONF_DBR		(_ULCAST_(1) << 29)#define R30XX_CONF_SB		(_ULCAST_(1) << 30)#define R30XX_CONF_LOCK		(_ULCAST_(1) << 31)/* Bits specific to the TX49.  */#define TX49_CONF_DC		(_ULCAST_(1) << 16)#define TX49_CONF_IC		(_ULCAST_(1) << 17)  /* conflict with CONF_SC */#define TX49_CONF_HALT		(_ULCAST_(1) << 18)#define TX49_CONF_CWFON		(_ULCAST_(1) << 27)/* Bits specific to the MIPS32/64 PRA.  */#define MIPS_CONF_MT		(_ULCAST_(7) <<  7)#define MIPS_CONF_AR		(_ULCAST_(7) << 10)#define MIPS_CONF_AT		(_ULCAST_(3) << 13)#define MIPS_CONF_M		(_ULCAST_(1) << 31)/* * Bits in the MIPS32/64 PRA coprocessor 0 config registers 1 and above. */#define MIPS_CONF1_FP		(_ULCAST_(1) <<  0)#define MIPS_CONF1_EP		(_ULCAST_(1) <<  1)#define MIPS_CONF1_CA		(_ULCAST_(1) <<  2)#define MIPS_CONF1_WR		(_ULCAST_(1) <<  3)#define MIPS_CONF1_PC		(_ULCAST_(1) <<  4)#define MIPS_CONF1_MD		(_ULCAST_(1) <<  5)#define MIPS_CONF1_C2		(_ULCAST_(1) <<  6)#define MIPS_CONF1_DA		(_ULCAST_(7) <<  7)#define MIPS_CONF1_DL		(_ULCAST_(7) << 10)#define MIPS_CONF1_DS		(_ULCAST_(7) << 13)#define MIPS_CONF1_IA		(_ULCAST_(7) << 16)#define MIPS_CONF1_IL		(_ULCAST_(7) << 19)#define MIPS_CONF1_IS		(_ULCAST_(7) << 22)#define MIPS_CONF1_TLBS		(_ULCAST_(63)<< 25)#define MIPS_CONF2_SA		(_ULCAST_(15)<<  0)#define MIPS_CONF2_SL		(_ULCAST_(15)<<  4)#define MIPS_CONF2_SS		(_ULCAST_(15)<<  8)#define MIPS_CONF2_SU		(_ULCAST_(15)<< 12)#define MIPS_CONF2_TA		(_ULCAST_(15)<< 16)#define MIPS_CONF2_TL		(_ULCAST_(15)<< 20)#define MIPS_CONF2_TS		(_ULCAST_(15)<< 24)#define MIPS_CONF2_TU		(_ULCAST_(7) << 28)#define MIPS_CONF3_TL		(_ULCAST_(1) <<  0)#define MIPS_CONF3_SM		(_ULCAST_(1) <<  1)#define MIPS_CONF3_MT		(_ULCAST_(1) <<  2)#define MIPS_CONF3_SP		(_ULCAST_(1) <<  4)#define MIPS_CONF3_VINT		(_ULCAST_(1) <<  5)#define MIPS_CONF3_VEIC		(_ULCAST_(1) <<  6)#define MIPS_CONF3_LPA		(_ULCAST_(1) <<  7)#define MIPS_CONF3_DSP		(_ULCAST_(1) << 10)#define MIPS_CONF3_ULRI		(_ULCAST_(1) << 13)#define MIPS_CONF7_WII		(_ULCAST_(1) << 31)#define MIPS_CONF7_RPS		(_ULCAST_(1) << 2)/* * Bits in the MIPS32/64 coprocessor 1 (FPU) revision register. */#define MIPS_FPIR_S		(_ULCAST_(1) << 16)#define MIPS_FPIR_D		(_ULCAST_(1) << 17)#define MIPS_FPIR_PS		(_ULCAST_(1) << 18)#define MIPS_FPIR_3D		(_ULCAST_(1) << 19)#define MIPS_FPIR_W		(_ULCAST_(1) << 20)#define MIPS_FPIR_L		(_ULCAST_(1) << 21)#define MIPS_FPIR_F64		(_ULCAST_(1) << 22)#ifndef __ASSEMBLY__/* * Functions to access the R10000 performance counters.  These are basically * mfc0 and mtc0 instructions from and to coprocessor register with a 5-bit * performance counter number encoded into bits 1 ... 5 of the instruction. * Only performance counters 0 to 1 actually exist, so for a non-R10000 aware * disassembler these will look like an access to sel 0 or 1. */#define read_r10k_perf_cntr(counter)				\({								\	unsigned int __res;					\	__asm__ __volatile__(					\	"mfpc\t%0, %1"						\	: "=r" (__res)						\	: "i" (counter));					\								\	__res;							\})#define write_r10k_perf_cntr(counter,val)			\do {								\	__asm__ __volatile__(					\	"mtpc\t%0, %1"						\	:							\	: "r" (val), "i" (counter));				\} while (0)#define read_r10k_perf_event(counter)				\({								\	unsigned int __res;					\	__asm__ __volatile__(					\	"mfps\t%0, %1"						\	: "=r" (__res)						\	: "i" (counter));					\								\	__res;							\})#define write_r10k_perf_cntl(counter,val)			\do {								\	__asm__ __volatile__(					\	"mtps\t%0, %1"						\	:							\	: "r" (val), "i" (counter));				\} while (0)/* * Macros to access the system control coprocessor */#define __read_32bit_c0_register(source, sel)				\({ int __res;								\	if (sel == 0)							\		__asm__ __volatile__(					\			"mfc0\t%0, " #source "\n\t"			\			: "=r" (__res));				\	else								\		__asm__ __volatile__(					\			".set\tmips32\n\t"				\			"mfc0\t%0, " #source ", " #sel "\n\t"		\			".set\tmips0\n\t"				\			: "=r" (__res));				\	__res;								\})#define __read_64bit_c0_register(source, sel)				\({ unsigned long long __res;						\	if (sizeof(unsigned long) == 4)					\		__res = __read_64bit_c0_split(source, sel);		\	else if (sel == 0)						\		__asm__ __volatile__(					\			".set\tmips3\n\t"				\			"dmfc0\t%0, " #source "\n\t"			\			".set\tmips0"					\			: "=r" (__res));				\	else								\		__asm__ __volatile__(					\			".set\tmips64\n\t"				\			"dmfc0\t%0, " #source ", " #sel "\n\t"		\			".set\tmips0"					\			: "=r" (__res));				\	__res;								\})#define __write_32bit_c0_register(register, sel, value)			\do {									\	if (sel == 0)							\		__asm__ __volatile__(					\			"mtc0\t%z0, " #register "\n\t"			\			: : "Jr" ((unsigned int)(value)));		\	else								\		__asm__ __volatile__(					\			".set\tmips32\n\t"				\			"mtc0\t%z0, " #register ", " #sel "\n\t"	\			".set\tmips0"					\			: : "Jr" ((unsigned int)(value)));		\} while (0)#define __write_64bit_c0_register(register, sel, value)			\do {									\	if (sizeof(unsigned long) == 4)					\		__write_64bit_c0_split(register, sel, value);		\	else if (sel == 0)						\		__asm__ __volatile__(					\			".set\tmips3\n\t"				\			"dmtc0\t%z0, " #register "\n\t"			\			".set\tmips0"					\			: : "Jr" (value));				\	else								\		__asm__ __volatile__(					\			".set\tmips64\n\t"				\			"dmtc0\t%z0, " #register ", " #sel "\n\t"	\			".set\tmips0"					\			: : "Jr" (value));				\} while (0)#define __read_ulong_c0_register(reg, sel)				\	((sizeof(unsigned long) == 4) ?					\	(unsigned long) __read_32bit_c0_register(reg, sel) :		\	(unsigned long) __read_64bit_c0_register(reg, sel))#define __write_ulong_c0_register(reg, sel, val)			\do {									\	if (sizeof(unsigned long) == 4)					\		__write_32bit_c0_register(reg, sel, val);		\	else								\		__write_64bit_c0_register(reg, sel, val);		\} while (0)/* * On RM7000/RM9000 these are uses to access cop0 set 1 registers */#define __read_32bit_c0_ctrl_register(source)				\({ int __res;								\	__asm__ __volatile__(						\		"cfc0\t%0, " #source "\n\t"				\		: "=r" (__res));					\	__res;								\})#define __write_32bit_c0_ctrl_register(register, value)			\do {									\	__asm__ __volatile__(						\		"ctc0\t%z0, " #register "\n\t"				\		: : "Jr" ((unsigned int)(value)));			\} while (0)/* * These versions are only needed for systems with more than 38 bits of * physical address space running the 32-bit kernel.  That's none atm :-) */#define __read_64bit_c0_split(source, sel)				\({									\	unsigned long long __val;					\	unsigned long __flags;						\									\	local_irq_save(__flags);					\	if (sel == 0)							\		__asm__ __volatile__(					\			".set\tmips64\n\t"				\			"dmfc0\t%M0, " #source "\n\t"			\			"dsll\t%L0, %M0, 32\n\t"			\			"dsrl\t%M0, %M0, 32\n\t"			\			"dsrl\t%L0, %L0, 32\n\t"			\			".set\tmips0"					\			: "=r" (__val));				\	else								\		__asm__ __volatile__(					\			".set\tmips64\n\t"				\			"dmfc0\t%M0, " #source ", " #sel "\n\t"		\			"dsll\t%L0, %M0, 32\n\t"			\			"dsrl\t%M0, %M0, 32\n\t"			\			"dsrl\t%L0, %L0, 32\n\t"			\			".set\tmips0"					\			: "=r" (__val));				\	local_irq_restore(__flags);					\									\	__val;								\})#define __write_64bit_c0_split(source, sel, val)			\do {									\	unsigned long __flags;						\									\	local_irq_save(__flags);					\	if (sel == 0)							\		__asm__ __volatile__(					\			".set\tmips64\n\t"				\			"dsll\t%L0, %L0, 32\n\t"			\			"dsrl\t%L0, %L0, 32\n\t"			\			"dsll\t%M0, %M0, 32\n\t"			\			"or\t%L0, %L0, %M0\n\t"				\			"dmtc0\t%L0, " #source "\n\t"			\			".set\tmips0"					\			: : "r" (val));					\	else								\		__asm__ __volatile__(					\			".set\tmips64\n\t"				\			"dsll\t%L0, %L0, 32\n\t"			\			"dsrl\t%L0, %L0, 32\n\t"			\			"dsll\t%M0, %M0, 32\n\t"			\			"or\t%L0, %L0, %M0\n\t"				\			"dmtc0\t%L0, " #source ", " #sel "\n\t"		\			".set\tmips0"					\			: : "r" (val));					\	local_irq_restore(__flags);					\} while (0)#define read_c0_index()		__read_32bit_c0_register($0, 0)#define write_c0_index(val)	__write_32bit_c0_register($0, 0, val)#define read_c0_entrylo0()	__read_ulong_c0_register($2, 0)#define write_c0_entrylo0(val)	__write_ulong_c0_register($2, 0, val)#define read_c0_entrylo1()	__read_ulong_c0_register($3, 0)#define write_c0_entrylo1(val)	__write_ulong_c0_register($3, 0, val)#define read_c0_conf()		__read_32bit_c0_register($3, 0)#define write_c0_conf(val)	__write_32bit_c0_register($3, 0, val)#define read_c0_context()	__read_ulong_c0_register($4, 0)#define write_c0_context(val)	__write_ulong_c0_register($4, 0, val)#define read_c0_userlocal()	__read_ulong_c0_register($4, 2)#define write_c0_userlocal(val)	__write_ulong_c0_register($4, 2, val)#define read_c0_pagemask()	__read_32bit_c0_register($5, 0)#define write_c0_pagemask(val)	__write_32bit_c0_register($5, 0, val)#define read_c0_wired()		__read_32bit_c0_register($6, 0)#define write_c0_wired(val)	__write_32bit_c0_register($6, 0, val)#define read_c0_info()		__read_32bit_c0_register($7, 0)#define read_c0_cache()		__read_32bit_c0_register($7, 0)	/* TX39xx */#define write_c0_cache(val)	__write_32bit_c0_register($7, 0, val)#define read_c0_badvaddr()	__read_ulong_c0_register($8, 0)#define write_c0_badvaddr(val)	__write_ulong_c0_register($8, 0, val)#define read_c0_count()		__read_32bit_c0_register($9, 0)#define write_c0_count(val)	__write_32bit_c0_register($9, 0, val)#define read_c0_count2()	__read_32bit_c0_register($9, 6) /* pnx8550 */#define write_c0_count2(val)	__write_32bit_c0_register($9, 6, val)#define read_c0_count3()	__read_32bit_c0_register($9, 7) /* pnx8550 */#define write_c0_count3(val)	__write_32bit_c0_register($9, 7, val)#define read_c0_entryhi()	__read_ulong_c0_register($10, 0)#define write_c0_entryhi(val)	__write_ulong_c0_register($10, 0, val)#define read_c0_compare()	__read_32bit_c0_register($11, 0)#define write_c0_compare(val)	__write_32bit_c0_register($11, 0, val)#define read_c0_compare2()	__read_32bit_c0_register($11, 6) /* pnx8550 */#define write_c0_compare2(val)	__write_32bit_c0_register($11, 6, val)#define read_c0_compare3()	__read_32bit_c0_register($11, 7) /* pnx8550 */#define write_c0_compare3(val)	__write_32bit_c0_register($11, 7, val)#define read_c0_status()	__read_32bit_c0_register($12, 0)#ifdef CONFIG_MIPS_MT_SMTC#define write_c0_status(val)						\do {									\	__write_32bit_c0_register($12, 0, val);				\	__ehb();							\} while (0)#else/* * Legacy non-SMTC code, which may be hazardous * but which might not support EHB */#define write_c0_status(val)	__write_32bit_c0_register($12, 0, val)#endif /* CONFIG_MIPS_MT_SMTC */#define read_c0_cause()		__read_32bit_c0_register($13, 0)#define write_c0_cause(val)	__write_32bit_c0_register($13, 0, val)#define read_c0_epc()		__read_ulong_c0_register($14, 0)#define write_c0_epc(val)	__write_ulong_c0_register($14, 0, val)#define read_c0_prid()		__read_32bit_c0_register($15, 0)#define read_c0_config()	__read_32bit_c0_register($16, 0)#define read_c0_config1()	__read_32bit_c0_register($16, 1)#define read_c0_config2()	__read_32bit_c0_register($16, 2)#define read_c0_config3()	__read_32bit_c0_register($16, 3)#define read_c0_config4()	__read_32bit_c0_register($16, 4)#define read_c0_config5()	__read_32bit_c0_register($16, 5)#define read_c0_config6()	__read_32bit_c0_register($16, 6)#define read_c0_config7()	__read_32bit_c0_register($16, 7)#define write_c0_config(val)	__write_32bit_c0_register($16, 0, val)#define write_c0_config1(val)	__write_32bit_c0_register($16, 1, val)#define write_c0_config2(val)	__write_32bit_c0_register($16, 2, val)#define write_c0_config3(val)	__write_32bit_c0_register($16, 3, val)#define write_c0_config4(val)	__write_32bit_c0_register($16, 4, val)#define write_c0_config5(val)	__write_32bit_c0_register($16, 5, val)#define write_c0_config6(val)	__write_32bit_c0_register($16, 6, val)#define write_c0_config7(val)	__write_32bit_c0_register($16, 7, val)/* * The WatchLo register.  There may be upto 8 of them. */#define read_c0_watchlo0()	__read_ulong_c0_register($18, 0)#define read_c0_watchlo1()	__read_ulong_c0_register($18, 1)#define read_c0_watchlo2()	__read_ulong_c0_register($18, 2)#define read_c0_watchlo3()	__read_ulong_c0_register($18, 3)#define read_c0_watchlo4()	__read_ulong_c0_register($18, 4)#define read_c0_watchlo5()	__read_ulong_c0_register($18, 5)#define read_c0_watchlo6()	__read_ulong_c0_register($18, 6)#define read_c0_watchlo7()	__read_ulong_c0_register($18, 7)#define write_c0_watchlo0(val)	__write_ulong_c0_register($18, 0, val)#define write_c0_watchlo1(val)	__write_ulong_c0_register($18, 1, val)#define write_c0_watchlo2(val)	__write_ulong_c0_register($18, 2, val)#define write_c0_watchlo3(val)	__write_ulong_c0_register($18, 3, val)#define write_c0_watchlo4(val)	__write_ulong_c0_register($18, 4, val)#define write_c0_watchlo5(val)	__write_ulong_c0_register($18, 5, val)#define write_c0_watchlo6(val)	__write_ulong_c0_register($18, 6, val)#define write_c0_watchlo7(val)	__write_ulong_c0_register($18, 7, val)/* * The WatchHi register.  There may be upto 8 of them. */#define read_c0_watchhi0()	__read_32bit_c0_register($19, 0)#define read_c0_watchhi1()	__read_32bit_c0_register($19, 1)#define read_c0_watchhi2()	__read_32bit_c0_register($19, 2)#define read_c0_watchhi3()	__read_32bit_c0_register($19, 3)#define read_c0_watchhi4()	__read_32bit_c0_register($19, 4)#define read_c0_watchhi5()	__read_32bit_c0_register($19, 5)#define read_c0_watchhi6()	__read_32bit_c0_register($19, 6)#define read_c0_watchhi7()	__read_32bit_c0_register($19, 7)#define write_c0_watchhi0(val)	__write_32bit_c0_register($19, 0, val)#define write_c0_watchhi1(val)	__write_32bit_c0_register($19, 1, val)#define write_c0_watchhi2(val)	__write_32bit_c0_register($19, 2, val)#define write_c0_watchhi3(val)	__write_32bit_c0_register($19, 3, val)#define write_c0_watchhi4(val)	__write_32bit_c0_register($19, 4, val)#define write_c0_watchhi5(val)	__write_32bit_c0_register($19, 5, val)#define write_c0_watchhi6(val)	__write_32bit_c0_register($19, 6, val)#define write_c0_watchhi7(val)	__write_32bit_c0_register($19, 7, val)#define read_c0_xcontext()	__read_ulong_c0_register($20, 0)#define write_c0_xcontext(val)	__write_ulong_c0_register($20, 0, val)#define read_c0_intcontrol()	__read_32bit_c0_ctrl_register($20)#define write_c0_intcontrol(val) __write_32bit_c0_ctrl_register($20, val)#define read_c0_framemask()	__read_32bit_c0_register($21, 0)#define write_c0_framemask(val)	__write_32bit_c0_register($21, 0, val)/* RM9000 PerfControl performance counter control register */#define read_c0_perfcontrol()	__read_32bit_c0_register($22, 0)#define write_c0_perfcontrol(val) __write_32bit_c0_register($22, 0, val)#define read_c0_diag()		__read_32bit_c0_register($22, 0)#define write_c0_diag(val)	__write_32bit_c0_register($22, 0, val)#define read_c0_diag1()		__read_32bit_c0_register($22, 1)#define write_c0_diag1(val)	__write_32bit_c0_register($22, 1, val)#define read_c0_diag2()		__read_32bit_c0_register($22, 2)#define write_c0_diag2(val)	__write_32bit_c0_register($22, 2, val)#define read_c0_diag3()		__read_32bit_c0_register($22, 3)#define write_c0_diag3(val)	__write_32bit_c0_register($22, 3, val)#define read_c0_diag4()		__read_32bit_c0_register($22, 4)#define write_c0_diag4(val)	__write_32bit_c0_register($22, 4, val)#define read_c0_diag5()		__read_32bit_c0_register($22, 5)

⌨️ 快捷键说明

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