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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cachesh7700lib.c

?? vxworks的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
    UINT32 p = (UINT32)from;    UINT32 ix;    UINT32 c_size;					/* cache size */    int way, lastway;    if (p >= SH7700_P2_BASE && p <= (SH7700_P2_BASE | SH7700_PHYS_MASK))	return ERROR;					/* P2 non-cacheable */    else if (p >= SH7700_P4_BASE)	return ERROR;					/* P4 non-cacheable */    switch (cacheSh7700CCRGet () & (CCR_2WAY_MODE | CCR_1WAY_MODE))	{	case CCR_1WAY_MODE: c_size = CAC_DATA_SIZE / 4;	lastway = 0;	break;	case CCR_2WAY_MODE: c_size = CAC_DATA_SIZE / 2;	lastway = 1;	break;	default:	    c_size = CAC_DATA_SIZE;	lastway = 3;	}    if (bytes == 0)	{	return OK;	}    else if (bytes == ENTIRE_CACHE)	{	for (way = 0; way <= lastway; way++)	    {	    for (ix = 0; ix <= 0x7f0; ix += CAC_LINE_SIZE)		{		UINT32 *pt = (UINT32 *)(CAC_ADRS_ARRAY | (way << 11) | ix);		cacheSh7700MFlush (pt, -1, 0, 0);		}	    }	}    else	{	UINT32 ca_begin = p & ~(CAC_LINE_SIZE - 1);	UINT32 ca_end   = p + bytes - 1;	if (bytes < c_size) /* do associative purge */	    {	    cacheSh7700AFlush (ca_begin, ca_end);	    }	else /* check every cache tag */	    {	    for (way = 0; way <= lastway; way++)		{		for (ix = 0; ix <= 0x7f0; ix += CAC_LINE_SIZE)		    {		    UINT32 *pt = (UINT32 *)(CAC_ADRS_ARRAY | (way << 11) | ix);		    cacheSh7700MFlush (pt, ix, ca_begin, ca_end);		    }		}	    }	}    return OK;    }/******************************************************************************** cacheSh7700DmaMalloc - 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* 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.** NOMANUAL*/LOCAL void *cacheSh7700DmaMalloc    (    size_t bytes    )    {    void *pBuf;    int   pageSize;    if (cacheDataEnabled == FALSE)	return malloc (bytes);		/* cache is off just allocate buffer */    if ((pageSize = VM_PAGE_SIZE_GET ()) == ERROR)	return NULL;    /* make sure bytes is a multiple of pageSize */    bytes = bytes / pageSize * pageSize + pageSize;    if (_func_valloc == NULL || (pBuf = (void *)(*_func_valloc)(bytes)) == NULL)        return NULL;    VM_STATE_SET (NULL, pBuf, bytes,                  VM_STATE_MASK_CACHEABLE, VM_STATE_CACHEABLE_NOT);    return pBuf;    }/******************************************************************************** cacheSh7700DmaFree - free the buffer acquired by cacheSh7700DmaMalloc()** This routine returns to the free memory pool a block of memory previously* allocated with cacheSh7700DmaMalloc().  The buffer is marked cacheable.** RETURNS: OK, or ERROR if cacheSh7700DmaMalloc() cannot be undone.** NOMANUAL*/LOCAL STATUS cacheSh7700DmaFree    (    void *pBuf    )    {    STATUS status = OK;    if (cacheDataEnabled)        {	BLOCK_HDR *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);    return status;    }/******************************************************************************** cacheSh7700P2DmaMalloc - allocate a cache-safe buffer from P2 region** This routine attempts to return a pointer to a section of memory that will* not experience cache coherency problems.  This routine may be called when* MMU support is NOT available for cache control.** RETURNS: A pointer to a cache-safe buffer, or NULL.** NOMANUAL*/LOCAL void *cacheSh7700P2DmaMalloc    (    size_t bytes    )    {    void *pBuf;    int alignment = VM_PAGE_SIZE_GET ();    if (alignment != ERROR && _func_valloc != NULL)	{	/* adjust bytes to a multiple of MMU page size */	bytes = bytes / alignment * alignment + alignment;	/* get a page aligned memory */	if ((pBuf = (void *)(*_func_valloc)(bytes)) == NULL)	    return NULL;	/* mark it as non-cacheable, non-writable on virtual space */	VM_STATE_SET (NULL, pBuf, bytes,		      VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE,		      VM_STATE_WRITABLE_NOT  | VM_STATE_CACHEABLE_NOT);	}    else	{	/* adjust bytes to a multiple of cache line length */	alignment = _CACHE_ALIGN_SIZE;	bytes = bytes / alignment * alignment + alignment;	/* use memalign() to avoid sharing a cache-line with other buffers */	if ((pBuf = memalign (alignment, bytes)) == NULL)	    return NULL;	}    /* make sure nothing in pBuf is cached on cacheable region */    if (cacheLib.flushRtn != NULL)	cacheLib.flushRtn (DATA_CACHE, pBuf, bytes);    /* relocate the buffer to P2 (mmu-bypass, non-cacheable) region */    return (void *)(((UINT32)pBuf & SH7700_PHYS_MASK) | SH7700_P2_BASE);    }/******************************************************************************** cacheSh7700P2DmaFree - free the buffer acquired by cacheSh7700P2DmaMalloc()** This routine returns to the free memory pool a block of memory previously* allocated with cacheSh7700P2DmaMalloc().** RETURNS: OK, or ERROR if cacheSh7700DmaMalloc() cannot be undone.** NOMANUAL*/LOCAL STATUS cacheSh7700P2DmaFree    (    void *pBuf    )    {    STATUS status = OK;    UINT32 p = (UINT32)pBuf;    if (p < SH7700_P2_BASE || p > (SH7700_P2_BASE | SH7700_PHYS_MASK))	return ERROR;    if (cacheDataMode & CACHE_DMA_BYPASS_P0)	p =  p & SH7700_PHYS_MASK;			/* relocate to P0 */    else if (cacheDataMode & CACHE_DMA_BYPASS_P1)	p = (p & SH7700_PHYS_MASK) | SH7700_P1_BASE;	/* relocate to P1 */    else if (cacheDataMode & CACHE_DMA_BYPASS_P3)	p = (p & SH7700_PHYS_MASK) | SH7700_P3_BASE;	/* relocate to P3 */    else	return ERROR;    if (VM_PAGE_SIZE_GET () != ERROR && _func_valloc != NULL)	{	BLOCK_HDR *pHdr = BLOCK_TO_HDR ((void *)p);	status = VM_STATE_SET (NULL, (void *)p,			       (pHdr->nWords * 2) - sizeof(BLOCK_HDR),			       VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE,			       VM_STATE_WRITABLE      | VM_STATE_CACHEABLE);	}    free ((void *)p);    return status;    }#undef CACHE_DEBUG#ifdef CACHE_DEBUG#include "stdio.h"LOCAL UINT32 va[512][5];	/* (128-entry * 4-way) * (tag[1] + data[4]) *//******************************************************************************** cacheSh7700Dump - dump SH7700 cache** NOMANUAL*/LOCAL int partition (UINT32 a[][5], int l, int r)    {    int i, j, pivot;    UINT32 t;    i = l - 1;    j = r;    pivot = a[r][0];    for (;;)	{	while (a[++i][0] < pivot)	    ;	while (i < --j && pivot < a[j][0])	    ;	if (i >= j)	    break;	t = a[i][0]; a[i][0] = a[j][0]; a[j][0] = t;	t = a[i][1]; a[i][1] = a[j][1]; a[j][1] = t;	t = a[i][2]; a[i][2] = a[j][2]; a[j][2] = t;	t = a[i][3]; a[i][3] = a[j][3]; a[j][3] = t;	t = a[i][4]; a[i][4] = a[j][4]; a[j][4] = t;	}    t = a[i][0]; a[i][0] = a[r][0]; a[r][0] = t;    t = a[i][1]; a[i][1] = a[r][1]; a[r][1] = t;    t = a[i][2]; a[i][2] = a[r][2]; a[r][2] = t;    t = a[i][3]; a[i][3] = a[r][3]; a[r][3] = t;    t = a[i][4]; a[i][4] = a[r][4]; a[r][4] = t;    return i;    }LOCAL void quick_sort_1 (UINT32 a[][5], int l, int r)    {    int v;    if (l >= r)	return;    v = partition (a, l, r);    quick_sort_1 (a, l, v - 1);		/* sort left partial array */    quick_sort_1 (a, v + 1, r);		/* sort right partial array */    }LOCAL void quick_sort (UINT32 a[][5], int n)    {    quick_sort_1 (a, 0, n - 1);    }LOCAL void cacheSh7700DumpOp (UINT32 a[][5], UINT32 ccr)    {    int ent, i;    BOOL t = (ccr & CCR_2WAY_MODE) ? TRUE : FALSE;	/* TRUE if 2-way mode */    for (ent = 0; ent < 128; ent++)	{	int way;	int lastway = t ? 1 : 3;	/* 2-way mode uses way 0 and 1 */	for (way = 0; way <= lastway; way++)	    {	    UINT32 tag = *(UINT32 *)(CAC_ADRS_ARRAY | (way << 11) | (ent << 4));	    i = t ? (ent * 2 + way) : (ent * 4 + way);	    a[i][0] = (tag & 0xfffffc03) |((ent & 0x3f)<<4) |((ent & 0x40)>>4);	    a[i][1] = *(UINT32 *)(0xf1000000 | (way << 11) | (ent << 4));	    a[i][2] = *(UINT32 *)(0xf1000004 | (way << 11) | (ent << 4));	    a[i][3] = *(UINT32 *)(0xf1000008 | (way << 11) | (ent << 4));	    a[i][4] = *(UINT32 *)(0xf100000c | (way << 11) | (ent << 4));	    }	}    }LOCAL void cacheSh7700Disp (UINT32 a[][5], UINT32 ccr)    {    int i;    int lines = (ccr & CCR_2WAY_MODE) ? 256 : 512;	/* cache lines */    quick_sort (a, lines);    for (i = 0; i < lines; i++)	{	UINT32 b10 = (a[i][0] & 0x4) << 8;	/* MSB of entry selector */	printf ("0x%08x: %08x %08x %08x %08x %s %s %s\n",		a[i][0] & 0xfffffff0,		a[i][1], a[i][2], a[i][3], a[i][4],		(a[i][0] & 0x400) ^ b10 ? "!"  : " ",		a[i][0] & 0x2           ? "U+" : "U-",		a[i][0] & 0x1           ? "V+" : "V-");	}    }void cacheSh7700ClearTest (int addr, int bytes)    {    UINT32 ccr = cacheSh7700CCRGet ();    int key = intLock ();				/* LOCK INTERRUPTS */    if ((ccr & (CCR_WRITE_BACK_P1 | CCR_WRITE_THRU)) == CCR_WRITE_THRU)	{	cacheSh7700CCRSet (ccr & ~CCR_CACHE_ENABLE);	/* disable caching */	cacheSh7700Clear (INSTRUCTION_CACHE, (void *)addr, bytes);	cacheSh7700DumpOp (va, ccr);	cacheSh7700CCRSet (ccr);			/* restore ccr */	intUnlock (key);				/* UNLOCK INTERRUPTS */	cacheSh7700Disp (va, ccr);	}    else	{	UINT32 pDumpRtn	    = ((UINT32)cacheSh7700DumpOp & SH7700_PHYS_MASK) | SH7700_P2_BASE;	UINT32 (*a)[512][5]	= (UINT32(*)[512][5])(((UINT32)va & SH7700_PHYS_MASK) | SH7700_P2_BASE);	cacheSh7700Clear (INSTRUCTION_CACHE, (void *)addr, bytes);	(* (VOIDFUNCPTR)pDumpRtn)(*a, ccr);	intUnlock (key);				/* UNLOCK INTERRUPTS */	cacheSh7700Disp (*a, ccr);	}    }void cacheSh7700ClearTestAll ()    {    cacheSh7700ClearTest (0, ENTIRE_CACHE);    }void cacheSh7700Dump ()    {    cacheSh7700ClearTest (0, 0);    }#endif /* CACHE_DEBUG */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚欧色一区w666天堂| www国产精品av| 91美女在线看| av福利精品导航| 粉嫩绯色av一区二区在线观看| 久久国产精品无码网站| 精品亚洲成a人| 国内精品在线播放| 国产成人自拍高清视频在线免费播放| 国产又黄又大久久| 高清不卡一区二区在线| 国产一区三区三区| 国产成人免费av在线| 99久久精品国产麻豆演员表| 91蜜桃视频在线| 在线不卡一区二区| 久久伊99综合婷婷久久伊| 久久久久久久一区| 亚洲日本在线a| 调教+趴+乳夹+国产+精品| 蜜臀av性久久久久蜜臀av麻豆| 美女脱光内衣内裤视频久久网站 | 欧美视频三区在线播放| 欧美肥妇毛茸茸| 久久麻豆一区二区| 亚洲欧美一区二区三区孕妇| 亚洲一区在线观看免费观看电影高清 | 亚洲综合久久久| 毛片基地黄久久久久久天堂| 国产91丝袜在线观看| 一本一道波多野结衣一区二区| 欧美日韩亚洲综合在线| 精品国产乱码久久久久久夜甘婷婷 | 欧美日韩午夜在线| 久久久久久毛片| 亚洲最色的网站| 精品一区二区三区在线观看国产| 成人综合婷婷国产精品久久蜜臀| 91久久精品一区二区| 精品久久久网站| 亚洲黄色尤物视频| 精品综合久久久久久8888| 91在线看国产| 久久亚洲一级片| 亚洲成人tv网| 91亚洲精品一区二区乱码| 日韩欧美精品在线| 午夜精品久久久久久久久久| 成人夜色视频网站在线观看| 欧美一区二区三区在| 最新热久久免费视频| 精品在线视频一区| 欧美乱妇15p| 亚洲欧美日韩国产另类专区| 久久国产乱子精品免费女| 欧美一a一片一级一片| 国产精品区一区二区三| 老司机免费视频一区二区三区| 欧美影院一区二区| 亚洲欧美一区二区三区孕妇| 粉嫩av一区二区三区粉嫩| 亚洲精品一区二区在线观看| 天天射综合影视| 欧美日韩一区二区电影| 亚洲久草在线视频| k8久久久一区二区三区| 久久久不卡影院| 激情六月婷婷久久| 欧美成人三级在线| 老司机精品视频一区二区三区| 91 com成人网| 亚洲一区二区精品3399| 欧美午夜一区二区三区| 尤物视频一区二区| 在线看不卡av| 亚洲五码中文字幕| 欧美日韩一区在线| 日韩制服丝袜av| 日韩一区二区三区视频| 蜜乳av一区二区三区| 欧美久久久一区| 免费在线观看成人| 欧美成人伊人久久综合网| 久久99久久99小草精品免视看| 日韩视频永久免费| 国产一区高清在线| 国产亚洲人成网站| 成人黄色一级视频| 自拍偷自拍亚洲精品播放| 在线免费观看成人短视频| 亚洲成年人影院| 欧美大片免费久久精品三p | 久久久777精品电影网影网| 经典一区二区三区| 国产精品女同互慰在线看 | 尤物在线观看一区| 91精品国产麻豆国产自产在线 | 亚洲与欧洲av电影| 制服丝袜成人动漫| 国产麻豆精品theporn| 1024成人网| 91精品久久久久久久99蜜桃| 国模娜娜一区二区三区| 亚洲欧美偷拍三级| 欧美一区二区三区免费观看视频| 国产黄色精品网站| 亚洲va韩国va欧美va| 久久久久久电影| 色婷婷综合久久久| 美日韩一区二区三区| 国产精品精品国产色婷婷| 91超碰这里只有精品国产| k8久久久一区二区三区| 免费久久精品视频| 亚洲乱码国产乱码精品精可以看 | 不卡的av网站| 日韩av网站免费在线| 中文字幕一区在线| 欧美成人精品1314www| 91麻豆精品在线观看| 精品在线免费视频| 午夜一区二区三区在线观看| 久久久久久久久岛国免费| 欧美色综合久久| 成人精品免费看| 另类调教123区 | 成人午夜伦理影院| 日韩av一二三| 亚洲国产精品久久人人爱 | 亚洲风情在线资源站| 国产精品久久影院| 精品欧美一区二区久久 | 日韩欧美专区在线| 欧美亚洲国产bt| 91视频你懂的| 99精品国产99久久久久久白柏| 看电视剧不卡顿的网站| 午夜电影网一区| 亚洲第一综合色| 亚洲一区二区三区在线| 一区免费观看视频| 日本一区二区三区在线不卡| 337p日本欧洲亚洲大胆精品| 欧美日本免费一区二区三区| 色综合久久天天综合网| 99久久国产免费看| 91在线免费播放| 97久久精品人人做人人爽50路| 粉嫩高潮美女一区二区三区 | 天堂蜜桃一区二区三区| 久久久.com| 久久亚洲春色中文字幕久久久| 91精品国产一区二区三区| 精品视频一区 二区 三区| 欧美四级电影在线观看| 色综合欧美在线视频区| 在线免费观看一区| 欧美性生交片4| 欧美丰满少妇xxxxx高潮对白| 欧美午夜电影网| 欧美精品黑人性xxxx| 91精品久久久久久蜜臀| 日韩欧美国产午夜精品| 日韩欧美一二三四区| 精品国产乱码久久久久久免费 | 成人小视频在线| 成人午夜短视频| 91丝袜国产在线播放| 色噜噜狠狠一区二区三区果冻| 色婷婷av一区二区三区之一色屋| 一本久久a久久精品亚洲 | 麻豆久久一区二区| 国产精品一区不卡| 成人av在线看| 欧美日韩卡一卡二| 337p日本欧洲亚洲大胆精品| 国产欧美日韩精品一区| 一区二区三区在线播| 午夜不卡av在线| 国产高清不卡二三区| 色欧美乱欧美15图片| 日韩欧美亚洲国产精品字幕久久久 | 亚洲精品日韩专区silk| 天堂成人国产精品一区| 国产一区二区三区久久悠悠色av| 99久久久久久| 在线电影欧美成精品| ww久久中文字幕| 亚洲一区在线免费观看| 久久国产精品第一页| 91麻豆自制传媒国产之光| 欧美精品久久99久久在免费线| 久久精品一区二区| 一区二区三区四区av| 加勒比av一区二区| 欧美日韩免费不卡视频一区二区三区| 欧美mv日韩mv| 亚洲午夜电影网| 99久久亚洲一区二区三区青草| 8v天堂国产在线一区二区|