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

📄 sbmips.h

📁 一个很好的嵌入式linux平台下的bootloader
💻 H
📖 第 1 页 / 共 3 页
字号:
#define _cp0_set_reg_u64(name, num, sel) \  _cp0_set_reg (name, (num), (sel), unsigned long long, "d")#else#define _cp0_get_reg_u64(name, num, sel)#define _cp0_set_reg_u64(name, num, sel)#endif/* CP0 register 0: index. */_cp0_get_reg_s32 (index, C0_INDEX, 0)_cp0_set_reg_s32 (index, C0_INDEX, 0)/* CP0 register 1: random. */_cp0_get_reg_u32 (random, C0_RANDOM, 0)/* CP0 register 2: entrylo0. */_cp0_get_reg_u64 (entrylo0, C0_ENTRYLO0, 0)_cp0_set_reg_u64 (entrylo0, C0_ENTRYLO0, 0)/* CP0 register 3: entrylo1. */_cp0_get_reg_u64 (entrylo1, C0_ENTRYLO1, 0)_cp0_set_reg_u64 (entrylo1, C0_ENTRYLO1, 0)/* CP0 register 4: context. */_cp0_get_reg_u64 (context, C0_CONTEXT, 0)_cp0_set_reg_u64 (context, C0_CONTEXT, 0)/* CP0 register 5: pagemask. */_cp0_get_reg_u32 (pagemask, C0_PAGEMASK, 0)_cp0_set_reg_u32 (pagemask, C0_PAGEMASK, 0)/* CP0 register 6: wired. */_cp0_get_reg_u32 (wired, C0_WIRED, 0)_cp0_set_reg_u32 (wired, C0_WIRED, 0)/* CP0 register 7: reserved. *//* CP0 register 8: badvaddr. */_cp0_get_reg_u64 (badvaddr, C0_BADVADDR, 0)/* CP0 register 9: count. */_cp0_get_reg_u32 (count, C0_COUNT, 0)_cp0_set_reg_u32 (count, C0_COUNT, 0)/* CP0 register 10: entryhi. */_cp0_get_reg_u64 (entryhi, C0_ENTRYHI, 0)_cp0_set_reg_u64 (entryhi, C0_ENTRYHI, 0)/* CP0 register 11: compare. */_cp0_get_reg_u32 (compare, C0_COMPARE, 0)_cp0_set_reg_u32 (compare, C0_COMPARE, 0)/* CP0 register 12: status. */_cp0_get_reg_u32 (status, C0_STATUS, 0)_cp0_set_reg_u32 (status, C0_STATUS, 0)/* CP0 register 13: cause. */_cp0_get_reg_u32 (cause, C0_CAUSE, 0)_cp0_set_reg_u32 (cause, C0_CAUSE, 0)/* CP0 register 14: epc. */_cp0_get_reg_u64 (epc, C0_EPC, 0)_cp0_set_reg_u64 (epc, C0_EPC, 0)/* CP0 register 15: prid. */_cp0_get_reg_u32 (prid, C0_PRID, 0)/* CP0 register 16: config. */_cp0_get_reg_u32 (config, C0_CONFIG, 0)_cp0_set_reg_u32 (config, C0_CONFIG, 0)/* CP0 register 16 sel 1: config1. */_cp0_get_reg_u32 (config1, C0_CONFIG, 1)/* CP0 register 16 sel 2: config2. */_cp0_get_reg_u32 (config2, C0_CONFIG, 2)/* CP0 register 16 sel 3: config3. */_cp0_get_reg_u32 (config3, C0_CONFIG, 3)/* CP0 register 17: lladdr. */_cp0_get_reg_u64 (lladdr, C0_LLADDR, 0)/* CP0 register 18: watchlo. */_cp0_get_reg_u64 (watchlo, C0_WATCHLO, 0)_cp0_set_reg_u64 (watchlo, C0_WATCHLO, 0)/* CP0 register 18 sel 1: watchlo1. */_cp0_get_reg_u64 (watchlo1, C0_WATCHLO, 1)_cp0_set_reg_u64 (watchlo1, C0_WATCHLO, 1)/* CP0 register 19: watchhi. */_cp0_get_reg_u32 (watchhi, C0_WATCHHI, 0)_cp0_set_reg_u32 (watchhi, C0_WATCHHI, 0)/* CP0 register 19 sel 1: watchhi1. */_cp0_get_reg_u32 (watchhi1, C0_WATCHHI, 1)_cp0_set_reg_u32 (watchhi1, C0_WATCHHI, 1)/* CP0 register 20: xcontext. */_cp0_get_reg_u64 (xcontext, C0_XCONTEXT, 0)_cp0_set_reg_u64 (xcontext, C0_XCONTEXT, 0)/* CP0 register 21: reserved. *//* CP0 register 22: Performance Trace Register (SB-1).  */_cp0_get_reg_u64 (ptr, C0_PTR, 0)/* CP0 register 23: debug. */_cp0_get_reg_u32 (debug, C0_DEBUG, 0)_cp0_set_reg_u32 (debug, C0_DEBUG, 0)/* CP0 register 23 sel 3: edebug. */_cp0_get_reg_u32 (edebug, C0_DEBUG, 3)_cp0_set_reg_u32 (edebug, C0_DEBUG, 3)/* CP0 register 24: depc. */_cp0_get_reg_u64 (depc, C0_DEPC, 0)_cp0_set_reg_u64 (depc, C0_DEPC, 0)/* CP0 register 25: perfcnt. */_cp0_get_reg_u32 (perfcnt, C0_PERFCNT, 0)_cp0_set_reg_u32 (perfcnt, C0_PERFCNT, 0)/* CP0 register 25 sel 1: perfcnt1. */_cp0_get_reg_u32 (perfcnt1, C0_PERFCNT, 1)_cp0_set_reg_u32 (perfcnt1, C0_PERFCNT, 1)/* CP0 register 25 sel 2: perfcnt2. */_cp0_get_reg_u32 (perfcnt2, C0_PERFCNT, 2)_cp0_set_reg_u32 (perfcnt2, C0_PERFCNT, 2)/* CP0 register 25 sel 3: perfcnt3. */_cp0_get_reg_u32 (perfcnt3, C0_PERFCNT, 3)_cp0_set_reg_u32 (perfcnt3, C0_PERFCNT, 3)/* CP0 register 25 sel 4: perfcnt4. */_cp0_get_reg_u32 (perfcnt4, C0_PERFCNT, 4)_cp0_set_reg_u32 (perfcnt4, C0_PERFCNT, 4)/* CP0 register 25 sel 5: perfcnt5. */_cp0_get_reg_u32 (perfcnt5, C0_PERFCNT, 5)_cp0_set_reg_u32 (perfcnt5, C0_PERFCNT, 5)/* CP0 register 25 sel 6: perfcnt6. */_cp0_get_reg_u32 (perfcnt6, C0_PERFCNT, 6)_cp0_set_reg_u32 (perfcnt6, C0_PERFCNT, 6)/* CP0 register 25 sel 7: perfcnt7. */_cp0_get_reg_u32 (perfcnt7, C0_PERFCNT, 7)_cp0_set_reg_u32 (perfcnt7, C0_PERFCNT, 7)/* CP0 register 26: errctl. */_cp0_get_reg_u32 (errctl, C0_ERRCTL, 0)_cp0_get_reg_u32 (buserr_pa, C0_ERRCTL, 1)/* CP0 register 27: cacheerr_i. */_cp0_get_reg_u32 (cacheerr_i, C0_CERR, 0)/* CP0 register 27 sel 1: cacheerr_d. */_cp0_get_reg_u32 (cacheerr_d, C0_CERR, 1)/* CP0 register 27 sel 3: cacheerr_d_pa. */_cp0_get_reg_u32 (cacheerr_d_pa, C0_CERR, 3)/* CP0 register 28: taglo_i. */_cp0_get_reg_u64 (taglo_i, C0_TAGLO, 0)_cp0_set_reg_u64 (taglo_i, C0_TAGLO, 0)/* CP0 register 28 sel 1: datalo_i. */_cp0_get_reg_u64 (datalo_i, C0_TAGLO, 1)/* CP0 register 28 sel 2: taglo_d. */_cp0_get_reg_u64 (taglo_d, C0_TAGLO, 2)_cp0_set_reg_u64 (taglo_d, C0_TAGLO, 2)/* CP0 register 28 sel 3: datalo_d. */_cp0_get_reg_u64 (datalo_d, C0_TAGLO, 3)/* CP0 register 29: taghi_i. */_cp0_get_reg_u64 (taghi_i, C0_TAGHI, 0)_cp0_set_reg_u64 (taghi_i, C0_TAGHI, 0)/* CP0 register 29 sel 1: datahi_i. */_cp0_get_reg_u64 (datahi_i, C0_TAGHI, 1)/* CP0 register 29 sel 2: taghi_d. */_cp0_get_reg_u64 (taghi_d, C0_TAGHI, 2)_cp0_set_reg_u64 (taghi_d, C0_TAGHI, 2)/* CP0 register 29 sel 3: datahi_d. */_cp0_get_reg_u64 (datahi_d, C0_TAGHI, 3)/* CP0 register 30: errorepc. */_cp0_get_reg_u64 (errorepc, C0_ERROREPC, 0)_cp0_set_reg_u64 (errorepc, C0_ERROREPC, 0)/* CP0 register 31: desave. */_cp0_get_reg_u64 (desave, C0_DESAVE, 0)_cp0_set_reg_u64 (desave, C0_DESAVE, 0)#endif /* __LANGUAGE_ASSEMBLY *//*  *********************************************************************    *  CP1 (floating point) control registers    ********************************************************************* */#define FPA_IRR		0		/* CP1: Implementation/Revision */#define FPA_CSR		31		/* CP1: Control/Status *//*  *********************************************************************    *  Macros for generating assembly language routines    ********************************************************************* */#if defined(__ASSEMBLER__)/* global leaf function (does not call other functions) */#define LEAF(name)		\  	.globl	name;		\  	.ent	name;		\name:/* global alternate entry to (local or global) leaf function */#define XLEAF(name)		\  	.globl	name;		\  	.aent	name;		\name:/* end of a global function */#define END(name)		\  	.size	name,.-name;	\  	.end	name/* local leaf function (does not call other functions) */#define SLEAF(name)		\  	.ent	name;		\name:/* local alternate entry to (local or global) leaf function */#define SXLEAF(name)		\  	.aent	name;		\name:/* end of a local function */#define SEND(name)		\  	END(name)/* define & export a symbol */#define EXPORT(name)		\  	.globl name;		\name:/* import a symbol */#define	IMPORT(name, size)	\	.extern	name,size/* define a zero-fill common block (BSS if not overridden) with a global name */#define COMM(name,size)		\	.comm	name,size/* define a zero-fill common block (BSS if not overridden) with a local name */#define LCOMM(name,size)		\  	.lcomm	name,size#endif/* Floating-Point Control register bits */#define CSR_C		0x00800000#define CSR_EXC		0x0003f000#define CSR_EE		0x00020000#define CSR_EV		0x00010000#define CSR_EZ		0x00008000#define CSR_EO		0x00004000#define CSR_EU		0x00002000#define CSR_EI		0x00001000#define CSR_TV		0x00000800#define CSR_TZ		0x00000400#define CSR_TO		0x00000200#define CSR_TU		0x00000100#define CSR_TI		0x00000080#define CSR_SV		0x00000040#define CSR_SZ		0x00000020#define CSR_SO		0x00000010#define CSR_SU		0x00000008#define CSR_SI		0x00000004#define CSR_RM		0x00000003/* Status Register */#define S_SR_CUMASK	28				/* coprocessor usable bits */#define M_SR_CUMASK	_MM_MAKEMASK(4,S_SR_CUMASK)#define G_SR_CUMASK(x)	_MM_GETVALUE(x,S_SR_CUMASK,M_SR_CUMASK)#define M_SR_CU3	_MM_MAKEMASK1(31)	/* coprocessor 3 usable */#define M_SR_CU2	_MM_MAKEMASK1(30)	/* coprocessor 2 usable */#define M_SR_CU1	_MM_MAKEMASK1(29)	/* coprocessor 1 usable */#define M_SR_CU0	_MM_MAKEMASK1(28)	/* coprocessor 0 usable */#define S_SR_RP		27			/* reduced power mode */#define M_SR_RP		_MM_MAKEMASK1(27)	/* reduced power mode */#define G_SR_RP(x)	_MM_GETVALUE(x,S_SR_RP,M_SR_RP)#define S_SR_FR		26			/* fpu regs any data */#define M_SR_FR		_MM_MAKEMASK1(26)	/* fpu regs any data */#define G_SR_FR(x)	_MM_GETVALUE(x,S_SR_FR,M_SR_FR)#define S_SR_RE		25			/* reverse endian */#define M_SR_RE		_MM_MAKEMASK1(25)	/* reverse endian */#define G_SR_RE(x)	_MM_GETVALUE(x,S_SR_RE,M_SR_RE)#define S_SR_MX		24			/* MDMX */#define M_SR_MX		_MM_MAKEMASK1(24)	/* MDMX */#define G_SR_MX(x)	_MM_GETVALUE(x,S_SR_MX,M_SR_MX)#define S_SR_PX		23			/* 64-bit ops in user mode */#define M_SR_PX		_MM_MAKEMASK1(23)	/* 64-bit ops in user mode */#define G_SR_PX(x)	_MM_GETVALUE(x,S_SR_PX,M_SR_PX)#define S_SR_BEV	22			/* boot exception vectors */#define M_SR_BEV	_MM_MAKEMASK1(22)	/* boot exception vectors */#define G_SR_BEV(x)	_MM_GETVALUE(x,S_SR_BEV,M_SR_BEV)#define S_SR_TS		21			/* TLB is shut down */#define M_SR_TS		_MM_MAKEMASK1(21)	/* TLB is shut down */#define G_SR_TS(x)	_MM_GETVALUE(x,S_SR_TS,M_SR_TS)#define S_SR_SR		20			/* soft reset */#define M_SR_SR		_MM_MAKEMASK1(20)	/* soft reset */#define G_SR_SR(x)	_MM_GETVALUE(x,S_SR_SR,M_SR_SR)#define S_SR_NMI	19			/* nonmaskable interrupt */#define M_SR_NMI	_MM_MAKEMASK1(19)	/* nonmaskable interrupt */#define G_SR_NMI(x)	_MM_GETVALUE(x,S_SR_NMI,M_SR_NMI)#define S_SR_IMASK	8			/* all interrupt mask bits */#define M_SR_IMASK	_MM_MAKEMASK(8,8)	/* all interrupt mask bits */#define G_SR_IMASK(x)	_MM_GETVALUE(x,S_SR_IMASK,M_SR_IMASK)#define M_SR_IBIT8	_MM_MAKEMASK1(15)	/* individual bits */#define M_SR_IBIT7	_MM_MAKEMASK1(14)#define M_SR_IBIT6	_MM_MAKEMASK1(13)#define M_SR_IBIT5	_MM_MAKEMASK1(12)#define M_SR_IBIT4	_MM_MAKEMASK1(11)#define M_SR_IBIT3	_MM_MAKEMASK1(10)#define M_SR_IBIT2	_MM_MAKEMASK1(9)#define M_SR_IBIT1	_MM_MAKEMASK1(8)#define M_SR_IMASK8	0			/* masks for nested int levels */#define M_SR_IMASK7	_MM_MAKEMASK(1,15)#define M_SR_IMASK6	_MM_MAKEMASK(2,14)#define M_SR_IMASK5	_MM_MAKEMASK(3,13)#define M_SR_IMASK4	_MM_MAKEMASK(4,12)#define M_SR_IMASK3	_MM_MAKEMASK(5,11)#define M_SR_IMASK2	_MM_MAKEMASK(6,10)#define M_SR_IMASK1	_MM_MAKEMASK(7,9)#define M_SR_IMASK0	_MM_MAKEMASK(8,8)#define S_SR_KX		7			/* 64-bit access for kernel */#define M_SR_KX		_MM_MAKEMASK1(7)	/* 64-bit access for kernel */#define G_SR_KX(x)	_MM_GETVALUE(x,S_SR_KX,M_SR_KX)#define S_SR_SX		6			/* .. for supervisor */#define M_SR_SX		_MM_MAKEMASK1(6)	/* .. for supervisor */#define G_SR_SX(x)	_MM_GETVALUE(x,S_SR_SX,M_SR_SX)#define S_SR_UX		5			/* .. for user */#define M_SR_UX		_MM_MAKEMASK1(5)	/* .. for user */#define G_SR_UX(x)	_MM_GETVALUE(x,S_SR_UX,M_SR_UX)#define S_SR_KSU	3			/* base operating mode mode */#define M_SR_KSU	_MM_MAKEMASK(2,S_SR_KSU)

⌨️ 快捷键说明

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