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

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

?? mmu440lib.c

?? vxworks的源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
*		to point to MMU_TRANS_TBL pointer.** NOTE: For MMU library internal use only** RETURNS: index of free array element, or -1 for ERROR.*/LOCAL UINT8 mmu440PidAlloc (MMU_TRANS_TBL *transTbl)    {    int i;    for (i = 1; i < MMU_ADDR_MAP_ARRAY_SIZE; i++)        if (mmuAddrMapArray [i] == MMU_ADDR_MAP_ARRAY_INV)	    {	    mmuAddrMapArray [i] = transTbl;	    return i;	    }    return 0;    }/********************************************************************************* mmu440PidFree - Free (mark as invalid) the pid entry** NOTE: For MMU library internal use only**/LOCAL void mmu440PidFree (UINT8 pid)    {    mmuAddrMapArray [pid] = MMU_ADDR_MAP_ARRAY_INV;    }/********************************************************************************* mmu440TlbDynamicInvalidate - invalidate all dynamic tlb entries** Requires a subsequent context-synchronizing event in order to take effect.** NOTE: For MMU library internal use only.*/LOCAL void mmu440TlbDynamicInvalidate (void)    {    UINT32 index;    UINT32 word0;    for (index = mmuPpcTlbMin; index < mmuPpcTlbMax; index++)	{	/* read current entry -- also sets MMUCR[STID] as a side effect */	word0 = mmuPpcTlbReadEntryWord0 (index);	/* clear valid bit */	word0 &= ~(MMU_STATE_VALID << MMU_STATE_VALID_SHIFT);	/* write back entry -- uses MMUCR[STID] as a side effect */	_WRS_ASM("sync");	mmuPpcTlbWriteEntryWord0 (index, word0);	}	    }/********************************************************************************* mmu440MmucrStidSet - set the STID & STS fields of MMUCR** NOTE: For MMU library internal use only.**/LOCAL void mmu440MmucrStidSet    (    UINT32	stid			/* new stid value */    )    {    MMUCR_REG mmucr;    /* set TID, TS */    mmucr.word = mmuPpcMmucrGet();    mmucr.field.stid = stid;    mmucr.field.sts = 1;    mmuPpcMmucrSet(mmucr.word);    }/********************************************************************************* mmu440Tlbie - Invalidate tlb entry for the specified effective addr** NOTE: For MMU library internal use only.**/LOCAL void mmu440Tlbie (    MMU_TRANS_TBL *	pTransTbl,	/* translation table */    void * effAddr			/* EA to invalidate in tlb */    )    {    UINT32 index;    UINT32 word0;    mmu440MmucrStidSet(pTransTbl->pid);    if ((index = mmuPpcTlbSearch (effAddr)) != -1)	{	/* read current entry -- also sets MMUCR[STID] as a side effect */	word0 = mmuPpcTlbReadEntryWord0 (index);	/* clear valid bit */	word0 &= ~(MMU_STATE_VALID << MMU_STATE_VALID_SHIFT);	if (index < mmuPpcTlbMin)	    {	    /* assertion fails! must not invalidate static entries */#if FALSE	/* useful for debugging */	    strcpy(sysExcMsg, "mmu440Tlbie: static TLB entry invalidated\n");	    sysToMonitor(BOOT_WARM_NO_AUTOBOOT);#endif /* FALSE */	    return; /* ERROR! */	    }	/* write back entry -- uses MMUCR[STID] as a side effect */	_WRS_ASM("sync");	mmuPpcTlbWriteEntryWord0 (index, word0);	}	    }/********************************************************************************* mmu440TlbStaticEntrySet - write a static TLB entry** This function writes one MMU TLB Entry based on the given TLB Entry* Description.** CAVEAT: If previously-enabled caching is being disabled, the caller must* pre-flush or pre-invalidate the appropriate cache lines prior to calling* this function.** NOTE: For MMU library internal use only.**/LOCAL void mmu440TlbStaticEntrySet    (    int		     index,	/* index of TLB Entry to set */    TLB_ENTRY_DESC * pTlbDesc,	/* description of TLB Entry to set */    BOOL	     cacheAllow	/* if TRUE allow caching to be turned on */    )    {    LEVEL_2_DESC	lvl2Desc;	/* TLB entry */    /*     * fill in all fields of a LEVEL_2_DESC with data from the     * TLB_ENTRY_DESC. Use that to write the TLB Entry words.     */    lvl2Desc.field.epn = pTlbDesc->effAddr >> MMU_RPN_SHIFT;    lvl2Desc.field.rsvd1 = 0;    lvl2Desc.field.v = 1;		/* valid */    lvl2Desc.field.ts = ((pTlbDesc->attr & _MMU_TLB_TS_1) ? 1 : 0);    lvl2Desc.field.size =	((pTlbDesc->attr & _MMU_TLB_SZ_MASK) >> _MMU_TLB_SZ_SHIFT);    lvl2Desc.field.rsvd2 = 0;    lvl2Desc.field.rpn = pTlbDesc->realAddr >> MMU_RPN_SHIFT;    lvl2Desc.field.rsvd3 = 0;	    lvl2Desc.field.erpn = pTlbDesc->realAddrExt;    lvl2Desc.field.rsvd4 = 0;	    lvl2Desc.field.u0 = 0;		/* user attribute 0 unused */    lvl2Desc.field.u1 = 0;		/* user attribute 1 unused */    lvl2Desc.field.u2 = 0;		/* user attribute 2 unused */    lvl2Desc.field.u3 = 0;		/* user attribute 3 unused */    if (cacheAllow == TRUE)	{	/* cache as desired */	lvl2Desc.field.w = (pTlbDesc->attr & _MMU_TLB_ATTR_W ? 1 : 0);	lvl2Desc.field.i = (pTlbDesc->attr & _MMU_TLB_ATTR_I ? 1 : 0);	}    else	{	/* cache inhibited -- warning, caller must preflush if necessary */	lvl2Desc.field.w = 0;	lvl2Desc.field.i = 1;	}    lvl2Desc.field.m = 0;		/* memory coherent: no effect */    lvl2Desc.field.g = (pTlbDesc->attr & _MMU_TLB_ATTR_G ? 1 : 0);    lvl2Desc.field.e = 0;		/* big endian */    lvl2Desc.field.rsvd5 = 0;	    lvl2Desc.field.ux = 0;		/* user execute off */    lvl2Desc.field.uw = 0;		/* user write off */    lvl2Desc.field.ur = 0;		/* user read off */    lvl2Desc.field.sx = (pTlbDesc->attr & _MMU_TLB_PERM_X ? 1 : 0);    lvl2Desc.field.sw = (pTlbDesc->attr & _MMU_TLB_PERM_W ? 1 : 0);    lvl2Desc.field.sr = 1;		/* supervisor read on */    /*     * static TLB entries are always written with TID 0 so they will     * match for all settings of the PID register.     */    mmu440MmucrStidSet(0);    /* write current entry -- uses MMUCR[STID] as a side effect */    _WRS_ASM("sync");    mmuPpcTlbWriteEntryWord0 (index, lvl2Desc.words.word0);    mmuPpcTlbWriteEntryWord1 (index, lvl2Desc.words.word1);    mmuPpcTlbWriteEntryWord2 (index, lvl2Desc.words.word2);    }#if FALSE /* unused *//********************************************************************************* mmu440TlbStaticEntryGet - read a static TLB entry** This function reads a MMU TLB Entry and composes a TLB Entry* Description.** NOTE: For MMU library internal use only.**/LOCAL void mmu440TlbStaticEntryGet    (    int		     index,	/* index of TLB Entry to get */    TLB_ENTRY_DESC * pTlbDesc	/* pointer to TLB Entry Description to write */    )    {    LEVEL_2_DESC	lvl2Desc;	/* TLB entry */    /* read entry */    lvl2Desc.words.word0 = mmuPpcTlbReadEntryWord0 (index);    lvl2Desc.words.word1 = mmuPpcTlbReadEntryWord1 (index);    lvl2Desc.words.word2 = mmuPpcTlbReadEntryWord2 (index);    /* translate to a TLB_ENTRY_DESC */    pTlbDesc->effAddr = lvl2Desc.field.epn << MMU_RPN_SHIFT;    pTlbDesc->realAddr = lvl2Desc.field.rpn << MMU_RPN_SHIFT;    pTlbDesc->realAddrExt = lvl2Desc.field.erpn;    pTlbDesc->attr = 0;    pTlbDesc->attr |= (lvl2Desc.field.ts ? _MMU_TLB_TS_1 : 0);    pTlbDesc->attr |= lvl2Desc.field.size << _MMU_TLB_SZ_SHIFT;    pTlbDesc->attr |= (lvl2Desc.field.w ? _MMU_TLB_ATTR_W : 0);    pTlbDesc->attr |= (lvl2Desc.field.i ? _MMU_TLB_ATTR_I : 0);    pTlbDesc->attr |= (lvl2Desc.field.g ? _MMU_TLB_ATTR_G : 0);    pTlbDesc->attr |= (lvl2Desc.field.sx ? _MMU_TLB_PERM_X : 0);    pTlbDesc->attr |= (lvl2Desc.field.sw ? _MMU_TLB_PERM_W : 0);    }#endif /* FALSE - unused *//********************************************************************************* mmu440TlbStaticInit - initialize all static TLB entries** This function initializes MMU TLB Entries from the supplied array of* TLB Entry Descriptions.** CAVEAT: If previously-enabled caching is being disabled, the caller must* pre-flush or pre-invalidate the appropriate cache lines prior to calling* this function.** NOTE: For MMU library internal use only.**/LOCAL void mmu440TlbStaticInit    (    int		     numDescs,	/* number of TLB Entry Descriptors */    TLB_ENTRY_DESC * pTlbDesc,	/* pointer to array of TLB Entries */    BOOL	     cacheAllow	/* if TRUE, caching will be enabled */    )    {    UINT32		index;		/* current index being init'ed */    for (index = 0; index < numDescs; index++, pTlbDesc++)	mmu440TlbStaticEntrySet(index, pTlbDesc, cacheAllow);    }/********************************************************************************* mmu440Show - show the level 1 and 2 descriptor for and effective address** NOTE: For MMU library debug only*/void mmu440Show    (    MMU_TRANS_TBL *	pTransTbl,		/* translation table */    void *		effectiveAddr		/* effective address */    )    {    LEVEL_1_DESC *	pLvl1Desc;	/* level 1 descriptor address */    LEVEL_2_DESC *	pLvl2Desc;	/* level 2 descriptor address */    if (pTransTbl == NULL)	pTransTbl = mmuGlobalTransTbl;    /* get the level 1 descriptor address */    pLvl1Desc = mmu440Lvl1DescAddrGet (pTransTbl, effectiveAddr);    printf ("Level 1:\n");    printf ("l2ba      = 0x%x\n", pLvl1Desc->field.l2ba);    printf ("v         = %d\n", pLvl1Desc->field.v);    if (mmu440Lvl2DescAddrGet (pTransTbl, effectiveAddr, &pLvl2Desc) != OK)	return ;    printf ("\n\n");    printf ("Level 2:\n");    printf ("epn       = 0x%x\n", pLvl2Desc->field.epn);    printf ("v         = %d\n", pLvl2Desc->field.v);    printf ("ts        = %d\n", pLvl2Desc->field.ts);    printf ("size      = 0x%x\n", pLvl2Desc->field.size);    printf ("\n");    printf ("rpn       = 0x%x\n", pLvl2Desc->field.rpn);    printf ("erpn      = 0x%x\n", pLvl2Desc->field.erpn);    printf ("\n");    printf ("u0,1,2,3  = %d,%d,%d,%d\n", pLvl2Desc->field.u0,	pLvl2Desc->field.u1, pLvl2Desc->field.u2, pLvl2Desc->field.u3);    printf ("w,i,m,g,e = %d,%d,%d,%d,%d\n", pLvl2Desc->field.w,	pLvl2Desc->field.i, pLvl2Desc->field.m, pLvl2Desc->field.g,	pLvl2Desc->field.e);    printf ("ux,uw,ur  = %d,%d,%d\n", pLvl2Desc->field.ux,	pLvl2Desc->field.uw, pLvl2Desc->field.ur);    printf ("sx,sw,sr  = %d,%d,%d\n", pLvl2Desc->field.sx,	pLvl2Desc->field.sw, pLvl2Desc->field.sr);    }/******************************************************************************** mmu440TlbShow - Show 440 TLB Entry contents** RETURNS: nothing*/void mmu440TlbShow (void)    {    int	ix;    UINT32 word0, word1, word2;    for (ix=0; ix<64; ix++)	{	word0 = mmuPpcTlbReadEntryWord0 (ix);	word1 = mmuPpcTlbReadEntryWord1 (ix);	word2 = mmuPpcTlbReadEntryWord2 (ix);	printf ("TLB entry %02d : %8x %8x %8x\n", ix, word0, word1, word2);	}    }#ifdef DEBUG_MISS_HANDLER/******************************************************************************** mmu440MetricsShow - Show Miss Handler metrics for debugging** OPTIONS:*	0 or 3 for I-MMU and D-MMU (long)*	1      for I-MMU only (long)*	2      for D-MMU only (long)*	4 or 7 for all metrics (short)*	5      for I-MMU only (short)*	6      for D-MMU only (short)** RETURNS: nothing*/void mmu440MetricsShow    (    UINT32 option    )    {    int		i;		/* index into miss array */    int		firsttime;    UINT32	effAdrs;	/* effective address from miss array */    if (option == 0)	option = 3;    if (option == 4)	option = 7;    if (option & 1)	{	printf ("I-MMU: %d misses, %d errors.",	    mmuPpcITlbMisses, mmuPpcITlbErrors);	if ((option & 4) == 0)	    {	    if (mmuPpcITlbMisses > 0)		printf(" recent misses:");	    i = (int)mmuPpcITlbMisses - 256;	    i = max(0, i);	    for (firsttime=1; i < mmuPpcITlbMisses; i++)		{		if (i % 8 == 0 || firsttime)		    {		    printf("\n %3d ", i);		    firsttime = 0;		    }		effAdrs = mmuPpcITlbMissArray[i % 256] & 0xfffffc00;		printf(" %8x", effAdrs);		}	    }	printf("\n");	}    if (option & 2)	{	printf ("D-MMU: %d misses, %d errors.",	    mmuPpcDTlbMisses, mmuPpcDTlbErrors);	if ((option & 4) == 0)	    {	    if (mmuPpcDTlbMisses > 0)		printf(" recent misses:");	    i = (int)mmuPpcDTlbMisses - 256;	    i = max(0, i);	    for (firsttime=1; i < mmuPpcDTlbMisses; i++)		{		if (i % 8 == 0 || firsttime)		    {		    printf("\n %3d ", i);		    firsttime=0;		    }		effAdrs = mmuPpcDTlbMissArray[i % 256] & 0xfffffc00;		printf(" %8x", effAdrs);		}	    }	printf("\n");	}    }#endif /* DEBUG_MISS_HANDLER */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久草在线在线精品观看| 日韩主播视频在线| 成人午夜视频在线观看| 国产精品视频免费看| 91在线国产福利| 一区二区三区波多野结衣在线观看| 在线日韩av片| 蜜桃视频一区二区三区 | 99久久夜色精品国产网站| 国产精品久久久久久久久快鸭 | 另类调教123区| 久久久亚洲精品石原莉奈| jlzzjlzz亚洲日本少妇| 亚洲欧美另类小说| 日韩一级高清毛片| 高清不卡一区二区| 性久久久久久久| 26uuu国产日韩综合| 91免费视频网| 免费成人美女在线观看.| 国产片一区二区| 欧美三区免费完整视频在线观看| 精品中文字幕一区二区小辣椒| 亚洲小说春色综合另类电影| 日韩一区二区三| 91原创在线视频| 免费在线观看视频一区| 亚洲欧洲性图库| 日韩写真欧美这视频| 91亚洲资源网| 久久国产精品一区二区| 夜夜精品浪潮av一区二区三区| 欧美变态口味重另类| 一本久久综合亚洲鲁鲁五月天| 男男gaygay亚洲| 一区二区欧美在线观看| 精品国产露脸精彩对白| 欧美在线不卡视频| 岛国精品在线播放| 久久精品国产亚洲aⅴ| 一区二区三区四区激情 | 欧美日产国产精品| av影院午夜一区| 久久99久久久久久久久久久| 亚洲国产中文字幕| 国产精品区一区二区三| 精品理论电影在线观看| 欧美美女网站色| 色综合天天综合| 欧美日韩国产免费| 成人福利视频在线| 国产一区二区三区在线看麻豆| 亚洲成人久久影院| 亚洲精品免费视频| 国产精品色婷婷久久58| 久久亚洲精品小早川怜子| 欧美日韩精品是欧美日韩精品| 色综合久久久久综合体| 成人av网址在线观看| 国产乱码精品一区二区三区忘忧草 | 久草在线在线精品观看| 日韩vs国产vs欧美| 午夜电影网亚洲视频| 亚洲一卡二卡三卡四卡无卡久久| 国产精品毛片a∨一区二区三区| 精品成人一区二区三区四区| 日韩欧美一二三区| 欧美一级久久久| 717成人午夜免费福利电影| 一区二区三区四区国产精品| 亚洲丝袜美腿综合| 欧美精品一区在线观看| 日韩视频免费观看高清完整版 | 亚洲国产另类av| 一区二区三区在线观看欧美 | 欧美中文字幕不卡| 在线看日本不卡| 欧美性一区二区| 欧美三级电影网站| 欧美最猛黑人xxxxx猛交| 91九色最新地址| 欧美群妇大交群的观看方式| 中文字幕视频一区| 亚洲欧美经典视频| 亚洲成av人影院在线观看网| 亚洲成人精品在线观看| 久久精品国产免费看久久精品| 老司机精品视频在线| 国内精品视频666| 国产成a人亚洲| 99精品视频在线观看| 在线观看免费亚洲| 91精品国产综合久久福利| 精品剧情在线观看| 国产精品久久一卡二卡| 亚洲一区在线电影| 青青草视频一区| 粉嫩久久99精品久久久久久夜| 97se亚洲国产综合在线| 欧美男生操女生| 久久综合国产精品| 综合av第一页| 奇米色一区二区| 成人av高清在线| 亚洲一区二区三区四区五区黄| 亚洲综合色在线| 日本vs亚洲vs韩国一区三区 | www一区二区| 国产精品久久久久久久久图文区| 亚洲三级久久久| 蜜臀av一级做a爰片久久| 成人免费观看av| 欧美日韩精品一区二区天天拍小说 | 色综合咪咪久久| 日韩欧美久久一区| 国产精品传媒视频| 免费在线成人网| 不卡一区在线观看| 91精品久久久久久久久99蜜臂| 久久精品日韩一区二区三区| 一区二区三区在线观看动漫| 久久爱另类一区二区小说| 成人a免费在线看| 欧美一二三区精品| 亚洲日本电影在线| 国内不卡的二区三区中文字幕 | 亚洲成人黄色影院| 国产99久久久国产精品潘金| 欧美性受xxxx黑人xyx| 国产日韩欧美制服另类| 午夜成人免费视频| 91在线你懂得| 国产人伦精品一区二区| 成人国产在线观看| 日韩一级二级三级| 亚洲国产一区二区视频| 处破女av一区二区| 欧美成人三级在线| 日日夜夜一区二区| 欧亚洲嫩模精品一区三区| 国产精品卡一卡二| 国产成人免费视频一区| 日韩精品一区二区三区中文不卡| 亚洲六月丁香色婷婷综合久久| 国产丶欧美丶日本不卡视频| 日韩精品一区二区三区老鸭窝| 亚洲国产综合91精品麻豆| 色婷婷精品大在线视频| 国产精品乱人伦中文| 国产东北露脸精品视频| 久久久久9999亚洲精品| 黑人巨大精品欧美一区| 日韩一区二区电影网| 日韩国产精品久久久久久亚洲| 欧美亚洲国产一区二区三区va| 亚洲欧美国产毛片在线| 91尤物视频在线观看| 综合色中文字幕| 北岛玲一区二区三区四区| 国产午夜精品一区二区| 国产成人a级片| 日本一区二区视频在线| 成人黄色综合网站| 中文字幕在线一区| av动漫一区二区| 亚洲色图在线看| 91久久香蕉国产日韩欧美9色| 亚洲激情图片qvod| 欧美三级视频在线观看| 亚洲成av人片一区二区梦乃| 欧美剧情电影在线观看完整版免费励志电影 | 91色视频在线| 一区二区三区在线观看动漫| 在线观看免费视频综合| 亚洲欧美日韩综合aⅴ视频| 一本久久综合亚洲鲁鲁五月天| 亚洲精品视频观看| 欧美日韩一区二区三区高清 | 美女视频一区在线观看| 日韩区在线观看| 经典三级视频一区| 国产精品乱码人人做人人爱| 色综合久久中文字幕综合网 | 欧美一区二区三区四区视频 | 国产成人免费xxxxxxxx| 中文久久乱码一区二区| 91国偷自产一区二区开放时间 | 精品系列免费在线观看| 久久精品一区二区三区不卡牛牛| 国产99久久精品| 亚洲欧美日韩在线| 在线不卡中文字幕| 国产精品综合在线视频| 成人免费在线播放视频| 欧美精品视频www在线观看| 国产一区二区免费视频| 亚洲精品视频免费看| 日韩免费电影网站| 欧美xxxxxxxx| 色综合久久天天综合网|