亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
综合网在线视频| 欧美刺激脚交jootjob| 丰满白嫩尤物一区二区| 蜜臀av一级做a爰片久久| 一区二区激情小说| 亚洲1区2区3区4区| 免费成人av在线播放| 看电影不卡的网站| 精品一区二区三区免费播放| 国产真实乱偷精品视频免| 国产三级欧美三级日产三级99| 成人91在线观看| 色婷婷久久一区二区三区麻豆| 成人h动漫精品一区二区| 天天做天天摸天天爽国产一区 | 免费人成精品欧美精品| 免费在线视频一区| 国产精品国产自产拍高清av王其 | 欧美在线观看18| 国产一区二区视频在线播放| 国精产品一区一区三区mba视频 | av电影在线观看一区| 日日夜夜精品视频免费| 中文字幕乱码亚洲精品一区| 1024成人网色www| 精品国产乱码久久久久久久| 欧美激情综合五月色丁香 | 欧美一区二区久久久| 久久中文娱乐网| |精品福利一区二区三区| 精品毛片乱码1区2区3区| 欧美精品一区二区三区视频| 国产喷白浆一区二区三区| 一区二区在线免费观看| 久久9热精品视频| 日韩高清电影一区| 亚洲综合无码一区二区| 久久99国产精品麻豆| 色视频成人在线观看免| 精品日本一线二线三线不卡| 综合久久综合久久| 亚洲同性同志一二三专区| 蜜桃免费网站一区二区三区| 亚洲一区在线电影| 一个色妞综合视频在线观看| 中文字幕一区av| 亚洲图片你懂的| 国产精品123区| 欧美高清视频不卡网| 亚洲欧美偷拍另类a∨色屁股| 亚洲免费在线播放| 久久超碰97人人做人人爱| 日本高清视频一区二区| 国产欧美在线观看一区| 久久久av毛片精品| 国产亚洲福利社区一区| 久久久国产精品午夜一区ai换脸| 亚洲成人精品影院| 色综合色综合色综合色综合色综合| 91一区二区三区在线观看| 国产亚洲va综合人人澡精品| 日本欧美韩国一区三区| 欧美影院午夜播放| 日韩免费一区二区三区在线播放| 91麻豆精品国产| 久久一留热品黄| 青青草国产精品亚洲专区无| 国产在线一区二区| 欧美一区二区三区免费在线看| 亚洲成人资源网| 久久精品国产第一区二区三区| 欧美视频在线观看一区| 亚洲免费av网站| 久久黄色级2电影| 成人avav在线| 国产精品传媒入口麻豆| 波多野结衣亚洲一区| 欧美日韩另类国产亚洲欧美一级| 7777精品伊人久久久大香线蕉最新版| 欧美xxxxx裸体时装秀| 中文字幕一区二区三区不卡 | 久久99日本精品| 日韩免费电影一区| 亚洲欧美在线aaa| 亚洲国产日韩a在线播放 | 亚洲成av人片| 成人在线一区二区三区| 国产精品美女视频| 91在线一区二区| 亚洲宅男天堂在线观看无病毒| 韩国理伦片一区二区三区在线播放| 成人激情小说网站| 欧美一区二区三区四区高清| 蜜乳av一区二区| 精品国产乱码91久久久久久网站| 国产在线看一区| 中文字幕亚洲在| 欧美日韩国产成人在线免费| 国产精品国产三级国产普通话蜜臀| 日日欢夜夜爽一区| 色综合久久久久| 中文字幕乱码亚洲精品一区| 91久久奴性调教| 精品一区二区三区欧美| 欧美系列一区二区| 国产在线精品一区在线观看麻豆| 中国色在线观看另类| 久88久久88久久久| 欧美一区二区三区在线观看| 日韩伦理电影网| 成人h动漫精品一区二| 久久青草国产手机看片福利盒子| 午夜免费久久看| 国产精品免费久久久久| 国产在线不卡一区| 亚洲自拍欧美精品| 日本一区二区免费在线| 欧美色综合天天久久综合精品| 亚洲欧美一区二区在线观看| 91麻豆精品国产无毒不卡在线观看 | 91麻豆自制传媒国产之光| 蜜桃视频在线观看一区二区| 欧美精品三级在线观看| 亚洲高清视频在线| 中文av一区特黄| www.性欧美| 精品一区二区免费视频| 亚洲尤物视频在线| 国产精品人人做人人爽人人添| 国产精品456| 国产欧美久久久精品影院| 3atv在线一区二区三区| 琪琪久久久久日韩精品| 一区二区三区鲁丝不卡| 中文字幕第一区| 色综合天天视频在线观看| 国产不卡视频在线观看| 国产在线不卡一卡二卡三卡四卡| 国产日韩欧美不卡在线| thepron国产精品| 亚洲激情在线激情| 精品视频1区2区| 美女被吸乳得到大胸91| 亚洲成av人在线观看| 亚洲欧美日韩国产中文在线| 欧美三级电影在线看| 在线观看国产日韩| 91国模大尺度私拍在线视频| 日本三级韩国三级欧美三级| 亚洲18女电影在线观看| 亚洲香蕉伊在人在线观| 亚洲自拍偷拍图区| 亚洲成av人在线观看| 亚洲精品一线二线三线无人区| 欧美mv日韩mv国产网站app| 欧美一区二区三区免费观看视频| 91精品国产综合久久婷婷香蕉| 欧美久久一二区| 欧美一区二区三区四区高清| 日韩午夜在线播放| 久久久久国产精品厨房| 国产精品免费aⅴ片在线观看| 国产精品视频九色porn| 欧美欧美欧美欧美首页| 在线成人高清不卡| 99精品视频一区二区| 男人操女人的视频在线观看欧美 | 国产福利一区二区三区| 成人性色生活片免费看爆迷你毛片| 亚洲精品久久嫩草网站秘色| 亚洲高清不卡在线| 日本va欧美va欧美va精品| 国产一区在线精品| 三级不卡在线观看| 国产一区高清在线| 成年人午夜久久久| 国产精品伊人色| 91免费版pro下载短视频| 国产一区二区按摩在线观看| 成人avav影音| 欧美一区二区三区四区在线观看| 91丨九色丨国产丨porny| 欧美日韩国产综合一区二区三区| 欧美一级生活片| 在线观看日韩高清av| 成人网在线播放| 国产一区二区三区在线观看精品 | 免费一区二区视频| 国产91精品久久久久久久网曝门 | 中文字幕欧美三区| 久久综合九色综合久久久精品综合| 欧美激情一区二区三区不卡| 亚洲国产精品久久久久秋霞影院| 免费在线成人网| 日韩不卡手机在线v区| 粉嫩欧美一区二区三区高清影视| 欧美日韩日日夜夜| 欧美经典一区二区三区| 国产精品全国免费观看高清| 亚洲国产成人91porn|