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

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

?? cacheaualib.s

?? vxworks的源代碼
?? S
?? 第 1 頁 / 共 2 頁
字號:
/* cacheAuALib.s - Alchemy Au cache management assembly routines *//* Copyright 2001 Wind River Systems, Inc. */	.data	.globl  copyright_wind_river/* * This file has been developed or significantly modified by the * MIPS Center of Excellence Dedicated Engineering Staff. * This notice is as per the MIPS Center of Excellence Master Partner * Agreement, do not remove this notice without checking first with * WR/Platforms MIPS Center of Excellence engineering management. *//*modification history--------------------01f,17may02,zmm  Global au1000 name changes. SPR 77333.01e,18jan02,agf  add explicit align directive to data section(s)01d,16nov01,tlc  Reorder icache loops in reset routine.01d,02aug01,mem  Diab integration01c,16jul01,ros  add CofE comment01b,16jul01,pes  Fixed bug in cacheAu1000PTextUpdate.01a,10jul01,mem  written.*//*DESCRIPTIONThis library contains Alchemy Au cache set-up and invalidation routineswritten in assembly language.  The Au utilizes a variable-sizeinstruction and data cache that operates in write-through mode.  Cacheline size also varies. See also the manual entry for cacheAuLib.For general information about caching, see the manual entry for cacheLib.INCLUDE FILES: cacheLib.hSEE ALSO: cacheAuLib, cacheLib*/#define _ASMLANGUAGE#include "vxWorks.h"#include "asm.h"/* * cacheop macro to automate cache operations * first some helpers... */#define _mincache(size, maxsize) \	bltu	size,maxsize,9f ;	\	move	size,maxsize ;		\9:#define _align(minaddr, maxaddr, linesize) \	.set noat ; \	subu	AT,linesize,1 ;	\	not	AT ;			\	and	minaddr,AT ;		\	addu	maxaddr,-1 ;		\	and	maxaddr,AT ;		\	.set at	/* general operations */#define doop1(op1) 			\	cache	op1,0(a0) ;		\	HAZARD_CACHE#define doop2(op1, op2) 		\	cache	op1,0(a0) ;		\	HAZARD_CACHE	  ;		\	cache	op2,0(a0) ;		\	HAZARD_CACHE#define doop1lw(op1)			\	lw	zero,0(a0)#define doop1lw1(op1)			\	cache	op1,0(a0) ;		\	HAZARD_CACHE	  ;		\	lw	zero,0(a0);		\	cache	op1,0(a0) ;		\	HAZARD_CACHE#define doop121(op1,op2)		\	cache	op1,0(a0) ;		\	HAZARD_CACHE	  ;		\	cache	op2,0(a0) ;		\	HAZARD_CACHE	  ;		\	cache	op1,0(a0) ;		\	HAZARD_CACHE#define _oploopn(minaddr, maxaddr, linesize, tag, ops) \	.set	noreorder ;		\10: 	doop##tag##ops ;	\	bne     minaddr,maxaddr,10b ;	\	add   	minaddr,linesize ;	\	.set	reorder/* finally the cache operation macros */#define vcacheopn(kva, n, cacheSize, cacheLineSize, tag, ops) \ 	blez	n,11f ;			\	addu	n,kva ;			\	_align(kva, n, cacheLineSize) ; \	_oploopn(kva, n, cacheLineSize, tag, ops) ; \11:#define icacheopn(kva, n, cacheSize, cacheLineSize, tag, ops) \	_mincache(n, cacheSize);	\ 	blez	n,11f ;			\	addu	n,kva ;			\	_align(kva, n, cacheLineSize) ; \	_oploopn(kva, n, cacheLineSize, tag, ops) ; \11:#define vcacheop(kva, n, cacheSize, cacheLineSize, op) \	vcacheopn(kva, n, cacheSize, cacheLineSize, 1, (op))#define icacheop(kva, n, cacheSize, cacheLineSize, op) \	icacheopn(kva, n, cacheSize, cacheLineSize, 1, (op))	/* globals */	.text	.globl GTEXT(cacheAuReset)		/* low level cache init */	.globl GTEXT(cacheAuRomTextUpdate)	/* cache-text-update */	.globl GTEXT(cacheAuDCFlushAll)	/* flush entire data cache */	.globl GTEXT(cacheAuDCFlush)		/* flush data cache locations */	.globl GTEXT(cacheAuDCInvalidateAll)	 /* flush entire data cache */	.globl GTEXT(cacheAuDCInvalidate)	 /* flush data cache locations */	.globl GTEXT(cacheAuDCFlushInvalidateAll)/* flush entire data cache */	.globl GTEXT(cacheAuDCFlushInvalidate)	/* flush data cache locations */	.globl GTEXT(cacheAuICInvalidateAll)	/* invalidate entire inst cache */	.globl GTEXT(cacheAuICInvalidate)	/* invalidate inst. cache */	.globl GTEXT(cacheAuPTextUpdateAll)	/* invalidate entire P-cache  */	.globl GTEXT(cacheAuPTextUpdate)	/* invalidate P-cache locn's  */	.globl GTEXT(cacheAuVirtPageFlush)	/* flush cache on MMU page unmap */	.globl GTEXT(cacheAuSync)		/* cache sync operation */	.globl GDATA(cacheAuDCacheSize)	/* data cache size */	.globl GDATA(cacheAuICacheSize)	/* inst. cache size */	.globl GDATA(cacheAuDCacheLineSize)	/* data cache line size */	.globl GDATA(cacheAuICacheLineSize)	/* inst. cache line size */	.data	.align	4cacheAuICacheSize:	.word	0			/* instruction cache size */cacheAuDCacheSize:	.word	0			/* data cache size */cacheAuICacheLineSize:	.word	0			/* instruction cache line size */cacheAuDCacheLineSize:	.word	0			/* data cache line size */	.text	.set	reorder/******************************************************************************** cacheAuReset - low level initialisation of the Au caches** This routine initialises the Au caches to ensure that all entries are* marked invalid.  It must be called by the ROM before any cached locations* are used to prevent the possibility of uninitialized data being written to* memory.** Arguments*	t0 - size of instruction cache in bytes*	t1 - size of instruction cache line in bytes*	t2 - size of data cache in bytes*	t3 - size of data cache line in bytes** RETURNS: N/A** void cacheAuReset */	.ent	cacheAuResetFUNC_LABEL(cacheAuReset)	/* disable all i/u and cache exceptions */	mfc0	v0,C0_SR	HAZARD_CP_READ	and	v1,v0,SR_BEV	or	v1,v0,SR_DE	mtc0	v1,C0_SR		/* set tag & ecc to 0 */	mtc0	zero,C0_TAGLO	mtc0	zero,C0_TAGHI	mtc0	zero,C0_ECC	HAZARD_CP_WRITE		/*	 * The caches are probably in an indeterminate state, so we force	 * good parity into them by doing an invalidate, load/fill, 	 * invalidate for each line.  We do an invalidate of each line in	 * the cache before we perform any fills, because we need to 	 * ensure that each way of an n-way associative cache is invalid	 * before performing the first Fill_I cacheop.	 */		/* 1: initialize icache tags */ 	li	a0,K0BASE	move	a2,t0		# icacheSize	move	a3,t1		# icacheLineSize	move	a1,a2	icacheop(a0,a1,a2,a3,Index_Store_Tag_I)	/* 2: fill icache */	li	a0,K0BASE	move	a2,t0		# icacheSize	move	a3,t1		# icacheLineSize	move	a1,a2	icacheop(a0,a1,a2,a3,Fill_I)	/* 1: clear icache tags */ 	li	a0,K0BASE	move	a2,t0		# icacheSize	move	a3,t1		# icacheLineSize	move	a1,a2	icacheop(a0,a1,a2,a3,Index_Store_Tag_I)	/* 1: initialize dcache tags */	li	a0,K0BASE	move	a2,t2		# dcacheSize	move	a3,t3		# dcacheLineSize	move	a1,a2	icacheop(a0,a1,a2,a3,Index_Store_Tag_D)		/* 2: fill dcache */	li	a0,K0BASE	move	a2,t2		# dcacheSize	move	a3,t3		# dcacheLineSize	move	a1,a2	icacheopn(a0,a1,a2,a3,1lw,(dummy))	/* 3: clear dcache tags */	li	a0,K0BASE	move	a2,t2		# dcacheSize	move	a3,t3		# dcacheLineSize	move	a1,a2	icacheop(a0,a1,a2,a3,Index_Store_Tag_D)	mtc0	v0,C0_SR        HAZARD_CP_WRITE	j	ra	.end	cacheAuReset/********************************************************************************* cacheAuDCFlushAll - flush entire data cache** There is no way to do *only* a data cache flush, so we do a flush-invalidate.* * RETURNS: N/A** void cacheAuDCFlushAll (void)*/	.ent	cacheAuDCFlushAllFUNC_LABEL(cacheAuDCFlushAll)	/* run from kseg1 */	la	t0,1f	li	t1,KSEG2_TO_KSEG0_MASK	and	t0,t0,t1	or	t0,K1BASE	j	t01:		/* Check for primary data cache */	lw	a2,cacheAuDCacheSize	blez	a2,99f	/*	 * Flush (actually, flush/invalidate) primary data cache	 */	lw	a3,cacheAuDCacheLineSize	li	a0,K0BASE	move	a1,a2	icacheop(a0,a1,a2,a3,Index_Writeback_Inv_D)99:		j	ra	.end	cacheAuDCFlushAll/********************************************************************************* cacheAuDCFlush - flush data cache locations** There is no way to do *only* a data cache flush, so we do a flush-invalidate.** RETURNS: N/A*** void cacheAuDCFlush*     (*     baseAddr,		/@ virtual address @/*     byteCount		/@ number of bytes to invalidate @/*     )*/	.ent	cacheAuDCFlushFUNC_LABEL(cacheAuDCFlush)	/* run from kseg1 */	la	t0,1f	li	t1,KSEG2_TO_KSEG0_MASK	and	t0,t0,t1	or	t0,K1BASE	j	t01:		/* Check for primary data cache */	lw	a2,cacheAuDCacheSize	blez	a2,99f	/* Flush-invalidate primary data cache */	lw	a3,cacheAuDCacheLineSize	vcacheop(a0,a1,a2,a3,Hit_Writeback_Inv_D)	99:	j	ra	.end	cacheAuDCFlush/********************************************************************************* cacheAuDCInvalidateAll - flush entire R7000 data cache** There is no Index_Invalidate_D function, so we do an * Index_Writeback_Inv_D instead.** RETURNS: N/A** void cacheAuDCInvalidateAll (void)*/	.ent	cacheAuDCInvalidateAllFUNC_LABEL(cacheAuDCInvalidateAll)	/* run from kseg1 */	la	t0,1f	li	t1,KSEG2_TO_KSEG0_MASK	and	t0,t0,t1	or	t0,K1BASE	j	t01:		/* Check for primary data cache */	lw	a2,cacheAuDCacheSize	blez	a2,99f	/* Flush-invalidate primary data cache */	lw	a3,cacheAuDCacheLineSize	li	a0,K0BASE	move	a1,a2	icacheop(a0,a1,a2,a3,Index_Writeback_Inv_D)	99:	j	ra	.end	cacheAuDCInvalidateAll/********************************************************************************* cacheAuDCInvalidate - flush data cache locations** RETURNS: N/A** void cacheAuDCInvalidate*     (*     baseAddr,		/@ virtual address @/*     byteCount		/@ number of bytes to invalidate @/*     )*/	.ent	cacheAuDCInvalidateFUNC_LABEL(cacheAuDCInvalidate)	/* run from kseg1 */	la	t0,1f	li	t1,KSEG2_TO_KSEG0_MASK	and	t0,t0,t1	or	t0,K1BASE	j	t01:		/* Check for primary data cache */	lw	a2,cacheAuDCacheSize	blez	a2,99f	/* Invalidate primary data cache */	lw	a3,cacheAuDCacheLineSize	vcacheop(a0,a1,a2,a3,Hit_Invalidate_D)99:	j	ra	.end	cacheAuDCInvalidate/******************************************************************************** cacheAuRomTextUpdate - cache text update like functionality from the bootApp**	a0	i-cache size*	a1	i-cache line size*	a2	d-cache size*	a3	d-cache line size** RETURNS: N/A*

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产精品99久久久久久老狼| 精品av久久707| 国产乱色国产精品免费视频| 蜜臀久久99精品久久久久久9 | 精品精品欲导航| 欧美日韩国产小视频在线观看| 91免费小视频| 91女人视频在线观看| 成人爱爱电影网址| 成人免费黄色在线| 国产精品88av| 成人a级免费电影| 色综合一个色综合| 欧美日韩国产影片| 欧美精品久久一区| 9191成人精品久久| 日韩欧美亚洲国产精品字幕久久久| 日韩视频一区二区三区 | 国产精品一卡二卡在线观看| 精品亚洲porn| 国产成人免费在线观看| 成人av网站在线观看| 成人a区在线观看| 欧美在线不卡视频| 欧美妇女性影城| 精品国产免费一区二区三区香蕉| 精品国产91乱码一区二区三区 | 久久久久久毛片| 国产欧美日韩在线视频| 亚洲欧美一区二区三区久本道91| 一级精品视频在线观看宜春院| 亚洲成人av电影| 国产在线国偷精品产拍免费yy| 成人av电影在线网| 欧美日本韩国一区二区三区视频| 精品蜜桃在线看| 一区二区三区中文字幕在线观看| 天天亚洲美女在线视频| 国产福利电影一区二区三区| 欧美专区在线观看一区| 精品久久久久久久久久久久久久久久久 | 国产美女视频91| 国产剧情一区二区| 欧美专区亚洲专区| 国产精品网站一区| 三级影片在线观看欧美日韩一区二区| 精品一区二区三区免费视频| 一道本成人在线| 国产人成亚洲第一网站在线播放 | 亚洲综合在线第一页| 九九久久精品视频| 欧美人与性动xxxx| 中文字幕一区二区在线播放 | 国产精品国产三级国产a| 亚洲国产日韩一级| 在线观看日韩精品| 蜜臀99久久精品久久久久久软件| 91片在线免费观看| 色视频成人在线观看免| 国产成人精品www牛牛影视| 欧美日韩国产影片| 亚洲日本韩国一区| 国产成人自拍网| 欧美哺乳videos| 五月综合激情日本mⅴ| 91丨porny丨首页| 欧美国产精品一区二区| 精品一区二区三区香蕉蜜桃| 欧美日韩激情一区二区三区| 一区二区三区电影在线播| 成人中文字幕电影| 亚洲国产精品精华液ab| 国产综合色在线| 久久久久久久综合| 国产成人亚洲精品狼色在线| wwww国产精品欧美| 国产麻豆成人传媒免费观看| 日韩午夜激情电影| 久久成人免费网| 欧美成人三级在线| 精品制服美女久久| 精品久久一区二区三区| 久久国产日韩欧美精品| 欧美人与z0zoxxxx视频| 三级成人在线视频| 欧美成人猛片aaaaaaa| 精品夜夜嗨av一区二区三区| 精品国产一区二区在线观看| 国产另类ts人妖一区二区| 欧美变态口味重另类| 国产福利一区在线观看| 欧美国产在线观看| 91免费观看在线| 亚洲成在人线免费| 日韩一区二区三区四区| 精品一区二区久久久| 国产精品美女久久久久久2018| 成人午夜视频福利| 一区二区欧美视频| 日韩欧美电影一二三| 国产成a人亚洲| 日韩理论片一区二区| 欧美亚一区二区| 蜜桃精品视频在线| 中文字幕一区三区| 日韩午夜电影av| 成人av免费在线观看| 五月开心婷婷久久| 国产视频视频一区| 日本精品一级二级| 精品一区二区三区免费观看| 中文字幕亚洲成人| 欧美一区二区三区四区视频| 国产精品综合视频| 亚洲狠狠爱一区二区三区| 日韩免费视频线观看| 91在线一区二区| 久久99久久精品| 亚洲综合成人在线视频| 欧美精品一区二区三| 日本高清不卡视频| 国产风韵犹存在线视精品| 国产精品免费av| 精品视频一区 二区 三区| 欧美精品一区二区三区蜜臀 | 大陆成人av片| 日日噜噜夜夜狠狠视频欧美人| 中文字幕成人av| 欧美电影免费观看高清完整版在线 | 亚洲欧美日韩久久精品| 日韩一区二区三免费高清| 成人小视频免费观看| 美女视频黄频大全不卡视频在线播放| 国产精品福利一区二区| 欧美不卡一区二区三区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 日韩av一二三| 亚洲日本在线天堂| 国产午夜精品一区二区| 91精品国产综合久久香蕉麻豆| 99精品视频在线观看| 国产传媒久久文化传媒| 久久精品99国产精品| 日本不卡视频在线观看| 亚洲成人午夜影院| 一区二区三区精品视频在线| 国产精品护士白丝一区av| 中文字幕欧美国产| 欧美国产视频在线| 日本一区二区视频在线观看| 久久久亚洲精华液精华液精华液 | 国产在线精品国自产拍免费| 美腿丝袜亚洲综合| 久久99久久99| 久久精品国产一区二区| 免费人成网站在线观看欧美高清| 天堂影院一区二区| 亚洲高清三级视频| 日韩电影一二三区| 日韩高清不卡一区二区| 丝袜亚洲另类丝袜在线| 日韩中文字幕亚洲一区二区va在线 | 国产精品国模大尺度视频| 国产精品免费看片| 一区二区三区在线观看国产| 亚洲欧美另类小说视频| 中文字幕电影一区| 成人中文字幕电影| 欧美亚洲国产bt| 欧美日韩亚洲综合一区二区三区| 99国产精品久| 在线观看三级视频欧美| 欧美日韩一级片网站| 日韩欧美激情在线| 国产视频视频一区| 亚洲美女视频一区| 天堂蜜桃一区二区三区| 九一久久久久久| 东方aⅴ免费观看久久av| 99久久免费精品| 在线播放91灌醉迷j高跟美女 | 97国产精品videossex| 欧美伊人久久大香线蕉综合69| 欧美午夜电影网| 精品国产一区二区三区av性色 | 日韩精品一区二| 日韩精品一区二区三区在线| 精品精品国产高清一毛片一天堂| 欧美激情资源网| 亚洲aaa精品| 国产福利不卡视频| 欧美日韩一区高清| 日韩久久久久久| 中文字幕亚洲欧美在线不卡| 亚洲第一激情av| 国产精品一区二区久激情瑜伽| 色8久久精品久久久久久蜜| 日韩欧美亚洲一区二区| 亚洲精品视频自拍| 国产中文字幕精品|