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

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

?? cachesh7729lib.c

?? vxworks的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* cacheSh7729Lib.c - Hitachi SH7729 cache management library *//* Copyright 1996-2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01k,23nov01,hk   removed checking vmLibInfo.vmLibInstalled in cacheSh7729DmaFree		 and cacheSh7729P2DmaFree for INCLUDE_MMU_BASIC (SPR 71807).01k,24oct01,zl   fixes for doc builds.01j,27feb01,hk   change HITACHI to Hitachi in library description.01i,07dec00,hk   set cacheMmuAvailable to T/F depending on data cache mode.01h,21nov00,hk   change to set NULL for cacheLib.flushRtn in write-through mode.01g,18nov00,hk   made cacheSh7729Disable() NMI-safe. secured locked cache way		 from cacheClear(ENTIRE_CACHE).01f,17nov00,hk   fixed cache locking support: changed cacheSh7729CCR2Set() to		 return CCR2 on SH7729R. changed cacheSh7729Load() to return		 status. enabled cache locking in copyback mode for SH7729R.		 added cacheSh7729CCR2Get(). reset CCR2 upon disabling cache.		 changed cacheSh7729Lock() to disable cache before modifying		 CCR2, and to verify cached data and return the locking status.01e,25oct00,hk   disabled cache locking in copyback mode.01d,11sep00,hk   moved critical operations to cacheSh7729ALib. made cache tag		 operations more precise. improved cacheSh7729P2DmaMalloc().		 added cache dump tools. added cacheSh7729Lock().01c,28jan99,jmb  fix copyback mode -- "way" values were incorrect in                 clear routine.  Also, add a writeback to cacheEnable so                 that calling cacheEnable when cache is already enabled                 will invalidate without hanging in copyback mode.01b,01jul98,jmc  increased cache size to 256 entries01a,24jun98,jmc  derived from cacheSh7700Lib.c-01k,06feb98,jmc.*//*DESCRIPTIONThis library contains architecture-specific cache library functions forthe Hitachi SH7729 architecture.The cache is 16-Kbytes (16 bytes X 256 entries X 4 ways) mixed instructionand data cache that operates in write-through or write-back (copyback) mode.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 accessesto the address array in privileged mode.  There is a write-back buffer whichcan hold one line of cache entry, and the completion of write-back cycle isassured by accessing to any cache through 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 cacheSh7729CCRSetOp (UINT32 ccr);IMPORT UINT32 cacheSh7729CCRGet (void);IMPORT UINT32 cacheSh7729CCR2SetOp (UINT32 ccr2);IMPORT STATUS cacheSh7729OnOp (BOOL on);IMPORT STATUS cacheSh7729LoadOp (UINT32 *p_ccr2, UINT32 from, UINT32 to);IMPORT void cacheSh7729CFlushOp (void);IMPORT void cacheSh7729AFlushOp (UINT32 from, UINT32 to);IMPORT void cacheSh7729MFlushOp (UINT32 *pt, int ix, UINT32 from, UINT32 to);/* local definitions */#define CAC_ADRS_ARRAY		0xf0000000#define CAC_DATA_ARRAY		0xf1000000#define CAC_DATA_SIZE		16384#define CAC_LINE_SIZE		16/* SH7729 Cache Control Register bit define */#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/* SH7729 Cache Control Register-2 bit define */#define CCR2_LOCK_WAY2		0x00000001	/* lock way-2 */#define CCR2_LOAD_WAY2		0x00000002	/* load way-2 */#define CCR2_LOCK_WAY3		0x00000100	/* lock way-3 */#define CCR2_LOAD_WAY3		0x00000200	/* load way-3 *//* forward declarations */LOCAL STATUS cacheSh7729Enable (CACHE_TYPE cache);LOCAL STATUS cacheSh7729Disable (CACHE_TYPE cache);LOCAL STATUS cacheSh7729Lock (CACHE_TYPE cache, void *from, size_t bytes);LOCAL STATUS cacheSh7729Unlock (CACHE_TYPE cache, void *from, size_t bytes);LOCAL STATUS cacheSh7729Clear (CACHE_TYPE cache, void *from, size_t bytes);LOCAL STATUS cacheSh7729Invalidate (CACHE_TYPE cache, void *from, size_t bytes);LOCAL void * cacheSh7729DmaMalloc (size_t bytes);LOCAL STATUS cacheSh7729DmaFree (void * pBuf);LOCAL void * cacheSh7729P2DmaMalloc (size_t bytes);LOCAL STATUS cacheSh7729P2DmaFree (void * pBuf);/* local function pointers to relocate cacheSh7729ALib entries */LOCAL VOIDFUNCPTR cacheSh7729CCRSet  = (VOIDFUNCPTR)0x1234;LOCAL FUNCPTR     cacheSh7729CCR2Set =     (FUNCPTR)0x1234;LOCAL FUNCPTR     cacheSh7729On      =     (FUNCPTR)0x1234;LOCAL FUNCPTR     cacheSh7729Load    =     (FUNCPTR)0x1234;LOCAL VOIDFUNCPTR cacheSh7729CFlush  = (VOIDFUNCPTR)0x1234;LOCAL VOIDFUNCPTR cacheSh7729AFlush  = (VOIDFUNCPTR)0x1234;LOCAL VOIDFUNCPTR cacheSh7729MFlush  = (VOIDFUNCPTR)0x1234;LOCAL UINT32 ccr2 = 0;		/* copy of write-only CCR2 *//******************************************************************************** cacheSh7729LibInit - initialize the SH7729 cache library* * This routine initializes the cache library for the Hitachi SH7729 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 SH7729 processor:** .TS* tab(|);* l l l l.* | SH7729:| CACHE_WRITETHROUGH  | (cache for instruction and data)* |        | CACHE_COPYBACK      | (cache for instruction and data)* |        | CACHE_COPYBACK_P1   | (copy-back cache for P1)* |        | 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 cacheSh7729LibInit    (    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          = cacheSh7729Enable;    cacheLib.disableRtn         = cacheSh7729Disable;    cacheLib.lockRtn		= cacheSh7729Lock;    cacheLib.unlockRtn		= cacheSh7729Unlock;    /* Flush and invalidate are the same in COPYBACK mode.  Setting the flush     * bit in the CCR doesn't do a write-back, so call cacheSh7729Clear if     * using COPYBACK (write-back) mode.     */    if (dataMode & (CACHE_COPYBACK | CACHE_COPYBACK_P1))	{	cacheLib.flushRtn	= cacheSh7729Clear;	cacheLib.invalidateRtn	= cacheSh7729Clear;	}    else	{	cacheLib.flushRtn	= NULL;	cacheLib.invalidateRtn	= cacheSh7729Invalidate;	}    cacheLib.clearRtn           = cacheSh7729Clear;    cacheLib.textUpdateRtn      = NULL;		/* inst/data mixed cache */    cacheLib.pipeFlushRtn       = NULL;    /* setup P2 function pointers for cache sensitive operations */    cacheSh7729CCRSet		= (VOIDFUNCPTR)(((UINT32)cacheSh7729CCRSetOp				& SH7700_PHYS_MASK) | SH7700_P2_BASE);    cacheSh7729CCR2Set		= (FUNCPTR)(((UINT32)cacheSh7729CCR2SetOp				& SH7700_PHYS_MASK) | SH7700_P2_BASE);    cacheSh7729On		= (FUNCPTR)(((UINT32)cacheSh7729OnOp				& SH7700_PHYS_MASK) | SH7700_P2_BASE);    cacheSh7729Load		= (FUNCPTR)(((UINT32)cacheSh7729LoadOp				& SH7700_PHYS_MASK) | SH7700_P2_BASE);    cacheSh7729CFlush		= (VOIDFUNCPTR)(((UINT32)cacheSh7729CFlushOp				& SH7700_PHYS_MASK) | SH7700_P2_BASE);    cacheSh7729AFlush		= (VOIDFUNCPTR)(((UINT32)cacheSh7729AFlushOp				& SH7700_PHYS_MASK) | SH7700_P2_BASE);    cacheSh7729MFlush		= (VOIDFUNCPTR)(((UINT32)cacheSh7729MFlushOp				& 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)cacheSh7729P2DmaMalloc;	cacheLib.dmaFreeRtn     = cacheSh7729P2DmaFree;	cacheMmuAvailable	= TRUE;		/* for cacheFuncsSet() */	}    else	{	cacheLib.dmaMallocRtn   = (FUNCPTR)cacheSh7729DmaMalloc;	cacheLib.dmaFreeRtn     = cacheSh7729DmaFree;	cacheMmuAvailable	= FALSE;	/* needs MMU support for cache						   safe allocation */	}    cacheLib.dmaVirtToPhysRtn	= NULL;    cacheLib.dmaPhysToVirtRtn	= NULL;    /* check for parameter errors (ignore instMode) */    if ((dataMode & ~(CACHE_WRITETHROUGH | CACHE_COPYBACK | CACHE_COPYBACK_P1 |            CACHE_DMA_BYPASS_P0 | CACHE_DMA_BYPASS_P1 | CACHE_DMA_BYPASS_P3)) ||	((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)))	{	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 and CCR2 */	{	UINT32 ccr = 0;	if (dataMode & CACHE_WRITETHROUGH) ccr |= CCR_WRITE_THRU;	if (dataMode & CACHE_COPYBACK_P1)  ccr |= CCR_WRITE_BACK_P1;	cacheSh7729CCRSet (ccr);		/* cache is still disabled */	cacheSh7729CCR2Set (ccr2);		/* unlock way-2 and way-3 */	}    return OK;    }/******************************************************************************** cacheSh7729CCR2Get - get value of CCR2** This routine returns the current value of CCR2** NOMANUAL*/UINT32 cacheSh7729CCR2Get (void)    {    return ccr2;	/* return copied variable since CCR2 is write-only */    }/******************************************************************************** cacheSh7729Enable - enable a SH7729 cache** This routine invalidates and enables the specified SH7729 cache.*              ^^^^^^^^^^^     ^^^^^^^* RETURNS: OK, or ERROR if the specified cache type was invalid.** NOMANUAL*/LOCAL STATUS cacheSh7729Enable    (    CACHE_TYPE cache    )    {    STATUS status;    switch (cache)	{	case DATA_CACHE:	    if ((status = cacheSh7729On (TRUE)) == OK)		{		cacheDataEnabled = TRUE;		cacheFuncsSet ();	/* set cache function pointers */		}	    break;	default:	    errno = S_cacheLib_INVALID_CACHE;	case INSTRUCTION_CACHE:	    status = ERROR;	}    return status;    }/******************************************************************************** cacheSh7729Disable - disable a SH7729 cache** This routine flushes and disables the specified SH7729 cache.*              ^^^^^^^     ^^^^^^^^* RETURNS: OK, or ERROR if the specified cache type was invalid.** NOMANUAL*/LOCAL STATUS cacheSh7729Disable    (    CACHE_TYPE cache    )    {    STATUS status;    switch (cache) 	{	case DATA_CACHE:	    if (ccr2 != 0)		{		ccr2 = 0;		cacheSh7729CCR2Set (ccr2);	/* unlock way-2 and way-3 */		}	    if ((status = cacheSh7729On (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;    }/******************************************************************************** cacheSh7729Lock - lock a range of memory to specified cache way** NOMANUAL*/LOCAL STATUS cacheSh7729Lock    (    CACHE_TYPE cache,    void *     from,    size_t     bytes    )    {    UINT32 p = (UINT32)from;    UINT32 ca_begin, ca_end;	/* address to cache */    UINT32 da;			/* data array base address */    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 */    else if (bytes == 0)	return OK;    switch (cache)	{	case WAY2_CACHE:	    ccr2 |= (CCR2_LOAD_WAY2 | CCR2_LOCK_WAY2);	    da = 0xf1002000;	    break;	case WAY3_CACHE:	    ccr2 |= (CCR2_LOAD_WAY3 | CCR2_LOCK_WAY3);	    da = 0xf1003000;	    break;	default:	    return ERROR;	}    /* normalize address range to lock */    ca_begin = p & ~(CAC_LINE_SIZE - 1);    ca_end   = p + bytes - 1;    if (ca_end > ca_begin + 4095)	ca_end = ca_begin + 4095;    /* lock-in, update ccr2 */    if (cacheSh7729Load (&ccr2, ca_begin, ca_end) != OK)	return ERROR;    /* verify locked data */    for (p = ca_begin; p <= ca_end; p += 4)	{	UINT32 cached = *(UINT32 *)(da | (p & 0x00000ffc));	UINT32 memory = *(UINT32 *)p;	if (cached != memory)	    return ERROR;	}    return OK;    }/******************************************************************************** cacheSh7729Unlock - unlock specified cache way** NOMANUAL*/LOCAL STATUS cacheSh7729Unlock    (    CACHE_TYPE cache,    void *     from,    size_t     bytes    )    {    switch (cache)	{	case WAY2_CACHE: ccr2 &= ~(CCR2_LOAD_WAY2 | CCR2_LOCK_WAY2);	break;	case WAY3_CACHE: ccr2 &= ~(CCR2_LOAD_WAY3 | CCR2_LOCK_WAY3);	break;	default:	    return ERROR;	}    cacheSh7729CCR2Set (ccr2);    return OK;    }/******************************************************************************** cacheSh7729Invalidate - invalidate all or some entries from a SH7729 cache** This routine invalidates all or some entries of the SH7729 cache.** RETURNS: OK, or ERROR if the cache type is invalid or the cache control* is not supported.** NOMANUAL

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合欧美一区二区三区| 日本网站在线观看一区二区三区| 亚洲人成在线播放网站岛国 | 免费在线看一区| 国产91对白在线观看九色| 欧美女孩性生活视频| 国产视频亚洲色图| 日韩国产一二三区| 99国产精品久久久久久久久久久| 日韩欧美在线综合网| 亚洲免费观看在线视频| 国产成人精品免费网站| 欧美一级黄色大片| 亚洲福中文字幕伊人影院| 国产成人av在线影院| 精品入口麻豆88视频| 亚洲一区二区三区在线看| 99在线视频精品| 久久久精品免费网站| 久久机这里只有精品| 51午夜精品国产| 亚洲伊人伊色伊影伊综合网| 99国产精品久久久久| 国产视频不卡一区| 国产一区二区三区蝌蚪| 日韩欧美综合在线| 日韩**一区毛片| 欧美日韩视频一区二区| 日韩二区三区在线观看| 欧美日韩一区二区三区高清| 亚洲精品亚洲人成人网在线播放| av一二三不卡影片| 亚洲欧洲日韩综合一区二区| 国产白丝网站精品污在线入口| 日韩女同互慰一区二区| 免费成人av在线播放| 日韩一级二级三级精品视频| 日韩av一区二区三区四区| 91精品国产入口在线| 免费日本视频一区| 欧美刺激午夜性久久久久久久| 奇米亚洲午夜久久精品| 日韩欧美一区二区三区在线| 麻豆精品一区二区av白丝在线| 8v天堂国产在线一区二区| 日韩av在线播放中文字幕| 欧美成人一区二区三区在线观看| 久久99久久久久| 久久久天堂av| 99久久免费国产| 亚洲最大成人综合| 在线观看91av| 韩国女主播一区二区三区| 国产午夜久久久久| 91玉足脚交白嫩脚丫在线播放| 亚洲日本一区二区三区| 欧美色成人综合| 久久精品999| 国产精品久久久久久久久果冻传媒| 99久久久久免费精品国产| 一区二区三区自拍| 日韩一级在线观看| 国产精品一级片在线观看| 国产精品乱码人人做人人爱| 91高清视频免费看| 老司机精品视频一区二区三区| 精品久久久久一区| 91啪九色porn原创视频在线观看| 亚洲图片欧美一区| 国产性色一区二区| 欧美性感一区二区三区| 激情综合色综合久久| 日韩码欧中文字| 欧美一区二区网站| 9i在线看片成人免费| 蜜桃传媒麻豆第一区在线观看| 久久久国产精品午夜一区ai换脸| 91啪亚洲精品| 国产主播一区二区| 亚洲综合成人网| 久久五月婷婷丁香社区| 欧美午夜精品一区二区蜜桃| 国产自产视频一区二区三区| 亚洲在线视频免费观看| 国产亚洲欧美日韩日本| 欧美精品久久一区二区三区| 成人福利视频在线看| 日本va欧美va瓶| 亚洲激情av在线| 欧美经典三级视频一区二区三区| 欧美日本视频在线| 不卡的av网站| 国产一区二区三区黄视频 | 欧美日韩国产a| 国产成人综合在线观看| 日本在线不卡视频| 一二三区精品视频| 国产精品午夜在线| 日韩一级精品视频在线观看| 在线视频一区二区三区| 成人sese在线| 国产成人三级在线观看| 日日夜夜一区二区| 亚洲精品高清视频在线观看| 久久精品免费在线观看| 欧美一区二区三区视频在线| 91久久一区二区| 成人18精品视频| 国产成人av一区| 国产一本一道久久香蕉| 久久99久久久久| 喷白浆一区二区| 日日嗨av一区二区三区四区| 亚洲美女淫视频| 国产精品国产馆在线真实露脸| 久久久综合网站| 国产午夜一区二区三区| 久久女同互慰一区二区三区| 日韩欧美国产精品| 精品欧美一区二区在线观看| 日韩亚洲欧美高清| 精品国产三级a在线观看| 日韩欧美国产成人一区二区| 日韩色视频在线观看| 精品久久久久久久久久久久包黑料 | 不卡av在线网| 91视频免费播放| 91久久精品一区二区三| 欧美视频在线一区二区三区| 欧美性极品少妇| 日韩一级二级三级精品视频| 精品久久国产字幕高潮| 国产欧美一区视频| 亚洲人成小说网站色在线| 一区二区三区在线观看欧美 | 亚洲6080在线| 丝袜脚交一区二区| 激情综合亚洲精品| 春色校园综合激情亚洲| 91浏览器打开| 欧美日韩免费视频| 欧美成人精品1314www| 国产日韩三级在线| 有坂深雪av一区二区精品| 丝瓜av网站精品一区二区| 麻豆精品视频在线观看视频| 国产精品一区二区男女羞羞无遮挡| 成人在线视频一区二区| 欧美亚洲一区二区在线| 精品国产a毛片| 中文字幕中文字幕一区二区| 午夜久久久久久久久| 国产久卡久卡久卡久卡视频精品| www.66久久| 5566中文字幕一区二区电影| 久久久电影一区二区三区| 亚洲一区二区三区四区五区中文 | 一区二区三区91| 蜜臀av一区二区在线观看 | 青娱乐精品在线视频| 岛国精品一区二区| 91精品婷婷国产综合久久性色| 国产无人区一区二区三区| 亚洲在线免费播放| 成人永久免费视频| 欧美美女一区二区| 国产精品国产a级| 精品在线播放午夜| 欧美吞精做爰啪啪高潮| 中文字幕精品—区二区四季| 日韩在线播放一区二区| 99在线精品免费| 日韩亚洲欧美在线观看| 亚洲综合色网站| av不卡一区二区三区| 欧美成人a∨高清免费观看| 亚洲一区二区在线播放相泽| 成人免费视频播放| 日韩欧美成人一区| 亚洲福利视频三区| 色综合天天综合狠狠| 久久这里只精品最新地址| 三级亚洲高清视频| 欧美在线色视频| 自拍偷自拍亚洲精品播放| 国产美女娇喘av呻吟久久| 欧美一卡2卡三卡4卡5免费| 亚洲午夜精品在线| 在线亚洲一区二区| 亚洲同性同志一二三专区| 成人小视频在线| 国产日产欧产精品推荐色| 国产曰批免费观看久久久| 日韩午夜在线影院| 免费日韩伦理电影| 欧美电影免费观看高清完整版在线 | 久久综合色婷婷| 老司机精品视频在线| 日韩欧美一级在线播放| 免费在线观看不卡|