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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mmu40lib.c

?? vxworks的源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
    /* reset the transparent translation registers */    if (enable && firstTime)	{	cacheClear (DATA_CACHE, NULL, ENTIRE_CACHE);	/* from Heurikon */	__asm__ ("movel #0, d0; "		 ".word 0x4e7b, 0x0004; "   /* movec d0, ITT0 */		 ".word 0x4e7b, 0x0005; "   /* movec d0, ITT1 */		 ".word 0x4e7b, 0x0006; "   /* movec d0, DTT0 */		 ".word 0x4e7b, 0x0007; "   /* movec d0, DTT1 */		 :		/* outputs */		 :		/* inputs */		 : "d0"		/* temps */		 );	firstTime = FALSE;	}    return (OK);    }/******************************************************************************** mmuStateSet - set state of virtual memory page** mmuStateSet is used to modify the state bits of the pte for the given* virtual page.  The following states are provided:** MMU_STATE_VALID       MMU_STATE_VALID_NOT      vailid/invalid* MMU_STATE_WRITABLE    MMU_STATE_WRITABLE_NOT   writable/writeprotected* MMU_STATE_CACHEABLE   MMU_STATE_CACHEABLE_NOT  notcachable/cachable** these may be or'ed together in the state parameter.  The 68040 and 68060* provides several caching modes, so the following cache states are provided* which may be substituted for MMU_STATE_CACHEABLE/MMU_STATE_CACHEABLE_NOT:** MMU_STATE_CACHEABLE_WRITETHROUGH          * MMU_STATE_CACHEABLE_COPYBACK             * MMU_STATE_CACHEABLE_NOT_SERIAL		(MC68040 only)* MMU_STATE_CACHEABLE_NOT_NON_SERIAL		(MC68040 only)* MMU_STATE_CACHEABLE_NOT_PRECISE		(MC68060 only)* MMU_STATE_CACHEABLE_NOT_IMPRECISE		(MC68060 only)** MMU_STATE_CACHEABLE is equivalent to MMU_STATE_CACHEABLE_COPYBACK, and* MMU_STATE_CACHEABLE_NOT is equivalent to MMU_STATE_CACHEABLE_NOT_SERIAL or* MMU_STATE_CACHEABLE_NOT_PRECISE.* See the MC68040 or MC68060 32-bit Microprocessor User's Manual for* additional information.* * Additionally, masks are provided so that only specific states may be set:** MMU_STATE_MASK_VALID* MMU_STATE_MASK_WRITABLE* MMU_STATE_MASK_CACHEABLE** These may be or'ed together in the stateMask parameter.  ** Accesses to a virtual page marked as invalid will result in a bus error.** RETURNS: OK or ERROR if virtual page does not exist.*/LOCAL STATUS mmuStateSet     (    MMU_TRANS_TBL *transTbl, 	/* translation table */    void *pageAddr,		/* page whose state to modify */     UINT stateMask,		/* mask of which state bits to modify */    UINT state			/* new state bit values */    )    {    PAGE_DESC *pageDesc;    FAST UINT *pageDescBits;    FAST int oldIntLev;    if (mmuPageDescGet (transTbl, pageAddr, &pageDesc) != OK)	return (ERROR);    /* modify the pte with mmu turned off and interrupts locked out */    pageDescBits = (UINT *) pageDesc;    /* XXX can't dynamically turn mmu on and off if virtual stack */    /* only way is if you make mmuEnable inline and guarantee that this       code is in physical memory  */    if (mmuEnabled)	{	oldIntLev = intLock ();  	mmuEnableInline(FALSE);	*pageDescBits = (*pageDescBits & ~stateMask) | (state & stateMask);	mmuEnableInline(TRUE);	intUnlock (oldIntLev);	}    else	*pageDescBits = (*pageDescBits & ~stateMask) | (state & stateMask);    mmuATCFlush (pageAddr);    cacheClear (DATA_CACHE, (void *) pageDescBits, sizeof (*pageDescBits));    return (OK);    }/******************************************************************************** mmuStateGet - get state of virtual memory page** mmuStateGet is used to retrieve the state bits of the pte for the given* virtual page.  The following states are provided:** VM_STATE_VALID 	VM_STATE_VALID_NOT	 vailid/invalid* VM_STATE_WRITABLE 	VM_STATE_WRITABLE_NOT	 writable/writeprotected* VM_STATE_CACHEABLE 	VM_STATE_CACHEABLE_NOT	 notcachable/cachable** these are or'ed together in the returned state.  Additionally, masks* are provided so that specific states may be extracted from the returned state:** VM_STATE_MASK_VALID * VM_STATE_MASK_WRITABLE* VM_STATE_MASK_CACHEABLE** RETURNS: OK or ERROR if virtual page does not exist.*/LOCAL STATUS mmuStateGet     (    MMU_TRANS_TBL *transTbl, 	/* tranlation table */    void *pageAddr, 		/* page whose state we're querying */    UINT *state			/* place to return state value */    )    {    PAGE_DESC *pageDesc;    FAST UINT *pageDescBits;    if (mmuPageDescGet (transTbl, pageAddr, &pageDesc) != OK)	return (ERROR);    pageDescBits = (UINT *) pageDesc;    *state = *pageDescBits;     return (OK);    }/******************************************************************************** mmuPageMap - map physical memory page to virtual memory page** The physical page address is entered into the pte corresponding to the* given virtual page.  The state of a newly mapped page is undefined. ** RETURNS: OK or ERROR if translation table creation failed. */LOCAL STATUS mmuPageMap     (    MMU_TRANS_TBL *transTbl, 	/* translation table */    void *virtualAddress, 	/* virtual address */    void *physPage		/* physical address */    )    {    PAGE_DESC *pageDesc;    if (mmuPageDescGet (transTbl, virtualAddress, &pageDesc) != OK)	{	/* build the translation table for the virtual address */	if (mmuVirtualPageCreate (transTbl, virtualAddress) != OK)	    return (ERROR);	if (mmuPageDescGet (transTbl, virtualAddress, &pageDesc) != OK)	    return (ERROR);	}    mmuMemPagesWriteEnable (transTbl);    if (mmuPageSize == PAGE_SIZE_4K)	pageDesc->pageSize4k.addr = (UINT) physPage >> 12;    else	pageDesc->pageSize8k.addr = (UINT) physPage >> 13;    mmuMemPagesWriteDisable (transTbl);    mmuATCFlush (virtualAddress);    cacheClear (DATA_CACHE, pageDesc, sizeof (*pageDesc));    return (OK);    }/******************************************************************************** mmuGlobalPageMap - map physical memory page to global virtual memory page** mmuGlobalPageMap is used to map physical pages into global virtual memory* that is shared by all virtual memory contexts.  The translation tables* for this section of the virtual space are shared by all virtual memory* contexts.** RETURNS: OK or ERROR if no pte for given virtual page.*/LOCAL STATUS mmuGlobalPageMap     (    void *virtualAddress, 	/* virtual address */    void *physPage		/* physical address */    )    {    PAGE_DESC *pageDesc;    if (mmuPageDescGet (&mmuGlobalTransTbl, virtualAddress, &pageDesc) != OK)	{	/* build the translation table for the virtual address */	if (mmuVirtualPageCreate (&mmuGlobalTransTbl, virtualAddress) != OK)	    return (ERROR);	if (mmuPageDescGet(&mmuGlobalTransTbl, virtualAddress, &pageDesc) != OK)	    return (ERROR);	}    mmuMemPagesWriteEnable (&mmuGlobalTransTbl);    if (mmuPageSize == PAGE_SIZE_4K)	pageDesc->pageSize4k.addr = (UINT) physPage >> 12;    else	pageDesc->pageSize8k.addr = (UINT) physPage >> 13;    mmuMemPagesWriteDisable (&mmuGlobalTransTbl);    mmuATCFlush (virtualAddress);    cacheClear (DATA_CACHE, pageDesc, sizeof (*pageDesc));    return (OK);    }/******************************************************************************** mmuTranslate - translate a virtual address to a physical address** Traverse the translation table and extract the physical address for the* given virtual address from the pte corresponding to the virtual address.** RETURNS: OK or ERROR if no pte for given virtual address.*/LOCAL STATUS mmuTranslate     (    MMU_TRANS_TBL *transTbl, 		/* translation table */    void *virtAddress, 			/* virtual address */    void **physAddress			/* place to return result */    )    {    PAGE_DESC *pageDesc;    UINT dt;    if (mmuPageDescGet (transTbl, virtAddress, &pageDesc) != OK)	{	errno = S_mmuLib_NO_DESCRIPTOR; 	return (ERROR);	}    dt = pageDesc->generic.pdt;    if (dt == PDT_INVALID)	{	errno = S_mmuLib_INVALID_DESCRIPTOR; 	return (ERROR);	}    if (mmuPageSize == PAGE_SIZE_4K)	*physAddress = 	     (void *) ((UINT) pageDesc->pageSize4k.addr << 12);    else	*physAddress = 	     (void *) ((UINT) pageDesc->pageSize8k.addr << 13);    /* add offset into page */    *physAddress = (void *) (((UINT) *physAddress) + 		   ((mmuPageSize == PAGE_SIZE_4K) ? 		   ((unsigned) virtAddress & 0xfff) :		   ((unsigned) virtAddress & 0x1fff)));     return (OK);    }/******************************************************************************** mmuCurrentSet - change active translation table** mmuCurrent set is used to change the virtual memory context.* Load the CRP (root pointer) register with the given translation table.**/LOCAL void mmuCurrentSet     (    MMU_TRANS_TBL *transTbl	/* new active tranlation table */    )     {    FAST int oldLev;    static BOOL firstTime = TRUE;    if (firstTime)	{	/* write protect all the pages containing the ptes allocated for	 * the global translation table.  Need to do this cause when this	 * memory is allocated, the global trans tbl doesn't exist yet,	 * so the state sets fail.	 */	mmuMemPagesWriteDisable (&mmuGlobalTransTbl);	mmuMemPagesWriteDisable (transTbl);	firstTime = FALSE;	}    oldLev = intLock ();    localCrp.addr = ((unsigned int) transTbl->pLevel1) >> 9 ;    /* movel localCrp, d0; movec d0, srp */    __asm__ ("movel %0, d0; .word 0x4e7b, 0x0807" : : "r" (localCrp): "d0" );     mmuCurrentTransTbl = transTbl;    /* flush the address translation cache cause we're in a new context */    __asm__ (".word 0xf518");	/* pflusha */    intUnlock (oldLev);    }/******************************************************************************** mmuATCFlush - flush an entry from the address translation cache**/LOCAL void mmuATCFlush     (    void *addr    )    {    __asm__ (	    "movel %0, a0; "	    "movel #1, d0; "	    ".word 0x4e7b, 0x0001; "	/* movec d0, srp */	    ".word 0xf508; "		/* pflush a0 */	    "movel #5, d0; "	    ".word 0x4e7b, 0x0001; "	/* movec d0, srp */	    ".word 0xf508; "		/* pflush a0 */	    :			/* outputs */	    : "r" (addr)	/* inputs */	    : "d0", "a0"	/* temps */	    );    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产aⅴ成人精品无吗| 国产精品久久久久久久浪潮网站| 国产一区二区调教| 久久99久久99精品免视看婷婷 | 成人国产视频在线观看| 国产成人免费视频| 99国产精品国产精品毛片| av不卡在线观看| 91免费国产视频网站| 在线看国产日韩| 欧美喷水一区二区| 精品少妇一区二区三区| 久久综合五月天婷婷伊人| 欧美国产1区2区| 亚洲一区二区三区四区五区黄| 一区二区理论电影在线观看| 亚洲图片有声小说| 粉嫩av一区二区三区| 国产1区2区3区精品美女| 欧美福利视频导航| 日韩一区二区在线免费观看| 久久久午夜精品理论片中文字幕| 《视频一区视频二区| 中文字幕的久久| 国产精品18久久久| 久久综合九色综合97婷婷| 人人爽香蕉精品| 99久久综合国产精品| 国产亲近乱来精品视频 | 欧美性一级生活| 欧美tk—视频vk| 久草精品在线观看| 精品欧美久久久| 久久精品国产精品青草| av在线一区二区| 亚洲欧洲日韩在线| 色欧美乱欧美15图片| 久久久久久久国产精品影院| 国产一区在线看| 国产色一区二区| 日韩中文字幕91| 色爱区综合激月婷婷| 国产日韩欧美在线一区| 国产不卡免费视频| 综合网在线视频| 国产露脸91国语对白| 欧美一卡2卡3卡4卡| 亚洲桃色在线一区| 欧美在线观看视频一区二区| 亚洲国产综合91精品麻豆| 欧美精品电影在线播放| 久久99久国产精品黄毛片色诱| 久久久久久久电影| 色94色欧美sute亚洲线路二| 午夜精品爽啪视频| 欧美视频第二页| 免播放器亚洲一区| 国产日韩综合av| 色综合久久久久| 久久电影网站中文字幕| 中文字幕精品在线不卡| 欧美视频一二三区| 国产ts人妖一区二区| 亚洲天堂久久久久久久| 在线播放中文一区| 国产九色sp调教91| 亚洲精品乱码久久久久久黑人| eeuss鲁片一区二区三区| 亚洲一区二区三区爽爽爽爽爽 | 成人国产精品免费网站| 亚洲在线观看免费| 久久老女人爱爱| 色94色欧美sute亚洲13| 国产精品99久久久久久宅男| 一区二区三区高清| 国产欧美日韩在线观看| 欧美日韩高清影院| av午夜一区麻豆| 久久国产人妖系列| 亚洲成人动漫一区| 欧美一区二区三区小说| 成人av电影免费在线播放| 日韩av电影免费观看高清完整版 | 激情深爱一区二区| 国产欧美一区二区在线观看| 欧美三级中文字幕在线观看| 丝瓜av网站精品一区二区| 国产农村妇女精品| 日韩一区二区三区视频在线观看| gogo大胆日本视频一区| 久久精品国产99久久6| 亚洲一区二区三区四区在线| 国产精品久久毛片| 久久奇米777| 欧美一卡2卡3卡4卡| 欧美色国产精品| 色欧美日韩亚洲| 色婷婷激情久久| av网站一区二区三区| 国产一区二区三区久久久| 首页亚洲欧美制服丝腿| 亚洲精品国产成人久久av盗摄| 国产精品乱码一区二区三区软件| 日本道精品一区二区三区| 成人性生交大片免费看视频在线| 亚洲综合激情网| 亚洲日穴在线视频| 国产精品国产a| 国产精品污网站| 国产欧美日韩不卡| 国产人久久人人人人爽| 久久久五月婷婷| 国产日韩欧美电影| 日本一区二区三区四区| 国产亚洲va综合人人澡精品| 2020国产成人综合网| 精品久久一二三区| 久久色在线视频| 欧美国产日本视频| 日韩理论片一区二区| 成人免费在线播放视频| 亚洲卡通欧美制服中文| 亚洲在线观看免费| 免费人成在线不卡| 久久国产精品区| 国产成人精品影视| 91在线丨porny丨国产| 欧美性生活大片视频| 欧美老女人在线| 精品国产乱码久久| 91精品久久久久久蜜臀| 欧美中文字幕一区二区三区 | 亚洲成年人影院| 日本少妇一区二区| 国产精品中文有码| 成人国产亚洲欧美成人综合网| 99视频一区二区三区| 欧美日韩一区精品| 日韩网站在线看片你懂的| 国产亚洲精品资源在线26u| 亚洲女同ⅹxx女同tv| 国产精品沙发午睡系列990531| 亚洲天堂网中文字| 老司机精品视频线观看86| 久久电影网电视剧免费观看| 大美女一区二区三区| 欧美伦理影视网| 久久综合九色综合欧美就去吻 | 午夜精品久久久久久久久| 精品亚洲porn| 日本精品一区二区三区高清 | 欧美在线视频不卡| 精品少妇一区二区三区视频免付费 | 欧美色老头old∨ideo| 26uuu色噜噜精品一区| 中文字幕亚洲一区二区va在线| 亚洲午夜在线观看视频在线| 国产一区在线观看视频| 色8久久精品久久久久久蜜| 久久亚洲综合av| 一区二区成人在线| 国产成a人亚洲精品| 在线不卡中文字幕播放| 中文字幕在线一区| 视频在线观看一区| 99re免费视频精品全部| 日韩免费电影一区| 2020国产精品| 日日摸夜夜添夜夜添亚洲女人| 成人av网址在线观看| 欧美成人福利视频| 天天综合网 天天综合色| 成人综合婷婷国产精品久久免费| 69久久夜色精品国产69蝌蚪网| 国产精品国产精品国产专区不蜜| 本田岬高潮一区二区三区| 欧美精品在线观看播放| 国产精品黄色在线观看| 国产一区二区不卡在线| 欧美大片一区二区| 亚洲国产精品久久一线不卡| 99久久精品国产导航| wwwwww.欧美系列| 三级久久三级久久| 欧美视频你懂的| 亚洲国产wwwccc36天堂| 色老综合老女人久久久| 亚洲猫色日本管| 99久久99久久精品免费看蜜桃| 国产欧美一区二区在线观看| 精品在线免费观看| 日韩欧美一区二区三区在线| 视频一区二区三区中文字幕| 欧美三电影在线| 亚洲美女淫视频| 欧美在线播放高清精品| 一区二区三区四区高清精品免费观看| 成人av先锋影音| 亚洲精品乱码久久久久久黑人| 91极品视觉盛宴|