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

📄 e500.h

📁 F:worksip2440a board可启动u-boot-like.tar.gz F:worksip2440a board可启动u-boot-like.tar.gz
💻 H
字号:
/* * Copyright 2003 Motorola,Inc. * Xianghua Xiao(x.xiao@motorola.com) */#ifndef	__E500_H__#define __E500_H__#ifndef __ASSEMBLY__typedef struct{  unsigned long freqProcessor;  unsigned long freqSystemBus;} MPC85xx_SYS_INFO;#endif  /* _ASMLANGUAGE *//* Motorola E500 core provides 16 TLB1 entries; they can be used for * initial memory mapping like legacy BAT registers do. Usually we * use four MAS registers(MAS0-3) to operate on TLB1 entries. * * While there are 16 Entries with variable Page Sizes in TLB1, * there are also 256 Entries with fixed 4K pages in TLB0. * * We also need LAWs(Local Access Window) to associate a range of * the local 32-bit address space with a particular target interface * such as PCI/PCI-X, RapidIO, Local Bus and DDR SDRAM. * * We put TLB1/LAW code here because memory mapping is board-specific * instead of cpu-specific. * * While these macros are all nominally for TLB1 by name, they can * also be used for TLB0 as well. *//* * Convert addresses to Effective and Real Page Numbers. * Grab the high 20-bits and shift 'em down, dropping the "byte offset". */#define E500_TLB_EPN(addr)	(((addr) >> 12) & 0xfffff)#define E500_TLB_RPN(addr)	(((addr) >> 12) & 0xfffff)/* MAS0 * tlbsel(TLB Select):0,1 * esel(Entry Select): 0,1,2,...,15 for TLB1 * nv(Next victim):0,1 */#define TLB1_MAS0(tlbsel,esel,nv) \			((((tlbsel) << 28) & MAS0_TLBSEL)       |\			(((esel) << 16) & MAS0_ESEL )           |\			(nv) )/* MAS1 * v(TLB valid bit):0,1 * iprot(invalidate protect):0,1 * tid(translation identity):8bit to match process IDs * ts(translation space,comparing with MSR[IS,DS]): 0,1 * tsize(translation size):1,2,...,9(4K,16K,64K,256K,1M,4M,16M,64M,256M) */#define TLB1_MAS1(v,iprot,tid,ts,tsize) \			((((v) << 31) & MAS1_VALID)             |\			(((iprot) << 30) & MAS1_IPROT)          |\			(((tid) << 16) & MAS1_TID)              |\			(((ts) << 12) & MAS1_TS)                |\			(((tsize) << 8) & MAS1_TSIZE) )/* MAS2 * epn(effective page number):20bits * sharen(Shared cache state):0,1 * x0,x1(implementation specific page attribute):0,1 * w,i,m,g,e(write-through,cache-inhibited,memory coherency,guarded, *      endianness):0,1 */#define TLB1_MAS2(epn,sharen,x0,x1,w,i,m,g,e) \			((((epn) << 12) & MAS2_EPN)             |\			(((sharen) << 9) & MAS2_SHAREN)         |\			(((x0) << 6) & MAS2_X0)                 |\			(((x1) << 5) & MAS2_X1)                 |\			(((w) << 4) & MAS2_W)                   |\			(((i) << 3) & MAS2_I)                   |\			(((m) << 2) & MAS2_M)                   |\			(((g) << 1) & MAS2_G)                   |\			(e) )/* MAS3 * rpn(real page number):20bits * u0-u3(user bits, useful for page table management in OS):0,1 * ux,sx,uw,sw,ur,sr(permission bits, user and supervisor read, *      write,execute permission). */#define TLB1_MAS3(rpn,u0,u1,u2,u3,ux,sx,uw,sw,ur,sr) \			((((rpn) << 12) & MAS3_RPN)             |\			(((u0) << 9) & MAS3_U0)                 |\			(((u1) << 8) & MAS3_U1)                 |\			(((u2) << 7) & MAS3_U2)                 |\			(((u3) << 6) & MAS3_U3)                 |\			(((ux) << 5) & MAS3_UX)                 |\			(((sx) << 4) & MAS3_SX)                 |\			(((uw) << 3) & MAS3_UW)                 |\			(((sw) << 2) & MAS3_SW)                 |\			(((ur) << 1) & MAS3_UR)                 |\			(sr) )#define RESET_VECTOR	0xfffffffc#define CACHELINE_MASK	(CFG_CACHELINE_SIZE - 1) /* Address mask for cache						     line aligned data. */#endif	/* __E500_H__ */

⌨️ 快捷键说明

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