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

📄 mmu.h

📁 U-boot源码 ARM7启动代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * TLB entries are defined by a "high" tag portion and a "low" data * portion.  On all architectures, the data portion is 32-bits. * * TLB entries are managed entirely under software control by reading, * writing, and searchoing using the 4xx-specific tlbre, tlbwr, and tlbsx * instructions. *//* * e500 support */#define MAS0_TLBSEL     0x10000000#define MAS0_ESEL       0x000F0000#define MAS0_NV         0x00000001#define MAS1_VALID      0x80000000#define MAS1_IPROT      0x40000000#define MAS1_TID        0x00FF0000#define MAS1_TS         0x00001000#define MAS1_TSIZE   	0x00000F00#define MAS2_EPN        0xFFFFF000#define MAS2_SHAREN     0x00000200#define MAS2_X0         0x00000040#define MAS2_X1         0x00000020#define MAS2_W          0x00000010#define MAS2_I          0x00000008#define MAS2_M          0x00000004#define MAS2_G          0x00000002#define MAS2_E          0x00000001#define MAS3_RPN        0xFFFFF000#define MAS3_U0         0x00000200#define MAS3_U1         0x00000100#define MAS3_U2         0x00000080#define MAS3_U3         0x00000040#define MAS3_UX         0x00000020#define MAS3_SX         0x00000010#define MAS3_UW         0x00000008#define MAS3_SW         0x00000004#define MAS3_UR         0x00000002#define MAS3_SR         0x00000001#define MAS4_TLBSELD    0x10000000#define MAS4_TIDDSEL    0x00030000#define MAS4_DSHAREN    0x00001000#define MAS4_TSIZED(x)  (x << 8)#define MAS4_X0D        0x00000040#define MAS4_X1D        0x00000020#define MAS4_WD         0x00000010#define MAS4_ID         0x00000008#define MAS4_MD         0x00000004#define MAS4_GD         0x00000002#define MAS4_ED         0x00000001#define MAS6_SPID       0x00FF0000#define MAS6_SAS        0x00000001#define BOOKE_PAGESZ_1K         0#define BOOKE_PAGESZ_4K         1#define BOOKE_PAGESZ_16K        2#define BOOKE_PAGESZ_64K        3#define BOOKE_PAGESZ_256K       4#define BOOKE_PAGESZ_1M         5#define BOOKE_PAGESZ_4M         6#define BOOKE_PAGESZ_16M        7#define BOOKE_PAGESZ_64M        8#define BOOKE_PAGESZ_256M       9#define BOOKE_PAGESZ_1G		10#define BOOKE_PAGESZ_4G		11#if defined(CONFIG_MPC86xx)#define LAWBAR_BASE_ADDR	0x00FFFFFF#define LAWAR_TRGT_IF		0x01F00000#else#define LAWBAR_BASE_ADDR	0x000FFFFF#define LAWAR_TRGT_IF		0x00F00000#endif#define LAWAR_EN		0x80000000#define LAWAR_SIZE		0x0000003F#define LAWAR_TRGT_IF_PCI	0x00000000#define LAWAR_TRGT_IF_PCI1	0x00000000#define LAWAR_TRGT_IF_PCIX	0x00000000#define LAWAR_TRGT_IF_PCI2	0x00100000#define LAWAR_TRGT_IF_PEX	0x00200000#define LAWAR_TRGT_IF_LBC	0x00400000#define LAWAR_TRGT_IF_CCSR	0x00800000#define LAWAR_TRGT_IF_DDR_INTERLEAVED 0x00B00000#define LAWAR_TRGT_IF_RIO	0x00c00000#define LAWAR_TRGT_IF_DDR	0x00f00000#define LAWAR_TRGT_IF_DDR1	0x00f00000#define LAWAR_TRGT_IF_DDR2	0x01600000#define LAWAR_SIZE_BASE		0xa#define LAWAR_SIZE_4K		(LAWAR_SIZE_BASE+1)#define LAWAR_SIZE_8K		(LAWAR_SIZE_BASE+2)#define LAWAR_SIZE_16K		(LAWAR_SIZE_BASE+3)#define LAWAR_SIZE_32K		(LAWAR_SIZE_BASE+4)#define LAWAR_SIZE_64K		(LAWAR_SIZE_BASE+5)#define LAWAR_SIZE_128K		(LAWAR_SIZE_BASE+6)#define LAWAR_SIZE_256K		(LAWAR_SIZE_BASE+7)#define LAWAR_SIZE_512K		(LAWAR_SIZE_BASE+8)#define LAWAR_SIZE_1M		(LAWAR_SIZE_BASE+9)#define LAWAR_SIZE_2M		(LAWAR_SIZE_BASE+10)#define LAWAR_SIZE_4M		(LAWAR_SIZE_BASE+11)#define LAWAR_SIZE_8M		(LAWAR_SIZE_BASE+12)#define LAWAR_SIZE_16M		(LAWAR_SIZE_BASE+13)#define LAWAR_SIZE_32M		(LAWAR_SIZE_BASE+14)#define LAWAR_SIZE_64M		(LAWAR_SIZE_BASE+15)#define LAWAR_SIZE_128M		(LAWAR_SIZE_BASE+16)#define LAWAR_SIZE_256M		(LAWAR_SIZE_BASE+17)#define LAWAR_SIZE_512M		(LAWAR_SIZE_BASE+18)#define LAWAR_SIZE_1G		(LAWAR_SIZE_BASE+19)#define LAWAR_SIZE_2G		(LAWAR_SIZE_BASE+20)#define LAWAR_SIZE_4G		(LAWAR_SIZE_BASE+21)#define LAWAR_SIZE_8G		(LAWAR_SIZE_BASE+22)#define LAWAR_SIZE_16G		(LAWAR_SIZE_BASE+23)#define LAWAR_SIZE_32G		(LAWAR_SIZE_BASE+24)#ifdef CONFIG_440/* General */#define TLB_VALID   0x00000200/* Supported page sizes */#define SZ_1K	0x00000000#define SZ_4K	0x00000010#define SZ_16K	0x00000020#define SZ_64K	0x00000030#define SZ_256K	0x00000040#define SZ_1M	0x00000050#define SZ_16M	0x00000070#define SZ_256M	0x00000090/* Storage attributes */#define SA_W	0x00000800	/* Write-through */#define SA_I	0x00000400	/* Caching inhibited */#define SA_M	0x00000200	/* Memory coherence */#define SA_G	0x00000100	/* Guarded */#define SA_E	0x00000080	/* Endian *//* Access control */#define AC_X	0x00000024	/* Execute */#define AC_W	0x00000012	/* Write */#define AC_R	0x00000009	/* Read *//* Some handy macros */#define EPN(e)		((e) & 0xfffffc00)#define TLB0(epn,sz)	((EPN((epn)) | (sz) | TLB_VALID ))#define TLB1(rpn,erpn)	(((rpn) & 0xfffffc00) | (erpn))#define TLB2(a)		((a) & 0x00000fbf)#define tlbtab_start\	mflr	r1	;\	bl	0f	;#define tlbtab_end\	.long 0, 0, 0	;\0:	mflr	r0	;\	mtlr	r1	;\	blr		;#define tlbentry(epn,sz,rpn,erpn,attr)\	.long TLB0(epn,sz),TLB1(rpn,erpn),TLB2(attr)/*----------------------------------------------------------------------------+| TLB specific defines.+----------------------------------------------------------------------------*/#define TLB_256MB_ALIGN_MASK 0xF0000000#define TLB_16MB_ALIGN_MASK  0xFF000000#define TLB_1MB_ALIGN_MASK   0xFFF00000#define TLB_256KB_ALIGN_MASK 0xFFFC0000#define TLB_64KB_ALIGN_MASK  0xFFFF0000#define TLB_16KB_ALIGN_MASK  0xFFFFC000#define TLB_4KB_ALIGN_MASK   0xFFFFF000#define TLB_1KB_ALIGN_MASK   0xFFFFFC00#define TLB_256MB_SIZE       0x10000000#define TLB_16MB_SIZE        0x01000000#define TLB_1MB_SIZE         0x00100000#define TLB_256KB_SIZE       0x00040000#define TLB_64KB_SIZE        0x00010000#define TLB_16KB_SIZE        0x00004000#define TLB_4KB_SIZE         0x00001000#define TLB_1KB_SIZE         0x00000400#define TLB_WORD0_EPN_MASK   0xFFFFFC00#define TLB_WORD0_EPN_ENCODE(n) (((unsigned long)(n))&0xFFFFFC00)#define TLB_WORD0_EPN_DECODE(n) (((unsigned long)(n))&0xFFFFFC00)#define TLB_WORD0_V_MASK     0x00000200#define TLB_WORD0_V_ENABLE   0x00000200#define TLB_WORD0_V_DISABLE  0x00000000#define TLB_WORD0_TS_MASK    0x00000100#define TLB_WORD0_TS_1       0x00000100#define TLB_WORD0_TS_0       0x00000000#define TLB_WORD0_SIZE_MASK  0x000000F0#define TLB_WORD0_SIZE_1KB   0x00000000#define TLB_WORD0_SIZE_4KB   0x00000010#define TLB_WORD0_SIZE_16KB  0x00000020#define TLB_WORD0_SIZE_64KB  0x00000030#define TLB_WORD0_SIZE_256KB 0x00000040#define TLB_WORD0_SIZE_1MB   0x00000050#define TLB_WORD0_SIZE_16MB  0x00000070#define TLB_WORD0_SIZE_256MB 0x00000090#define TLB_WORD0_TPAR_MASK  0x0000000F#define TLB_WORD0_TPAR_ENCODE(n) ((((unsigned long)(n))&0x0F)<<0)#define TLB_WORD0_TPAR_DECODE(n) ((((unsigned long)(n))>>0)&0x0F)#define TLB_WORD1_RPN_MASK   0xFFFFFC00#define TLB_WORD1_RPN_ENCODE(n) (((unsigned long)(n))&0xFFFFFC00)#define TLB_WORD1_RPN_DECODE(n) (((unsigned long)(n))&0xFFFFFC00)#define TLB_WORD1_PAR1_MASK  0x00000300#define TLB_WORD1_PAR1_ENCODE(n) ((((unsigned long)(n))&0x03)<<8)#define TLB_WORD1_PAR1_DECODE(n) ((((unsigned long)(n))>>8)&0x03)#define TLB_WORD1_PAR1_0     0x00000000#define TLB_WORD1_PAR1_1     0x00000100#define TLB_WORD1_PAR1_2     0x00000200#define TLB_WORD1_PAR1_3     0x00000300#define TLB_WORD1_ERPN_MASK  0x0000000F#define TLB_WORD1_ERPN_ENCODE(n) ((((unsigned long)(n))&0x0F)<<0)#define TLB_WORD1_ERPN_DECODE(n) ((((unsigned long)(n))>>0)&0x0F)#define TLB_WORD2_PAR2_MASK  0xC0000000#define TLB_WORD2_PAR2_ENCODE(n) ((((unsigned long)(n))&0x03)<<30)#define TLB_WORD2_PAR2_DECODE(n) ((((unsigned long)(n))>>30)&0x03)#define TLB_WORD2_PAR2_0     0x00000000#define TLB_WORD2_PAR2_1     0x40000000#define TLB_WORD2_PAR2_2     0x80000000#define TLB_WORD2_PAR2_3     0xC0000000#define TLB_WORD2_U0_MASK    0x00008000#define TLB_WORD2_U0_ENABLE  0x00008000#define TLB_WORD2_U0_DISABLE 0x00000000#define TLB_WORD2_U1_MASK    0x00004000#define TLB_WORD2_U1_ENABLE  0x00004000#define TLB_WORD2_U1_DISABLE 0x00000000#define TLB_WORD2_U2_MASK    0x00002000#define TLB_WORD2_U2_ENABLE  0x00002000#define TLB_WORD2_U2_DISABLE 0x00000000#define TLB_WORD2_U3_MASK    0x00001000#define TLB_WORD2_U3_ENABLE  0x00001000#define TLB_WORD2_U3_DISABLE 0x00000000#define TLB_WORD2_W_MASK     0x00000800#define TLB_WORD2_W_ENABLE   0x00000800#define TLB_WORD2_W_DISABLE  0x00000000#define TLB_WORD2_I_MASK     0x00000400#define TLB_WORD2_I_ENABLE   0x00000400#define TLB_WORD2_I_DISABLE  0x00000000#define TLB_WORD2_M_MASK     0x00000200#define TLB_WORD2_M_ENABLE   0x00000200#define TLB_WORD2_M_DISABLE  0x00000000#define TLB_WORD2_G_MASK     0x00000100#define TLB_WORD2_G_ENABLE   0x00000100#define TLB_WORD2_G_DISABLE  0x00000000#define TLB_WORD2_E_MASK     0x00000080#define TLB_WORD2_E_ENABLE   0x00000080#define TLB_WORD2_E_DISABLE  0x00000000#define TLB_WORD2_UX_MASK    0x00000020#define TLB_WORD2_UX_ENABLE  0x00000020#define TLB_WORD2_UX_DISABLE 0x00000000#define TLB_WORD2_UW_MASK    0x00000010#define TLB_WORD2_UW_ENABLE  0x00000010#define TLB_WORD2_UW_DISABLE 0x00000000#define TLB_WORD2_UR_MASK    0x00000008#define TLB_WORD2_UR_ENABLE  0x00000008#define TLB_WORD2_UR_DISABLE 0x00000000#define TLB_WORD2_SX_MASK    0x00000004#define TLB_WORD2_SX_ENABLE  0x00000004#define TLB_WORD2_SX_DISABLE 0x00000000#define TLB_WORD2_SW_MASK    0x00000002#define TLB_WORD2_SW_ENABLE  0x00000002#define TLB_WORD2_SW_DISABLE 0x00000000#define TLB_WORD2_SR_MASK    0x00000001#define TLB_WORD2_SR_ENABLE  0x00000001#define TLB_WORD2_SR_DISABLE 0x00000000/*----------------------------------------------------------------------------+| Following instructions are not available in Book E mode of the GNU assembler.+----------------------------------------------------------------------------*/#define DCCCI(ra,rb)			.long 0x7c000000|\					(ra<<16)|(rb<<11)|(454<<1)#define ICCCI(ra,rb)			.long 0x7c000000|\					(ra<<16)|(rb<<11)|(966<<1)#define DCREAD(rt,ra,rb)		.long 0x7c000000|\					(rt<<21)|(ra<<16)|(rb<<11)|(486<<1)#define ICREAD(ra,rb)			.long 0x7c000000|\					(ra<<16)|(rb<<11)|(998<<1)#define TLBSX(rt,ra,rb)			.long 0x7c000000|\					(rt<<21)|(ra<<16)|(rb<<11)|(914<<1)#define TLBWE(rs,ra,ws)			.long 0x7c000000|\					(rs<<21)|(ra<<16)|(ws<<11)|(978<<1)#define TLBRE(rt,ra,ws)			.long 0x7c000000|\					(rt<<21)|(ra<<16)|(ws<<11)|(946<<1)#define TLBSXDOT(rt,ra,rb)		.long 0x7c000001|\					(rt<<21)|(ra<<16)|(rb<<11)|(914<<1)#define MSYNC				.long 0x7c000000|\					(598<<1)#define MBAR_INST 				.long 0x7c000000|\					(854<<1)#ifndef __ASSEMBLY__/* Prototypes */void mttlb1(unsigned long index, unsigned long value);void mttlb2(unsigned long index, unsigned long value);void mttlb3(unsigned long index, unsigned long value);unsigned long mftlb1(unsigned long index);unsigned long mftlb2(unsigned long index);unsigned long mftlb3(unsigned long index);void program_tlb(u32 phys_addr, u32 virt_addr, u32 size, u32 tlb_word2_i_value);void remove_tlb(u32 vaddr, u32 size);#endif /* __ASSEMBLY__ */#endif /* CONFIG_440 */#endif /* _PPC_MMU_H_ */

⌨️ 快捷键说明

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