亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? mmu40lib.c

?? vxworks的源代碼
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
    mmu40LibInit,    mmuTransTblCreate,    mmuTransTblDelete,    mmuEnable,       mmuStateSet,    mmuStateGet,    mmuPageMap,    mmuGlobalPageMap,    mmuTranslate,    mmuCurrentSet    };IMPORT STATE_TRANS_TUPLE *mmuStateTransArray;IMPORT int mmuStateTransArraySize;IMPORT MMU_LIB_FUNCS mmuLibFuncs;IMPORT int mmuPageBlockSize;int mmuNumPagesInFreeList = 4;PART_ID mmuPageSource = NULL;LOCAL TC_REG localTc;LOCAL CRP_REG localCrp;/* * mmuEnableInline: move the new tc value into d0, * do a movec d0 -> tc. */#define mmuEnableInline(value) \    { \    localTc.enable = value; \    __asm__ ("movew %0, d0; .word 0x4e7b, 0x0003": : "r" (localTc): "d0" ); \    } #define PAGE_SIZE_8K 8192#define PAGE_SIZE_4K 4096/******************************************************************************** mmu40LibInit - initialize module** Build a dummy translation table that will hold the page table entries* for the global translation table.  The mmu remains disabled upon* completion.  Note that this routine is global so that it may be referenced* in usrConfig.c to pull in the correct mmuLib for the specific architecture.** RETURNS: OK if no error, ERROR otherwise.** ERRNO: S_mmuLib_INVALID_PAGE_SIZE*/STATUS mmu40LibInit     (    int pageSize	/* system pageSize (4096 or 8192) */    )    {    LEVEL_1_TABLE_DESC *pLevel1Table;    int i;    void *pMem;    /* if the user has not specified a memory partition to obtain pages        from (by initializing mmuPageSource), then initialize mmuPageSource       to the system memory partition.    */    if (mmuPageSource == NULL)	mmuPageSource = memSysPartId;    /* initialize the data objects that are shared with vmLib.c */    mmuStateTransArray = &mmuStateTransArrayLocal [0];    mmuStateTransArraySize =          sizeof (mmuStateTransArrayLocal) / sizeof (STATE_TRANS_TUPLE);    mmuLibFuncs = mmuLibFuncsLocal;    mmuPageBlockSize = PAGE_BLOCK_SIZE;    if ((pageSize != PAGE_SIZE_4K) && (pageSize != PAGE_SIZE_8K))	{	errno = S_mmuLib_INVALID_PAGE_SIZE;	return (ERROR);	}    /* initialize kludgey static data struct for loading tc reg */    localTc.pageSize = (pageSize == PAGE_SIZE_4K) ? 0 : 1;    localTc.enable = 0;    localTc.pad = 0;    /* initialize kludgey static data struct for loading crp reg */    localCrp.addr = 0;    localCrp.pad = 0;    mmuEnabled = FALSE;    mmuPageSize = pageSize;    /* build a dummy translation table which will hold the pte's for     * global memory.  All real translation tables will point to this     * one for controling the state of the global virtual memory       */    /* initialize the lists that hold free memory for table descriptors      * and page descriptors.     */    lstInit (&mmuGlobalTransTbl.freePageDescBlockList);    lstInit (&mmuGlobalTransTbl.freeTableDescBlockList);    lstInit (&mmuGlobalTransTbl.memPageList);    lstInit (&mmuGlobalTransTbl.memBlockList);    lstInit (&mmuGlobalTransTbl.memFreePageList);    /* if pageSize == 4k, then page descriptor array has 64 elements,     * if 8k, then array has 32 elements.     */    pMem = mmuBufBlockAlloc (&mmuGlobalTransTbl.freePageDescBlockList, 		 sizeof (PAGE_DESC) * ((mmuPageSize == PAGE_SIZE_4K) ? 64 : 32),		 &mmuGlobalTransTbl);    if (pMem == NULL)	return (NULL);    /* pMem points to a physical page that we allocate page descriptor blocks     * out of - add it to the translation table's list of pages that it owns.     */    lstAdd (&mmuGlobalTransTbl.memPageList, (NODE *) pMem);    /* both level 1 and level 2 table descriptor arrays have 128 elements */    pMem = mmuBufBlockAlloc (&mmuGlobalTransTbl.freeTableDescBlockList, 		  sizeof (LEVEL_1_TABLE_DESC) * NUM_LEVEL_1_TABLE_DESCRIPTORS,		  &mmuGlobalTransTbl);    if (pMem == NULL)	return (NULL);    /* pMem points to a physical page that we allocate table descriptor blocks     * out of - add it to the translation table's list of pages that it owns.     */    lstAdd (&mmuGlobalTransTbl.memPageList, (NODE *) pMem);    /* allocate memory to hold the level 1 descriptor array  - we can get it     * from the freeTableDescBlockList since the level 1 tables are the same     * size as the level 2 tables.     */    mmuGlobalTransTbl.pLevel1 = pLevel1Table =       (LEVEL_1_TABLE_DESC *) lstGet (&mmuGlobalTransTbl.freeTableDescBlockList);    if (pLevel1Table == NULL)	return (ERROR);	    /* invalidate all the level 1 descriptors */    for (i = 0; i < NUM_LEVEL_1_TABLE_DESCRIPTORS; i++)	{	pLevel1Table[i].addr = -1;	pLevel1Table[i].used = 0; 	pLevel1Table[i].writeProtect = 0; 	pLevel1Table[i].udt = UDT_INVALID; 	}    return (OK);    }/******************************************************************************** mmuMemPagesWriteEnable - write enable the memory holding a table's descriptors** Each translation table has a linked list of physical pages that contain its* table and page descriptors.  Before you can write into any descriptor, you* must write enable the page it is contained in.  This routine enables all* the pages used by a given translation table.**/LOCAL void mmuMemPagesWriteEnable    (    MMU_TRANS_TBL_ID transTbl    )    {    void *thisPage;     thisPage = (void *) lstFirst (&transTbl->memPageList);    while (thisPage != NULL)	{	mmuStateSet (transTbl, thisPage, MMU_STATE_MASK_WRITABLE, 		     MMU_STATE_WRITABLE);	thisPage = (void *) lstNext ((NODE *) thisPage);	}    }/******************************************************************************** mmuMemPagesWriteDisable - write disable memory holding a table's descriptors ** Memory containing translation table descriptors is marked as read only* to protect the descriptors from being corrupted.  This routine write protects* all the memory used to contain a given translation table's descriptors.**/LOCAL void mmuMemPagesWriteDisable    (    MMU_TRANS_TBL *transTbl    )    {    void *thisPage;     thisPage = (void *) lstFirst (&transTbl->memPageList);    while (thisPage != NULL)	{	mmuStateSet (transTbl, thisPage, MMU_STATE_MASK_WRITABLE, 		     MMU_STATE_WRITABLE_NOT);#if	(CPU == MC68060)	/*	 * The MC68060 does not use the data cache when performing a table	 * search because of the tablewalker unit is interfaced directly to	 * the Bus controller. Therefore translation tables must always be	 * placed in writethrough space.	 */	mmuStateSet (transTbl, thisPage, MMU_STATE_MASK_CACHEABLE,		     MMU_STATE_CACHEABLE_WRITETHROUGH);#endif	/* (CPU == MC68060) */	thisPage = (void *) lstNext ((NODE *) thisPage);	}    }/******************************************************************************** mmuPageDescGet - get the page descriptor for a given page** mmuPageDescGet traverses a translation table and returns the (physical) * address of the page descriptor for the given virtual address.** RETURNS: OK or ERROR if there is no virtual space for the given address **/LOCAL STATUS mmuPageDescGet     (    MMU_TRANS_TBL *pTransTbl, 	/* translation table */    void *virtAddr,		/* virtual address */     PAGE_DESC **result		/* result is returned here */    )    {    LEVEL_1_TABLE_DESC *pLevel1;    LEVEL_2_TABLE_DESC *pLevel2;    PAGE_DESC *pPageDescTable;    UINT level1Index = LEVEL_1_TABLE_INDEX (virtAddr);    UINT level2Index = LEVEL_2_TABLE_INDEX (virtAddr);    UINT pageDescTableIndex = PAGE_DESC_TABLE_INDEX (virtAddr);    pLevel1 = &pTransTbl->pLevel1[level1Index];    if (pLevel1->udt == UDT_INVALID)	return (ERROR);    pLevel2 = &(((LEVEL_2_TABLE_DESC *)(pLevel1->addr << 9))[level2Index]);     if (pLevel2->generic.udt == UDT_INVALID)	return (ERROR);    pPageDescTable = (PAGE_DESC *) ((mmuPageSize == PAGE_SIZE_4K) ? 		     (pLevel2->pageSize4k.addr << 8) :		     (pLevel2->pageSize8k.addr << 7));    *result = &pPageDescTable[pageDescTableIndex];    return (OK);    }/******************************************************************************** mmuTransTblCreate - create a new translation table.** create a 68040 or 68060 translation table.  Allocates space for the* MMU_TRANS_TBL data structure and calls mmuTransTblInit on that object.  ** RETURNS: address of new object or NULL if allocation failed,*          or NULL if initialization failed.*/LOCAL MMU_TRANS_TBL *mmuTransTblCreate     (    )    {    MMU_TRANS_TBL *newTransTbl;    newTransTbl = (MMU_TRANS_TBL *) malloc (sizeof (MMU_TRANS_TBL));    if (newTransTbl == NULL)	return (NULL);    if (mmuTransTblInit (newTransTbl) == ERROR)	{	free ((char *) newTransTbl);	return (NULL);	}    return (newTransTbl);    }/******************************************************************************** mmuTransTblInit - initialize a new translation table ** Initialize a new translation table.  The level 1 table is copyed from the* global translation mmuGlobalTransTbl, so that we* will share the global virtual memory with all* other translation tables.* * RETURNS: OK or ERROR if unable to allocate memory. */LOCAL STATUS mmuTransTblInit     (    MMU_TRANS_TBL *newTransTbl		/* translation table to be inited */    )    {    LEVEL_1_TABLE_DESC *pLevel1Table;    void *pMem;    lstInit (&newTransTbl->memPageList);    lstInit (&newTransTbl->memBlockList);    lstInit (&newTransTbl->memFreePageList);    /* initialize the lists that hold free memory for table descriptors      * and page descriptors.     */    lstInit (&newTransTbl->freePageDescBlockList);    lstInit (&newTransTbl->freeTableDescBlockList);    /* add buffers to the free page descriptor list */    /* if pageSize == 4k, then page descriptor array has 64 elements,     * if 8k, then array has 32 elements.     */    pMem = mmuBufBlockAlloc (&newTransTbl->freePageDescBlockList, 	      sizeof (PAGE_DESC) * ((mmuPageSize == PAGE_SIZE_4K) ? 64 : 32),	      newTransTbl);    if (pMem == NULL)	return (ERROR);    /* pMem points to a physical page that we allocate page descriptor blocks     * out of - add it to the translation table's list of pages that it owns.     */    lstAdd (&newTransTbl->memPageList, (NODE *) pMem);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区精品在线播放| 日韩欧美国产wwwww| 成人av电影在线网| 粗大黑人巨茎大战欧美成人| 国产乱子轮精品视频| 国产一区二区在线影院| 国产一区二区三区视频在线播放| 久久9热精品视频| 国产一区二区影院| 国产精品乡下勾搭老头1| 国产精品中文字幕欧美| 国产成人在线看| 成人不卡免费av| 91久久精品一区二区| 欧美日韩一级大片网址| 欧美日本国产一区| 欧美成人r级一区二区三区| 2欧美一区二区三区在线观看视频| 精品国产乱码久久久久久老虎| 精品久久国产老人久久综合| 久久影院电视剧免费观看| 国产日韩欧美高清| 亚洲欧美视频在线观看| 午夜精品福利一区二区蜜股av| 日本成人在线视频网站| 国产精品自拍一区| 成人黄色777网| 欧美无乱码久久久免费午夜一区 | 色综合婷婷久久| 在线欧美日韩国产| 欧美日韩国产电影| 久久久一区二区三区捆绑**| 中文字幕一区免费在线观看| 亚洲成人av一区二区三区| 精品一区二区三区蜜桃| heyzo一本久久综合| 在线观看视频欧美| 精品国产欧美一区二区| 国产精品女主播av| 一区二区三区四区亚洲| 久久精品国产成人一区二区三区 | 欧美精品黑人性xxxx| 欧美成va人片在线观看| 1024亚洲合集| 日本中文字幕一区| 成人手机在线视频| 51久久夜色精品国产麻豆| 日本一区二区三区国色天香 | 国产91清纯白嫩初高中在线观看| 91婷婷韩国欧美一区二区| 91精品国产综合久久福利| 国产午夜精品一区二区三区嫩草| 夜夜精品视频一区二区| 国产精品综合一区二区| 欧美日韩免费视频| 国产精品素人一区二区| 五月婷婷综合在线| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 成人午夜免费av| 宅男噜噜噜66一区二区66| 欧美激情一区在线观看| 日韩精品五月天| 97久久超碰国产精品| 欧美精品一区二| 色呦呦网站一区| 日韩欧美一区二区三区在线| 亚洲日本免费电影| 国产精品一区专区| 69久久夜色精品国产69蝌蚪网| 欧美国产日韩亚洲一区| 青椒成人免费视频| 欧美在线一区二区| 国产精品福利一区| 国产精品一区二区免费不卡 | 精品国产免费久久| 午夜av一区二区三区| 色诱亚洲精品久久久久久| 久久久三级国产网站| 久久精品国产久精国产| 欧美肥胖老妇做爰| 亚洲欧美另类久久久精品| 国产suv精品一区二区6| 精品国产免费久久| 另类小说一区二区三区| 欧美日韩激情一区| 一区二区免费在线| 色综合视频在线观看| 中文字幕av一区二区三区高| 精品一区二区三区免费观看| 91精品国产综合久久久蜜臀图片| 亚洲综合色丁香婷婷六月图片| 99久久免费国产| 国产精品进线69影院| 成人黄色片在线观看| 国产婷婷一区二区| 国产成人在线影院| 中文字幕欧美三区| 成人中文字幕在线| 国产精品美女久久久久高潮| 国产69精品久久99不卡| 国产精品无码永久免费888| 国产美女视频91| 久久精品夜夜夜夜久久| 国产69精品久久777的优势| 欧美国产禁国产网站cc| 99久久99久久精品免费观看| 亚洲日本va午夜在线电影| av福利精品导航| 亚洲男人的天堂av| 欧美体内she精高潮| 天使萌一区二区三区免费观看| 欧美日韩国产高清一区二区| 日本亚洲电影天堂| 精品日韩成人av| 国产精品自拍av| 中文字幕免费一区| 97精品国产97久久久久久久久久久久| 亚洲日本在线观看| 欧美三级视频在线观看| 性感美女极品91精品| 欧美一级高清片在线观看| 国内外成人在线| 中文字幕亚洲欧美在线不卡| 91网站最新地址| 日韩影院免费视频| 日韩精品在线网站| 成人手机电影网| 亚洲午夜久久久久久久久电影网| 欧美日韩dvd在线观看| 久久精品国产77777蜜臀| 国产午夜精品理论片a级大结局| 99国内精品久久| 亚洲国产精品一区二区久久恐怖片| 欧美日韩久久不卡| 国产在线精品一区二区不卡了| 日本一区二区综合亚洲| 日本精品视频一区二区三区| 日韩高清一区二区| 国产欧美1区2区3区| 一本到高清视频免费精品| 男人的j进女人的j一区| 国产精品美女久久久久久久久| 欧美日韩极品在线观看一区| 国产一区二区毛片| 亚洲黄色尤物视频| 欧美成人在线直播| 9色porny自拍视频一区二区| 亚洲高清免费视频| 日本一区二区三区四区在线视频| 日本精品免费观看高清观看| 蜜桃一区二区三区四区| 最好看的中文字幕久久| 欧美一级黄色录像| 色综合亚洲欧洲| 极品少妇一区二区三区精品视频| 国产精品国产三级国产aⅴ原创 | 日韩黄色免费电影| 欧美色网一区二区| 国产在线国偷精品产拍免费yy| 日韩一区二区在线播放| 大陆成人av片| 麻豆一区二区三| 亚洲女人****多毛耸耸8| 精品国产污污免费网站入口 | 精品久久国产老人久久综合| 91丨porny丨国产| 韩日精品视频一区| 午夜精品一区在线观看| 国产精品不卡一区| 久久综合九色综合欧美就去吻| 欧美三级韩国三级日本三斤| 成人网页在线观看| 国产精品影视天天线| 日本网站在线观看一区二区三区| 日韩伦理免费电影| 欧美激情艳妇裸体舞| 91精品福利在线一区二区三区 | 亚洲欧洲一区二区三区| 欧美本精品男人aⅴ天堂| 欧美色视频在线观看| 成人aaaa免费全部观看| 韩国理伦片一区二区三区在线播放| 亚洲一级二级三级在线免费观看| 国产精品女人毛片| 久久婷婷综合激情| 欧美电影免费观看高清完整版在线| 欧美三级在线播放| 一本大道久久a久久综合| 成人高清视频在线| 国产成人a级片| 国产一区欧美二区| 韩国三级中文字幕hd久久精品| 日韩成人午夜精品| 性做久久久久久免费观看欧美| 一区二区三区精品在线观看| 中文字幕日本不卡| 国产精品人成在线观看免费| 国产视频一区二区三区在线观看| 欧美大片国产精品| 日韩一区二区不卡|