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

📄 mmu.h

📁 linux下的BOOT程序原码,有需要的可以来下,保证好用
💻 H
📖 第 1 页 / 共 2 页
字号:
/* Define an RPN value for mapping kernel memory to large virtual * pages for boot initialization.  This has real page number of 0, * large page size, shared page, cache enabled, and valid. * Also mark all subpages valid and write access. */#define MI_BOOTINIT	0x000001fd#define MD_CTR		792	/* Data TLB control register */#define MD_GPM		0x80000000	/* Set domain manager mode */#define MD_PPM		0x40000000	/* Set subpage protection */#define MD_CIDEF	0x20000000	/* Set cache inhibit when MMU dis */#define MD_WTDEF	0x10000000	/* Set writethrough when MMU dis */#define MD_RSV4I	0x08000000	/* Reserve 4 TLB entries */#define MD_TWAM		0x04000000	/* Use 4K page hardware assist */#define MD_PPCS		0x02000000	/* Use MI_RPN prob/priv state */#define MD_IDXMASK	0x00001f00	/* TLB index to be loaded */#define MD_RESETVAL	0x04000000	/* Value of register at reset */#define M_CASID		793	/* Address space ID (context) to match */#define MC_ASIDMASK	0x0000000f	/* Bits used for ASID value *//* These are the Ks and Kp from the PowerPC books.  For proper operation, * Ks = 0, Kp = 1. */#define MD_AP		794#define MD_Ks		0x80000000	/* Should not be set */#define MD_Kp		0x40000000	/* Should always be set *//* The effective page number register.  When read, contains the information * about the last instruction TLB miss.  When MD_RPN is written, bits in * this register are used to create the TLB entry. */#define MD_EPN		795#define MD_EPNMASK	0xfffff000	/* Effective page number for entry */#define MD_EVALID	0x00000200	/* Entry is valid */#define MD_ASIDMASK	0x0000000f	/* ASID match value */					/* Reset value is undefined *//* The pointer to the base address of the first level page table. * During a software tablewalk, reading this register provides the address * of the entry associated with MD_EPN. */#define M_TWB		796#define	M_L1TB		0xfffff000	/* Level 1 table base address */#define M_L1INDX	0x00000ffc	/* Level 1 index, when read */					/* Reset value is undefined *//* A "level 1" or "segment" or whatever you want to call it register. * For the data TLB, it contains bits that get loaded into the TLB entry * when the MD_RPN is written.  It is also provides the hardware assist * for finding the PTE address during software tablewalk. */#define MD_TWC		797#define MD_L2TB		0xfffff000	/* Level 2 table base address */#define MD_L2INDX	0xfffffe00	/* Level 2 index (*pte), when read */#define MD_APG		0x000001e0	/* Access protection group (0) */#define MD_GUARDED	0x00000010	/* Guarded storage */#define MD_PSMASK	0x0000000c	/* Mask of page size bits */#define MD_PS8MEG	0x0000000c	/* 8M page size */#define MD_PS512K	0x00000004	/* 512K page size */#define MD_PS4K_16K	0x00000000	/* 4K or 16K page size */#define MD_WT		0x00000002	/* Use writethrough page attribute */#define MD_SVALID	0x00000001	/* Segment entry is valid */					/* Reset value is undefined *//* Real page number.  Defined by the pte.  Writing this register * causes a TLB entry to be created for the data TLB, using * additional information from the MD_EPN, and MD_TWC registers. */#define MD_RPN		798/* This is a temporary storage register that could be used to save * a processor working register during a tablewalk. */#define M_TW		799/* * At present, all PowerPC 400-class processors share a similar TLB * architecture. The instruction and data sides share a unified, * 64-entry, fully-associative TLB which is maintained totally under * software control. In addition, the instruction side has a * hardware-managed, 4-entry, fully- associative TLB which serves as a * first level to the shared TLB. These two TLBs are known as the UTLB * and ITLB, respectively. */#define        PPC4XX_TLB_SIZE 64/* * 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. */#define	TLB_LO          1#define	TLB_HI          0#define	TLB_DATA        TLB_LO#define	TLB_TAG         TLB_HI/* Tag portion */#define TLB_EPN_MASK    0xFFFFFC00      /* Effective Page Number */#define TLB_PAGESZ_MASK 0x00000380#define TLB_PAGESZ(x)   (((x) & 0x7) << 7)#define   PAGESZ_1K		0#define   PAGESZ_4K             1#define   PAGESZ_16K            2#define   PAGESZ_64K            3#define   PAGESZ_256K           4#define   PAGESZ_1M             5#define   PAGESZ_4M             6#define   PAGESZ_16M            7#define TLB_VALID       0x00000040      /* Entry is valid *//* Data portion */#define TLB_RPN_MASK    0xFFFFFC00      /* Real Page Number */#define TLB_PERM_MASK   0x00000300#define TLB_EX          0x00000200      /* Instruction execution allowed */#define TLB_WR          0x00000100      /* Writes permitted */#define TLB_ZSEL_MASK   0x000000F0#define TLB_ZSEL(x)     (((x) & 0xF) << 4)#define TLB_ATTR_MASK   0x0000000F#define TLB_W           0x00000008      /* Caching is write-through */#define TLB_I           0x00000004      /* Caching is inhibited */#define TLB_M           0x00000002      /* Memory is coherent */#define TLB_G           0x00000001      /* Memory is guarded from prefetch *//* * 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_1GB        10#define BOOKE_PAGESZ_4GB        11#define LAWBAR_BASE_ADDR	0x000FFFFF#define LAWAR_EN		0x80000000#define LAWAR_TRGT_IF		0x00F00000#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_LBC	0x00400000#define LAWAR_TRGT_IF_CCSR	0x00800000#define LAWAR_TRGT_IF_RIO	0x00c00000#define LAWAR_TRGT_IF_DDR	0x00f00000#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)#endif /* _PPC_MMU_H_ */

⌨️ 快捷键说明

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