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

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

?? cachesh7700lib.c

?? vxworks的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* cacheSh7700Lib.c - Hitachi SH7700 cache management library *//* Copyright 1996-2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01p,23nov01,hk  removed checking vmLibInfo.vmLibInstalled in cacheSh7700DmaFree		and cacheSh7700P2DmaFree for INCLUDE_MMU_BASIC (SPR 71807).01p,24oct01,zl  fixes for doc builds.01o,27feb01,hk  add Hitachi to library description.01n,07dec00,hk  set cacheMmuAvailable to T/F depending on data cache mode.01m,21nov00,hk  changed to ignore instMode in cacheSh7700LibInit(). changed		cacheLib.invalidateRtn to cacheSh7700Clear() in copyback mode.		made cacheSh7700Disable() NMI-safe.01l,20aug00,hk  moved critical operations to cacheSh7700ALib. made cache tag		operations more precise. improved cacheSh7700P2DmaMalloc().		added cache dump tools.01k,06feb98,jmc renamed CACHE_WRITEBACK_P1 to CACHE_COPYBACK_P1.01j,30jan98,jmc revised cacheSh7700LibInit() to set CCR bit CCR_WRITE_BACK_P1		if mode is CACHE_WRITEBACK_P1, write-back cache for P1 region,		SH7709 only.01i,12jan98,hk  fixed docs for cacheSh7700LibInit(), changed two to next.01h,22mar97,hk  reviewed documentation.01g,16feb97,hk  added support for SH7702. changed CCR_RAM_MODE to CCR_2WAY_MODE.01f,19jan97,hk  disabled & invalidated cache at a time in cacheSh7700LibInit().                removed address range check from cacheArchInvalidate() and                cacheArchClear(). supported CACHE_2WAY_MODE in cacheArchClear().                Deleted intLock() in cacheArchClear(). specified DATA_CACHE in                cacheArchDmaMallocP2 instead of 0.01e,18jan97,hk  made cacheArchXXX local, and registered P2 address to cacheLib                structure. added CACHE_COPYBACK and CACHE_DMA_BYPASS_P[013].                simplified cacheArchEnable(). added cacheArchInvalidate().                added cache entry purge code. made cacheArchDmaMalloc/Free()                to use mmu and renamed non-mmu version as xxxP2(). cacheTest().01d,30dec96,hk  made cacheLib.textUpdateRtn NULL for copyback support. updated                address space macro names for cacheShLib.h-01n.01c,25sep96,hk  cacheArchClear() clears whole cache.(temporal)01b,05sep96,hk  take no action to enable/disable INSTRUCTION_CACHE. substituted		macros to magic numbers in cacheArchDmaMalloc/cacheArchDmaFree.01a,23aug96,hk  derived from cacheSh7604Lib.c-01q.*//*DESCRIPTIONThis library contains architecture-specific cache library functions forthe Hitachi SH7700 architecture.  There is a 8-Kbyte (2-Kbyte for SH7702)mixed instruction and data cache that operates in write-through orwrite-back (copyback) mode.  The 8-Kbyte cache can be divided into4-Kbyte cache and 4-Kbyte memory.  Cache line size is fixed at 16 bytes,and the cache address array holds physical addresses as cache tags.Cache entries may be "flushed" by accesses to the address array in privilegedmode.  There is a write-back buffer which can hold one line of cache entry,and the completion of write-back cycle is assured by accessing to any cachethrough region.For general information about caching, see the manual entry for cacheLib.INCLUDE FILES: cacheLib.hSEE ALSO: cacheLib*/#include "vxWorks.h"#include "errnoLib.h"#include "cacheLib.h"#include "intLib.h"			/* for intLock()/intUnlock() */#include "memLib.h"			/* for memalign() */#include "stdlib.h"			/* for malloc()/free() */#include "string.h"			/* for bzero() */#include "private/memPartLibP.h"	/* for BLOCK_TO_HDR() */#include "private/vmLibP.h"#include "private/funcBindP.h"		/* for _func_valloc *//* imports */IMPORT void cacheSh7700CCRSetOp (UINT32 ccr);IMPORT UINT32 cacheSh7700CCRGet (void);IMPORT STATUS cacheSh7700OnOp (BOOL on);IMPORT void cacheSh7700CFlushOp (void);IMPORT void cacheSh7700AFlushOp (UINT32 from, UINT32 to);IMPORT void cacheSh7700MFlushOp (UINT32 *pt, int ix, UINT32 from, UINT32 to);/* local definitions */#define CAC_RAM_ADRS		0x7f000000#define CAC_RAM_SIZE		4096#define CAC_ADRS_ARRAY		0xf0000000#define CAC_DATA_ARRAY		0xf1000000#define CAC_DATA_SIZE		8192#define CAC_LINE_SIZE		16/* SH7700 Cache Control Register bit define */#define CCR_2WAY_MODE		0x00000020	/* 4KB 2-way cache + 4KB RAM */#define CCR_1WAY_MODE		0x00000010	/* 2KB direct mapped cache */#define CCR_CACHE_FLUSH		0x00000008	/* no write back */#define CCR_WRITE_BACK_P1	0x00000004	/* set P1 to write-back */#define CCR_WRITE_THRU		0x00000002#define CCR_CACHE_ENABLE	0x00000001/* forward declarations */LOCAL STATUS cacheSh7700Enable (CACHE_TYPE cache);LOCAL STATUS cacheSh7700Disable (CACHE_TYPE cache);LOCAL STATUS cacheSh7700Clear (CACHE_TYPE cache, void *from, size_t bytes);LOCAL STATUS cacheSh7700Invalidate (CACHE_TYPE cache, void *from, size_t bytes);LOCAL void * cacheSh7700DmaMalloc (size_t bytes);LOCAL STATUS cacheSh7700DmaFree (void * pBuf);LOCAL void * cacheSh7700P2DmaMalloc (size_t bytes);LOCAL STATUS cacheSh7700P2DmaFree (void * pBuf);/* local function pointers to relocate cacheSh7700ALib entries */LOCAL VOIDFUNCPTR cacheSh7700CCRSet = (VOIDFUNCPTR)0x1234;LOCAL FUNCPTR     cacheSh7700On     =     (FUNCPTR)0x1234;LOCAL VOIDFUNCPTR cacheSh7700CFlush = (VOIDFUNCPTR)0x1234;LOCAL VOIDFUNCPTR cacheSh7700AFlush = (VOIDFUNCPTR)0x1234;LOCAL VOIDFUNCPTR cacheSh7700MFlush = (VOIDFUNCPTR)0x1234;/******************************************************************************** cacheSh7700LibInit - initialize the SH7700 cache library* * This routine initializes the cache library for the Hitachi SH7700 processor.* It initializes the function pointers and configures the caches to the* specified cache modes.  Modes should be set before caching is enabled.* If two complementary flags are set (enable/disable), no action is taken* for any of the input flags.** The following caching modes are available for the SH7700 processor:** .TS* tab(|);* l l l l.* | SH7700:| CACHE_WRITETHROUGH  | (cache for instruction and data)* |        | CACHE_COPYBACK      | (cache for instruction and data)* |        | CACHE_COPYBACK_P1   | (copy-back cache for P1, SH7709 only)* |        | CACHE_2WAY_MODE     | (4KB 2-way cache + 4KB RAM)* |        | CACHE_1WAY_MODE     | (2KB direct mapped cache, SH7702 only)* |        | CACHE_DMA_BYPASS_P0 | (allocate DMA buffer to P2, free it to P0)* |        | CACHE_DMA_BYPASS_P1 | (allocate DMA buffer to P2, free it to P1)* |        | CACHE_DMA_BYPASS_P3 | (allocate DMA buffer to P2, free it to P3)* .TE** The CACHE_DMA_BYPASS_Px modes allow to allocate "cache-safe" buffers without* MMU.  If none of CACHE_DMA_BYPASS_Px modes is specified, cacheDmaMalloc()* returns a cache-safe buffer on logical space, which is created by the MMU.* If CACHE_DMA_BYPASS_P0 is selected, cacheDmaMalloc() returns a cache-safe* buffer on P2 space, and cacheDmaFree() releases the buffer to P0 space.* Namely, if the system memory partition is located on P0, cache-safe buffers* can be allocated and freed without MMU, by selecting CACHE_DMA_BYPASS_P0.* * RETURNS: OK, or ERROR.*/STATUS cacheSh7700LibInit    (    CACHE_MODE	instMode,	/* instruction cache mode (ignored) */    CACHE_MODE	dataMode	/* data cache mode */    )    {    /* setup function pointers for cache library (declared in funcBind.c) */    cacheLib.enableRtn          = cacheSh7700Enable;    cacheLib.disableRtn         = cacheSh7700Disable;    cacheLib.lockRtn            = NULL;    cacheLib.unlockRtn          = NULL;    /* Flush and invalidate are the same in COPYBACK mode.  Setting the flush     * bit in the CCR doesn't do a write-back, so call cacheSh7700Clear if     * using COPYBACK (write-back) mode.     */    if (dataMode & (CACHE_COPYBACK | CACHE_COPYBACK_P1))	{	cacheLib.flushRtn	= cacheSh7700Clear;	cacheLib.invalidateRtn	= cacheSh7700Clear;	}    else	{	cacheLib.flushRtn	= NULL;	cacheLib.invalidateRtn	= cacheSh7700Invalidate;	}    cacheLib.clearRtn           = cacheSh7700Clear;    cacheLib.textUpdateRtn      = NULL;		/* inst/data mixed cache */    cacheLib.pipeFlushRtn       = NULL;    /* setup P2 function pointers for cache sensitive operations */    cacheSh7700CCRSet		= (VOIDFUNCPTR)(((UINT32)cacheSh7700CCRSetOp				& SH7700_PHYS_MASK) | SH7700_P2_BASE);    cacheSh7700On		= (FUNCPTR)(((UINT32)cacheSh7700OnOp				& SH7700_PHYS_MASK) | SH7700_P2_BASE);    cacheSh7700CFlush		= (VOIDFUNCPTR)(((UINT32)cacheSh7700CFlushOp				& SH7700_PHYS_MASK) | SH7700_P2_BASE);    cacheSh7700AFlush		= (VOIDFUNCPTR)(((UINT32)cacheSh7700AFlushOp				& SH7700_PHYS_MASK) | SH7700_P2_BASE);    cacheSh7700MFlush		= (VOIDFUNCPTR)(((UINT32)cacheSh7700MFlushOp				& SH7700_PHYS_MASK) | SH7700_P2_BASE);    /* select cache-safe malloc/free routines for DMA buffer */    if (dataMode &        (CACHE_DMA_BYPASS_P0 | CACHE_DMA_BYPASS_P1 | CACHE_DMA_BYPASS_P3))	{	cacheLib.dmaMallocRtn   = (FUNCPTR)cacheSh7700P2DmaMalloc;	cacheLib.dmaFreeRtn     = cacheSh7700P2DmaFree;	cacheMmuAvailable	= TRUE;		/* for cacheFuncsSet() */	}    else	{	cacheLib.dmaMallocRtn   = (FUNCPTR)cacheSh7700DmaMalloc;	cacheLib.dmaFreeRtn     = cacheSh7700DmaFree;	cacheMmuAvailable	= FALSE;	/* needs MMU support for cache						   safe allocation */	}    cacheLib.dmaVirtToPhysRtn	= NULL;    cacheLib.dmaPhysToVirtRtn	= NULL;    /* check for parameter errors */    if ((dataMode & ~(CACHE_WRITETHROUGH | CACHE_COPYBACK | CACHE_2WAY_MODE |             CACHE_DMA_BYPASS_P0 | CACHE_DMA_BYPASS_P1 | CACHE_DMA_BYPASS_P3 |             CACHE_1WAY_MODE | CACHE_COPYBACK_P1)) ||	((dataMode & CACHE_WRITETHROUGH)  && (dataMode & CACHE_COPYBACK))     ||	((dataMode & CACHE_DMA_BYPASS_P0) && (dataMode & CACHE_DMA_BYPASS_P1))||	((dataMode & CACHE_DMA_BYPASS_P1) && (dataMode & CACHE_DMA_BYPASS_P3))||	((dataMode & CACHE_DMA_BYPASS_P3) && (dataMode & CACHE_DMA_BYPASS_P0))||	((dataMode & CACHE_2WAY_MODE)     && (dataMode & CACHE_1WAY_MODE)))	{	errnoSet (S_cacheLib_INVALID_CACHE);	return ERROR;	}    /* initialize cache modes (declared in cacheLib.c) */    cacheDataMode	= dataMode;    cacheDataEnabled	= FALSE;    /* disable cache safely */    cacheLib.disableRtn (DATA_CACHE);    /* initialize CCR, clear on-chip RAM if available */	{	UINT32 ccr = 0;	if (dataMode & CACHE_WRITETHROUGH) ccr |= CCR_WRITE_THRU;	if (dataMode & CACHE_2WAY_MODE)    ccr |= CCR_2WAY_MODE;	if (dataMode & CACHE_1WAY_MODE)    ccr |= CCR_1WAY_MODE;	if (dataMode & CACHE_COPYBACK_P1)  ccr |= CCR_WRITE_BACK_P1;	cacheSh7700CCRSet (ccr);	if (cacheSh7700CCRGet () & CCR_2WAY_MODE)	    bzero ((char *)CAC_RAM_ADRS, CAC_RAM_SIZE);	/* clear on-chip RAM */	}    return OK;    }/******************************************************************************** cacheSh7700Enable - enable a SH7700 cache** This routine invalidates and enables the specified SH7700 cache.*              ^^^^^^^^^^^     ^^^^^^^* RETURNS: OK, or ERROR if the specified cache type was invalid.** NOMANUAL*/LOCAL STATUS cacheSh7700Enable    (    CACHE_TYPE cache    )    {    STATUS status;    switch (cache)	{	case DATA_CACHE:	    if ((status = cacheSh7700On (TRUE)) == OK)		{		cacheDataEnabled = TRUE;		cacheFuncsSet ();	/* set cache function pointers */		}	    break;	default:	    errno = S_cacheLib_INVALID_CACHE;	case INSTRUCTION_CACHE:	    status = ERROR;	}    return status;    }/******************************************************************************** cacheSh7700Disable - disable a SH7700 cache** This routine flushes and disables the specified SH7700 cache.*              ^^^^^^^     ^^^^^^^^* RETURNS: OK, or ERROR if the specified cache type was invalid.** NOMANUAL*/LOCAL STATUS cacheSh7700Disable    (    CACHE_TYPE cache    )    {    STATUS status;    switch (cache) 	{	case DATA_CACHE:	    if ((status = cacheSh7700On (FALSE)) == OK)	/* flush and disable */		{		cacheDataEnabled = FALSE;		cacheFuncsSet ();	/* clear cache function pointers */		}	    break;	default:	    errno = S_cacheLib_INVALID_CACHE;	case INSTRUCTION_CACHE:	    status = ERROR;	}    return status;    }/******************************************************************************** cacheSh7700Invalidate - invalidate all or some entries from a SH7700 cache** This routine invalidates all or some entries of the SH7700 cache.** RETURNS: OK, or ERROR if the cache type is invalid or the cache control* is not supported.** NOMANUAL*/LOCAL STATUS cacheSh7700Invalidate    (    CACHE_TYPE cache,    void *     from,    size_t     bytes    )    {    if (bytes == ENTIRE_CACHE)	{	UINT32 ccr = cacheSh7700CCRGet ();	if ((ccr & (CCR_WRITE_BACK_P1 | CCR_WRITE_THRU)) == CCR_WRITE_THRU)	    {	    cacheSh7700CFlush ();	    return OK;	    }	}    return cacheSh7700Clear (cache, from, bytes);    }/******************************************************************************** cacheSh7700Clear - clear all or some entries from a SH7700 cache** This routine flushes and invalidates all or some entries of the specified* SH7700 cache.** RETURNS: OK, or ERROR if the cache type is invalid or the cache control* is not supported.** NOMANUAL*/LOCAL STATUS cacheSh7700Clear    (    CACHE_TYPE cache,    void *     from,		/* address to clear */    size_t     bytes    )    {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡的av中国片| 国模一区二区三区白浆| 欧美国产综合一区二区| 久久久国产精华| 久久久久久久久久美女| 久久久久久一二三区| 久久午夜免费电影| 国产视频一区二区在线| 国产精品久久夜| 中文字幕一区二区三区在线观看| 欧美激情在线观看视频免费| 中文字幕高清不卡| 自拍偷在线精品自拍偷无码专区| 欧美极品少妇xxxxⅹ高跟鞋 | 日韩情涩欧美日韩视频| 欧美大度的电影原声| 2017欧美狠狠色| 国产精品久久综合| 亚洲一区二区在线观看视频 | 亚洲色图欧美偷拍| 亚洲精品国产精品乱码不99| 午夜欧美在线一二页| 麻豆精品一区二区三区| 国产1区2区3区精品美女| 99re热这里只有精品视频| 欧美日韩亚洲综合在线| 欧美不卡在线视频| 国产精品成人网| 天堂影院一区二区| 风间由美一区二区av101| 波多野洁衣一区| 91精品中文字幕一区二区三区| 日韩亚洲国产中文字幕欧美| 国产午夜亚洲精品理论片色戒| 亚洲免费观看高清完整版在线| 亚洲高清视频在线| 国产99久久久国产精品潘金网站| 欧美中文字幕一二三区视频| 欧美成人女星排名| 亚洲一区视频在线观看视频| 国产精品一区二区黑丝| 欧美日韩久久一区二区| 国产精品久久午夜夜伦鲁鲁| 日韩电影一区二区三区四区| 99视频有精品| 久久这里只有精品6| 天天影视色香欲综合网老头| 成人免费毛片a| 日韩午夜在线观看| 亚洲激情图片一区| 成人av动漫网站| 久久综合久久久久88| 亚洲成人自拍一区| 91在线一区二区三区| 久久免费美女视频| 免费在线看一区| 欧亚一区二区三区| 国产精品欧美一级免费| 国产一区二区福利视频| 日韩你懂的在线观看| 亚洲成人一区在线| 欧美性做爰猛烈叫床潮| 亚洲欧洲www| 99久久久久免费精品国产| 久久久99久久| 国产成人综合亚洲网站| 欧美一区二区三区白人 | 欧美精品xxxxbbbb| 亚洲狠狠丁香婷婷综合久久久| 国产激情一区二区三区桃花岛亚洲 | 激情另类小说区图片区视频区| 欧美日韩黄色一区二区| 亚洲成a天堂v人片| 欧美久久高跟鞋激| 奇米一区二区三区av| 欧美一区二区二区| 麻豆国产精品777777在线| 日韩一级免费观看| 久久99国产精品尤物| 日韩写真欧美这视频| 久久国产精品免费| 欧美成人a视频| 国产精品一区一区| 国产精品乱码妇女bbbb| 成人国产亚洲欧美成人综合网| 国产欧美日韩精品在线| av成人免费在线观看| 亚洲欧美欧美一区二区三区| 色94色欧美sute亚洲线路一ni| 一区二区三区视频在线看| 欧美日产国产精品| 日本一不卡视频| 久久亚洲一区二区三区明星换脸| 国产精品一品视频| 国产精品国产三级国产a| 欧洲人成人精品| 麻豆高清免费国产一区| 亚洲国产成人私人影院tom| 91在线视频免费观看| 日韩精品一级中文字幕精品视频免费观看| 欧美日韩在线综合| 国产成人在线视频网址| 一区二区三区中文免费| 日韩精品中午字幕| 成人av网址在线观看| 日韩中文字幕区一区有砖一区| 日韩一区二区三区在线观看| 丁香婷婷深情五月亚洲| 午夜精品久久久久久久99樱桃| 精品国产自在久精品国产| 99麻豆久久久国产精品免费| 三级亚洲高清视频| 亚洲欧美一区二区三区极速播放 | 国产精品18久久久久久久网站| 国产精品国产三级国产aⅴ入口 | 国产精品一级在线| 亚洲在线观看免费视频| 久久蜜桃一区二区| 欧美福利一区二区| 91欧美一区二区| 国产精品18久久久久久久久久久久| 一区二区三区日韩精品视频| 欧美精品一区二区三区久久久| 91黄色免费版| www.色精品| 精品无码三级在线观看视频| 亚洲一区二区三区爽爽爽爽爽| 欧美国产日韩亚洲一区| 欧美大尺度电影在线| 精品视频1区2区3区| 91免费版在线看| 国产69精品久久久久777| 久久www免费人成看片高清| 亚洲一区免费观看| 国产精品成人免费精品自在线观看| 日韩欧美在线综合网| 欧美男女性生活在线直播观看| 国产成人综合在线播放| 国内久久精品视频| 久久99在线观看| 久久99久久99| 男女性色大片免费观看一区二区 | 亚洲一二三区在线观看| 国产精品久久久久久久久动漫| 久久久久久亚洲综合| 精品国产第一区二区三区观看体验| 欧美日韩一区二区三区四区五区| 99re亚洲国产精品| 色综合久久久久综合| 色伊人久久综合中文字幕| 99国内精品久久| 91精品办公室少妇高潮对白| 99久久99久久综合| 91在线观看美女| 色老汉一区二区三区| 欧美系列在线观看| 欧美日韩精品一区二区| 6080国产精品一区二区| 91精品国产美女浴室洗澡无遮挡| 欧美欧美欧美欧美首页| 538prom精品视频线放| 日韩免费福利电影在线观看| 欧美tickling挠脚心丨vk| 久久理论电影网| 国产精品全国免费观看高清 | 成人ar影院免费观看视频| 风流少妇一区二区| 91色在线porny| 欧美日韩不卡在线| 久久人人超碰精品| 国产精品久久看| 亚洲成人一区在线| 精品一区在线看| 91小视频在线| 91麻豆精品国产91久久久资源速度 | 国产高清久久久| 国产91对白在线观看九色| 色噜噜狠狠成人网p站| 欧美一级在线观看| 国产欧美日本一区视频| 一区二区三区精品视频在线| 日本欧美一区二区三区| 国产凹凸在线观看一区二区| 色视频成人在线观看免| 精品少妇一区二区三区 | 欧美一区二区精美| 国产欧美一区二区精品忘忧草 | 综合欧美一区二区三区| 日韩在线一二三区| www.亚洲在线| 欧美成人伊人久久综合网| 亚洲男人天堂av网| 国产一区二区影院| 欧美日韩黄视频| 国产精品免费视频一区| 强制捆绑调教一区二区| 色噜噜狠狠色综合中国| 久久综合成人精品亚洲另类欧美 | 久久精品理论片| 不卡的av在线播放|