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

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

?? cachearchlib.c

?? vxworks的源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
** cacheArchClear - clear (flush and invalidate) entries from an ARM cache** This routine clears some or all entries from the specified ARM cache.** RETURNS: OK, or ERROR if the cache type is invalid or the cache control* is not supported.** NOMANUAL*/LOCAL STATUS cacheArchClear    (    CACHE_TYPE	cache,		/* cache to clear */    void *	address,	/* address to clear */    size_t	bytes		/* bytes to clear */    )    {    if (cacheProbe (cache) != OK)	return ERROR;		/* invalid cache */#if ((ARMCACHE == ARMCACHE_710A) || (ARMCACHE == ARMCACHE_720T) || \     (ARMCACHE == ARMCACHE_740T))    cacheDClearAll ();	/* also drains write-buffer */#endif#if ((ARMCACHE == ARMCACHE_810)    || (ARMCACHE == ARMCACHE_SA110)  || \     (ARMCACHE == ARMCACHE_SA1100) || (ARMCACHE == ARMCACHE_SA1500) || \     (ARMCACHE == ARMCACHE_920T)   || (ARMCACHE == ARMCACHE_926E)   || \     (ARMCACHE == ARMCACHE_940T)   || (ARMCACHE == ARMCACHE_946E)   || \     (ARMCACHE == ARMCACHE_XSCALE) || (ARMCACHE == ARMCACHE_1020E)  || \     (ARMCACHE == ARMCACHE_1022E))    if (cache == DATA_CACHE)	if ((bytes == ENTIRE_CACHE) ||#if (ARMCACHE == ARMCACHE_810)	/*	 * On 810, to flush an individual address, we actually end up	 * flushing much more. If the address range corresponds to 8	 * segments or more, we might as well do the lot and be done with	 * it.	 */	    (bytes >= (_CACHE_ALIGN_SIZE * 8)))#endif /* (ARMCACHE == ARMCACHE_810) */#if (ARMCACHE == ARMCACHE_940T)	    /* similar arguments on 940T, for 4 segments or more */	    (bytes >= (_CACHE_ALIGN_SIZE * 4)))#endif#if ((ARMCACHE == ARMCACHE_SA110)  || (ARMCACHE == ARMCACHE_SA1100) || \     (ARMCACHE == ARMCACHE_SA1500) || (ARMCACHE == ARMCACHE_920T)   || \     (ARMCACHE == ARMCACHE_926E)   || (ARMCACHE == ARMCACHE_946E)   || \     (ARMCACHE == ARMCACHE_XSCALE) || (ARMCACHE == ARMCACHE_1020E)  || \     (ARMCACHE == ARMCACHE_1022E))	    (bytes >= D_CACHE_SIZE))#endif	    cacheDClearAll ();	/* also drains write-buffer */	else	    {	    bytes += (size_t) address;	    address = (void *) ((UINT) address & ~(_CACHE_ALIGN_SIZE - 1));	    do		{		cacheDClear (address);		address = (void *) ((UINT) address + _CACHE_ALIGN_SIZE);		}	    while ((size_t) address < bytes);	    cacheArchPipeFlush ();	/* drain write buffer */	    }    else	{	/*	 * I-cache. Cache is effectively read-only, so flush is a null	 * operation, so only need to invalidate the cache.	 */#if ((ARMCACHE == ARMCACHE_SA110)  || \     (ARMCACHE == ARMCACHE_SA1100) || (ARMCACHE == ARMCACHE_SA1500))	cacheIInvalidateAll ();	/* Cannot clear individual lines */#endif#if ((ARMCACHE == ARMCACHE_920T)   || (ARMCACHE == ARMCACHE_926E)   || \     (ARMCACHE == ARMCACHE_946E)   || (ARMCACHE == ARMCACHE_XSCALE) || \     (ARMCACHE == ARMCACHE_1020E)  || (ARMCACHE == ARMCACHE_1022E))	if ((bytes == ENTIRE_CACHE) || (bytes >= I_CACHE_SIZE))	    cacheIInvalidateAll ();	else	    {#if(ARMCACHE == ARMCACHE_XSCALE)	    cacheIInvalidateAll ();#else	    bytes += (size_t) address;	    address = (void *) ((UINT) address & ~(_CACHE_ALIGN_SIZE - 1));	    do		{		cacheIInvalidate (address);#if (ARMCACHE == ARMCACHE_XSCALE)		btbInvalidate ();#endif /* (ARMCACHE == ARMCACHE_XSCALE) */		address = (void *) ((UINT) address + _CACHE_ALIGN_SIZE);		}	    while ((size_t) address < bytes);#endif /* (ARMCACHE == ARMCACHE_XSCALE) */	    }#endif /* (ARMCACHE == ARMCACHE_920T,946E,XSCALE) */#if (ARMCACHE == ARMCACHE_940T)	if (bytes == ENTIRE_CACHE)	    cacheIInvalidateAll();	else	    if (bytes >= (_CACHE_ALIGN_SIZE * 4))		cacheIInvalidateAll();	    else		{		bytes += (size_t) address;		address = (void *) ((UINT) address & ~(_CACHE_ALIGN_SIZE - 1));		do		    {		    cacheIInvalidate (address);		    address = (void *) ((UINT) address + _CACHE_ALIGN_SIZE);		    }		while ((size_t) address < bytes);		}#endif /* (ARMCACHE == ARMCACHE_940T) */#if ARMCACHE_NEEDS_IMB	if (bytes == ENTIRE_CACHE)	    cacheIMB ();		/* Execute IMB to flush Prefetch Unit */	else	    cacheIMBRange(address, (INSTR *) ((UINT32)address + bytes));#endif	} /* endelse I-cache */#endif /* ARMCACHE == ARMCACHE_810, SA*, 920T, 940T, 946E, XSCALE, 1020E,1022E */    return OK;    } /* cacheArchClear() *//********************************************************************************* cacheArchTextUpdate - synchronize the ARM instruction and data caches** This routine flushes the ARM data cache and drains the write-buffer, if* appropriate, and then invalidates the instruction cache.  The instruction* cache is forced to fetch code that may have been created via the data path.** RETURNS: OK, or ERROR if the cache type is invalid or the cache control* is not supported.** NOMANUAL*/LOCAL STATUS cacheArchTextUpdate    (    void *	address,	/* virtual address */    size_t	bytes		/* number of bytes to update */    )    {#if (ARMCACHE == ARMCACHE_810)    int oldLevel, stat;#endif#if ((ARMCACHE == ARMCACHE_710A) || (ARMCACHE == ARMCACHE_740T) || \     (ARMCACHE == ARMCACHE_720T))    cacheArchPipeFlush ();    return cacheArchInvalidate (INSTRUCTION_CACHE, address, bytes);#endif#if (ARMCACHE == ARMCACHE_810)    /*     * There is an argument that all we need to do here is an IMB,     * but play safe for the moment.     *     * 810 is a combined ID-cache: when invalidating the "I-cache" we     * will be invalidating the ID-cache, so we must lock interrupts     * between cleaning the cache and invalidating it.     */    oldLevel = cacheArchIntLock();    if (cacheArchFlush (DATA_CACHE, address, bytes) == OK)	stat = cacheArchInvalidate (INSTRUCTION_CACHE, address, bytes);    else	stat = ERROR;    intIFUnlock (oldLevel);    return stat;#endif /* (ARMCACHE == ARMCACHE_810) */#if ((ARMCACHE == ARMCACHE_SA110)  || (ARMCACHE == ARMCACHE_SA1100) || \     (ARMCACHE == ARMCACHE_SA1500) || (ARMCACHE == ARMCACHE_920T)   || \     (ARMCACHE == ARMCACHE_926E)   || (ARMCACHE == ARMCACHE_940T)   || \     (ARMCACHE == ARMCACHE_946E)   || (ARMCACHE == ARMCACHE_XSCALE) || \     (ARMCACHE == ARMCACHE_1020E)  || (ARMCACHE == ARMCACHE_1022E))    /* Harvard caches: should be able to invalidate the I-cache with impunity */    if (cacheArchFlush (DATA_CACHE, address, bytes) == OK)	return cacheArchInvalidate (INSTRUCTION_CACHE, address, bytes);    else	return ERROR;#endif /* ARMCACHE = SA110,1100,1500,920T,940T,946E,XSCALE,1020E,1022E */    } /* cacheArchTextUpdate() *//********************************************************************************* cacheArchDmaMalloc - allocate a cache-safe buffer** This routine attempts to return a pointer to a section of memory* that will not experience cache coherency problems.  This routine* is only called when MMU support is available for cache control.** INTERNAL* The above comment about being called only when MMU support is available is* present in all the other architectures. It is not clear that this is* necessarily true.** INTERNAL* We check if the cache is actually on before allocating the memory.  It* is possible that the user wants Memory Management Unit (MMU)* support but does not need caching.** RETURNS: A pointer to a cache-safe buffer, or NULL.** SEE ALSO: cacheArchDmaFree(), cacheDmaMalloc()** NOMANUAL*/LOCAL void * cacheArchDmaMalloc    (    size_t	bytes	/* size of cache-safe buffer */    )    {    void *	pBuf;    int		pageSize;    /*     * This seems dangerous, as the buffer could be allocated and then the     * cache could be switched on later. However, it is what the other     * architectures do.     */    if (!cacheIsOn (DATA_CACHE))	{	/* If cache is off, just allocate buffer */	return malloc (bytes);	}    if ((pageSize = VM_PAGE_SIZE_GET ()) == ERROR)	return NULL;    /* make sure bytes is a multiple of pageSize */    bytes = ROUND_UP (bytes, pageSize);#if (!ARM_HAS_MPU)    if ((_func_valloc == NULL) ||	((pBuf = (void *)(* _func_valloc) (bytes)) == NULL))	return NULL;#else /* (!ARM_HAS_MPU) */    /*     * On MPUs, regions must be aligned with their size, which must be     * a power of two and at least 4k in size.     *     * Round up to a power of two in size.     */    bytes = ROUND_UP (bytes, (1 << (ffsMsb(bytes) - 1)));    if ((_func_memalign == NULL) ||	((pBuf = (void *)(* _func_memalign) (bytes, bytes)) == NULL))	return NULL;#endif /* (!ARM_HAS_MPU) */    /*     * Note that on MPUs we need to specify VM_STATE_VALID here, in     * order that a new region will be created, if necessary, and that     * that region will be marked as active, with appropriate access     * rights. We should also free the allocate buffer and return NULL     * if the VM_STATE_SET call fails. This fixes SPR #30697.     */    if (VM_STATE_SET (NULL, pBuf, bytes,		  VM_STATE_MASK_CACHEABLE | VM_STATE_MASK_VALID,		  VM_STATE_CACHEABLE_NOT | VM_STATE_VALID) != OK)	{	free (pBuf);	return NULL;	}    return pBuf;    } /* cacheArchDmaMalloc() *//********************************************************************************* cacheArchDmaFree - free the buffer acquired by cacheArchDmaMalloc()** This routine returns to the free memory pool a block of memory previously* allocated with cacheArchDmaMalloc().  The buffer is marked cacheable.** RETURNS: OK, or ERROR if cacheArchDmaMalloc() cannot be undone.** SEE ALSO: cacheArchDmaMalloc(), cacheDmaFree()** NOMANUAL*/LOCAL STATUS cacheArchDmaFree    (    void *	pBuf		/* ptr returned by cacheArchDmaMalloc() */    )    {    BLOCK_HDR *	pHdr;		/* pointer to block header */    STATUS	status = OK;	/* return value */    /* changed to vmLibInstalled or BaseLibInstalled fixes SPR #22407 */    if (cacheIsOn (DATA_CACHE) &&	(vmLibInfo.vmLibInstalled || vmLibInfo.vmBaseLibInstalled))	{	pHdr = BLOCK_TO_HDR (pBuf);	status = VM_STATE_SET (NULL,pBuf,(pHdr->nWords * 2) - sizeof(BLOCK_HDR),			       VM_STATE_MASK_CACHEABLE, VM_STATE_CACHEABLE);	}    free (pBuf);	/* free buffer after modified */    return status;    } /* cacheArchDmaFree() *//********************************************************************************* cacheProbe - test for the presence of a type of cache** This routine returns status with regard to the presence of a particular* type of cache.** RETURNS: OK, or ERROR if the cache type is invalid or the cache control* is not supported.** CAVEATS* On ARM710A/810/740T/720T we return present for both data and* instruction cache as they have one mixed instruction and data cache.**/LOCAL STATUS cacheProbe    (    CACHE_TYPE	cache	/* cache to test */    )    {    if ((cache == INSTRUCTION_CACHE) || (cache == DATA_CACHE))	return OK;    errno = S_cacheLib_INVALID_CACHE;	/* set errno */    return ERROR;    } /* cacheProbe() *//******************************************************************************* cacheIsOn - boolean function to return state of cache** This routine returns the state of the specified cache.  The cache is* assumed to exist.** RETURNS: TRUE, if specified cache is enabled, FALSE otherwise.*/LOCAL BOOL cacheIsOn    (    CACHE_TYPE	cache	/* cache to examine state */    )    {#if ((ARMCACHE == ARMCACHE_940T) || (ARMCACHE == ARMCACHE_946E))    /* return whether we have been *asked* to enable the cache in question */    if (cache == INSTRUCTION_CACHE)	return (cacheArchState & MMUCR_I_ENABLE);    else	return (cacheArchState & MMUCR_C_ENABLE);#elif ((ARMCACHE == ARMCACHE_920T)   || (ARMCACHE == ARMCACHE_926E)   || \       (ARMCACHE == ARMCACHE_1020E)  || (ARMCACHE == ARMCACHE_1022E))    if (cache == INSTRUCTION_CACHE)	{	/* return whether actually enabled */	return (mmuCrGet() & MMUCR_I_ENABLE);	}    else	{	/* return whether we have been asked to enable the D-cache */	return ((cacheArchState & MMUCR_C_ENABLE) != 0);	}#else /* (ARMCACHE == ARMCACHE_940T,946E) */#if ((ARMCACHE == ARMCACHE_SA110)  || (ARMCACHE == ARMCACHE_SA1100) || \     (ARMCACHE == ARMCACHE_SA1500) || (ARMCACHE == ARMCACHE_XSCALE))    if (cache == INSTRUCTION_CACHE)	{	/* return whether actually enabled */	return (mmuCrGet() & MMUCR_I_ENABLE);	}    else#endif    /* return whether we have been asked to enable the cache */    return ( (cacheArchState & MMUCR_C_ENABLE) != 0);#endif /* (ARMCACHE == ARMCACHE_940T,946E) */    }/******************************************************************************* cacheMmuIsOn - boolean function to return state of MMU/MPU** This routine returns the state of the MMU/MPU.** RETURNS: TRUE  if MMU/MPU enabled,*          FALSE if not enabled.*/LOCAL BOOL cacheMmuIsOn    (    void    )    {    return ((mmuCrGet() & MMUCR_M_ENABLE) != 0);    }#endif /* (ARMCACHE != ARMCACHE_NONE) */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩av一区二区| 成人性视频网站| 日韩欧美一区二区不卡| 久久99国产精品久久| 精品国产一区二区三区不卡| 国产精品99久久久久久似苏梦涵| 国产午夜精品久久久久久久| 免费不卡在线视频| 欧美绝品在线观看成人午夜影视| 天堂va蜜桃一区二区三区漫画版| 欧美人成免费网站| 国产一区二区免费在线| 亚洲婷婷国产精品电影人久久| 色婷婷av一区二区三区软件 | 精品在线一区二区三区| 久久欧美一区二区| 91在线国产观看| 日韩精品1区2区3区| 久久久亚洲欧洲日产国码αv| 成+人+亚洲+综合天堂| 午夜婷婷国产麻豆精品| 久久精品欧美日韩精品| 在线观看成人免费视频| 激情六月婷婷综合| 亚洲精品日韩专区silk | 精品理论电影在线| 成人avav在线| 日本91福利区| 亚洲人亚洲人成电影网站色| 欧美大片日本大片免费观看| 91在线视频播放地址| 从欧美一区二区三区| 亚洲自拍欧美精品| 国产亚洲综合色| 91精品国产综合久久久久| 床上的激情91.| 美女脱光内衣内裤视频久久网站| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美日韩亚洲另类| 成人黄色电影在线| 九一久久久久久| 亚洲国产你懂的| 亚洲视频在线一区二区| 久久这里只精品最新地址| 欧美唯美清纯偷拍| 成人国产精品免费观看视频| 精品伊人久久久久7777人| 亚洲一区二区美女| 国产精品久久二区二区| 精品成人一区二区三区| 欧美高清性hdvideosex| 一本久道中文字幕精品亚洲嫩| 国产大片一区二区| 精品一区二区在线观看| 日韩黄色免费电影| 亚洲自拍欧美精品| 一区二区在线观看免费 | 亚洲啪啪综合av一区二区三区| 久久亚洲私人国产精品va媚药| 91.成人天堂一区| 色网站国产精品| 99精品热视频| 99精品热视频| 91香蕉视频污| 99re66热这里只有精品3直播 | 久久青草国产手机看片福利盒子| 91精品欧美一区二区三区综合在| 欧美性做爰猛烈叫床潮| 在线观看亚洲精品视频| 一本色道久久加勒比精品| 成人动漫一区二区| 成人激情文学综合网| 不卡一区二区在线| 成人av电影在线网| 99精品欧美一区二区蜜桃免费| 成人app网站| 91免费看`日韩一区二区| av电影天堂一区二区在线| 99精品久久免费看蜜臀剧情介绍| 波多野结衣欧美| 91免费版在线| 欧美日韩一区 二区 三区 久久精品 | 欧美成人精品高清在线播放| 日韩一级大片在线观看| 久久综合999| 国产午夜精品一区二区三区四区| 国产三级精品视频| 亚洲欧美另类图片小说| 亚洲福利一区二区| 蜜臀av性久久久久蜜臀aⅴ流畅| 精品在线观看免费| 成人动漫在线一区| 欧美亚洲一区二区在线| 欧美一级艳片视频免费观看| 欧美一区二区二区| 国产日本欧洲亚洲| 亚洲精品国产高清久久伦理二区| 性做久久久久久免费观看| 色丁香久综合在线久综合在线观看| 色网站国产精品| 51精品秘密在线观看| 久久蜜桃香蕉精品一区二区三区| 国产精品美女久久久久久久久| 亚洲黄色性网站| 琪琪一区二区三区| 丁香另类激情小说| 欧美综合亚洲图片综合区| 日韩欧美色综合| 亚洲三级视频在线观看| 日韩成人免费电影| 丁香网亚洲国际| 欧美日韩在线三区| 日本一区二区三区视频视频| 亚洲亚洲人成综合网络| 国内外精品视频| 欧洲中文字幕精品| 久久精品免视看| 丝袜亚洲另类丝袜在线| 国产91精品久久久久久久网曝门 | 人禽交欧美网站| 99麻豆久久久国产精品免费优播| 欧美日韩国产综合一区二区 | 91精品国产综合久久久久久久| 国产精品麻豆久久久| 免费一级片91| 91福利视频网站| 国产亚洲欧美日韩俺去了| 性久久久久久久| 91在线视频播放地址| 久久综合资源网| 日韩中文字幕1| 一本久久精品一区二区| 久久久.com| 麻豆精品久久久| 精品视频一区二区不卡| 亚洲欧美自拍偷拍色图| 精品一二线国产| 欧美日韩一区三区| 亚洲伦在线观看| 风间由美一区二区三区在线观看 | 高清国产午夜精品久久久久久| 欧美日韩亚洲综合| 亚洲欧美日韩成人高清在线一区| 国产在线一区二区| 日韩视频一区二区| 午夜视频在线观看一区二区三区| 99re这里只有精品视频首页| 国产午夜精品美女毛片视频| 日本中文字幕一区二区有限公司| 色94色欧美sute亚洲线路一ni| 国产精品久久午夜| 国产成人精品免费网站| 久久综合色综合88| 麻豆成人免费电影| 欧美一级视频精品观看| 丝袜国产日韩另类美女| 欧美色视频在线观看| 亚洲综合免费观看高清完整版在线| 91网上在线视频| 亚洲男人天堂av| 欧美一区二区在线免费播放 | 日韩欧美卡一卡二| 日韩和的一区二区| 欧美美女视频在线观看| 亚洲成av人**亚洲成av**| 欧美三级电影精品| 亚洲成av人片www| 欧美日韩成人综合| 蜜臀av在线播放一区二区三区| 日韩一区二区在线看| 免费高清不卡av| 久久一留热品黄| 粉嫩嫩av羞羞动漫久久久 | 欧美精品久久天天躁| 午夜精品久久久久| 日韩三级免费观看| 国内精品国产成人国产三级粉色| 久久综合久久99| 成人深夜在线观看| 亚洲免费在线看| 欧美视频一区在线观看| 天堂蜜桃91精品| 精品乱人伦小说| 本田岬高潮一区二区三区| 亚洲毛片av在线| 欧美一级在线观看| 国产成人精品www牛牛影视| 亚洲日穴在线视频| 精品视频色一区| 国内精品久久久久影院一蜜桃| 国产精品伦一区| 欧美日韩日日骚| 国产在线不卡一卡二卡三卡四卡| 国产精品第五页| 欧美欧美午夜aⅴ在线观看| 狠狠色综合日日| 亚洲男人天堂av| 日韩精品一区国产麻豆| 成人一区二区三区视频| 亚洲妇女屁股眼交7|