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

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

?? cache.s

?? AT91RM9200的完整啟動代碼:包括loader, boot及U-boot三部分均已編譯通過!歡迎下載使用!
?? S
字號:
#include <config.h>
#include <74xx_7xx.h>
#include <version.h>

#include <ppc_asm.tmpl>
#include <ppc_defs.h>

#include <asm/cache.h>
#include <asm/mmu.h>

#ifndef CACHE_LINE_SIZE
# define CACHE_LINE_SIZE L1_CACHE_BYTES
#endif

#if CACHE_LINE_SIZE == 128
#define LG_CACHE_LINE_SIZE 7
#elif CACHE_LINE_SIZE == 32
#define LG_CACHE_LINE_SIZE 5
#elif CACHE_LINE_SIZE == 16
#define LG_CACHE_LINE_SIZE 4
#elif CACHE_LINE_SIZE == 8
#define LG_CACHE_LINE_SIZE 3
#else
# error "Invalid cache line size!"
#endif

/*
 * Invalidate L1 instruction cache.
 */
_GLOBAL(invalidate_l1_instruction_cache)
	mfspr	r3,PVR
	rlwinm	r3,r3,16,16,31
	cmpi	0,r3,1
	beqlr			/* for 601, do nothing */
	/* 603/604 processor - use invalidate-all bit in HID0 */
	mfspr	r3,HID0
	ori	r3,r3,HID0_ICFI
	mtspr	HID0,r3
	isync
	blr

/*
 * Invalidate L1 data cache.
 */
_GLOBAL(invalidate_l1_data_cache)
	mfspr	r3,HID0
	ori	r3,r3,HID0_DCFI
	mtspr	HID0,r3
	isync
	blr

/*
 * Flush data cache.
 */
_GLOBAL(flush_data_cache)
	lis	r3,0
	lis	r5,CACHE_LINE_SIZE
flush:
	cmp	0,1,r3,r5
	bge	done
	lwz	r5,0(r3)
	lis	r5,CACHE_LINE_SIZE
	addi	r3,r3,0x4
	b	flush
done:
	blr
/*
 * Write any modified data cache blocks out to memory
 * and invalidate the corresponding instruction cache blocks.
 * This is a no-op on the 601.
 *
 * flush_icache_range(unsigned long start, unsigned long stop)
 */
_GLOBAL(flush_icache_range)
	mfspr	r5,PVR
	rlwinm	r5,r5,16,16,31
	cmpi	0,r5,1
	beqlr				/* for 601, do nothing */
	li	r5,CACHE_LINE_SIZE-1
	andc	r3,r3,r5
	subf	r4,r3,r4
	add	r4,r4,r5
	srwi.	r4,r4,LG_CACHE_LINE_SIZE
	beqlr
	mtctr	r4
	mr	r6,r3
1:	dcbst	0,r3
	addi	r3,r3,CACHE_LINE_SIZE
	bdnz	1b
	sync				/* wait for dcbst's to get to ram */
	mtctr	r4
2:	icbi	0,r6
	addi	r6,r6,CACHE_LINE_SIZE
	bdnz	2b
	sync				/* additional sync needed on g4 */
	isync
	blr
/*
 * Write any modified data cache blocks out to memory.
 * Does not invalidate the corresponding cache lines (especially for
 * any corresponding instruction cache).
 *
 * clean_dcache_range(unsigned long start, unsigned long stop)
 */
_GLOBAL(clean_dcache_range)
	li	r5,CACHE_LINE_SIZE-1
	andc	r3,r3,r5	/* align r3 down to cache line */
	subf	r4,r3,r4	/* r4 = offset of stop from start of cache line */
	add	r4,r4,r5	/* r4 += cache_line_size-1 */
	srwi.	r4,r4,LG_CACHE_LINE_SIZE  /* r4 = number of cache lines to flush */
	beqlr				  /* if r4 == 0 return */
	mtctr	r4			  /* ctr = r4 */

	sync
1:	dcbst	0,r3
	addi	r3,r3,CACHE_LINE_SIZE
	bdnz	1b
	sync				/* wait for dcbst's to get to ram */
	blr

/*
 * Write any modified data cache blocks out to memory
 * and invalidate the corresponding instruction cache blocks.
 *
 * flush_dcache_range(unsigned long start, unsigned long stop)
 */
_GLOBAL(flush_dcache_range)
	li	r5,CACHE_LINE_SIZE-1
	andc	r3,r3,r5
	subf	r4,r3,r4
	add	r4,r4,r5
	srwi.	r4,r4,LG_CACHE_LINE_SIZE
	beqlr
	mtctr	r4

	sync
1:	dcbf	0,r3
	addi	r3,r3,CACHE_LINE_SIZE
	bdnz	1b
	sync				/* wait for dcbf's to get to ram */
	blr

/*
 * Like above, but invalidate the D-cache.  This is used by the 8xx
 * to invalidate the cache so the PPC core doesn't get stale data
 * from the CPM (no cache snooping here :-).
 *
 * invalidate_dcache_range(unsigned long start, unsigned long stop)
 */
_GLOBAL(invalidate_dcache_range)
	li	r5,CACHE_LINE_SIZE-1
	andc	r3,r3,r5
	subf	r4,r3,r4
	add	r4,r4,r5
	srwi.	r4,r4,LG_CACHE_LINE_SIZE
	beqlr
	mtctr	r4

	sync
1:	dcbi	0,r3
	addi	r3,r3,CACHE_LINE_SIZE
	bdnz	1b
	sync				/* wait for dcbi's to get to ram */
	blr

/*
 * Flush a particular page from the data cache to RAM.
 * Note: this is necessary because the instruction cache does *not*
 * snoop from the data cache.
 * This is a no-op on the 601 which has a unified cache.
 *
 *	void __flush_page_to_ram(void *page)
 */
_GLOBAL(__flush_page_to_ram)
	mfspr	r5,PVR
	rlwinm	r5,r5,16,16,31
	cmpi	0,r5,1
	beqlr				/* for 601, do nothing */
	rlwinm	r3,r3,0,0,19		/* Get page base address */
	li	r4,4096/CACHE_LINE_SIZE	/* Number of lines in a page */
	mtctr	r4
	mr	r6,r3
0:	dcbst	0,r3			/* Write line to ram */
	addi	r3,r3,CACHE_LINE_SIZE
	bdnz	0b
	sync
	mtctr	r4
1:	icbi	0,r6
	addi	r6,r6,CACHE_LINE_SIZE
	bdnz	1b
	sync
	isync
	blr

/*
 * Flush a particular page from the instruction cache.
 * Note: this is necessary because the instruction cache does *not*
 * snoop from the data cache.
 * This is a no-op on the 601 which has a unified cache.
 *
 *	void __flush_icache_page(void *page)
 */
_GLOBAL(__flush_icache_page)
	mfspr	r5,PVR
	rlwinm	r5,r5,16,16,31
	cmpi	0,r5,1
	beqlr				/* for 601, do nothing */
	li	r4,4096/CACHE_LINE_SIZE	/* Number of lines in a page */
	mtctr	r4
1:	icbi	0,r3
	addi	r3,r3,CACHE_LINE_SIZE
	bdnz	1b
	sync
	isync
	blr

/*
 * Clear a page using the dcbz instruction, which doesn't cause any
 * memory traffic (except to write out any cache lines which get
 * displaced).  This only works on cacheable memory.
 */
_GLOBAL(clear_page)
	li	r0,4096/CACHE_LINE_SIZE
	mtctr	r0
1:	dcbz	0,r3
	addi	r3,r3,CACHE_LINE_SIZE
	bdnz	1b
	blr

/*
 * Enable L1 Instruction cache
 */
_GLOBAL(icache_enable)
	mfspr	r3, HID0
	li	r5, HID0_ICFI|HID0_ILOCK
	andc	r3, r3, r5
	ori	r3, r3, HID0_ICE
	ori	r5, r3, HID0_ICFI
	mtspr	HID0, r5
	mtspr	HID0, r3
	isync
	blr

/*
 * Disable L1 Instruction cache
 */
_GLOBAL(icache_disable)
	mfspr	r3, HID0
	li	r5, 0
	ori	r5, r5, HID0_ICE
	andc	r3, r3, r5
	mtspr	HID0, r3
	isync
	blr

/*
 * Is instruction cache enabled?
 */
_GLOBAL(icache_status)
	mfspr	r3, HID0
	andi.	r3, r3, HID0_ICE
	blr


_GLOBAL(l1dcache_enable)
	mfspr	r3, HID0
	li	r5, HID0_DCFI|HID0_DLOCK
	andc	r3, r3, r5
	mtspr	HID0, r3		/* no invalidate, unlock */
	ori	r3, r3, HID0_DCE
	ori	r5, r3, HID0_DCFI
	mtspr	HID0, r5		/* enable + invalidate */
	mtspr	HID0, r3		/* enable */
	sync
	blr

/*
 * Enable data cache(s) - L1 and optionally L2
 * Calls l2cache_enable. LR saved in r5
 */
_GLOBAL(dcache_enable)
	mfspr	r3, HID0
	li	r5, HID0_DCFI|HID0_DLOCK
	andc	r3, r3, r5
	mtspr	HID0, r3		/* no invalidate, unlock */
	ori	r3, r3, HID0_DCE
	ori	r5, r3, HID0_DCFI
	mtspr	HID0, r5		/* enable + invalidate */
	mtspr	HID0, r3		/* enable */
	sync
#ifdef CFG_L2
	mflr	r5
	bl	l2cache_enable		/* uses r3 and r4 */
	sync
	mtlr	r5
#endif
	blr


/*
 * Disable data cache(s) - L1 and optionally L2
 * Calls flush_data_cache and l2cache_disable_no_flush.
 * LR saved in r4
 */
_GLOBAL(dcache_disable)
	mflr	r4			/* save link register */
	bl	flush_data_cache	/* uses r3 and r5 */
	sync
	mfspr	r3, HID0
	li	r5, HID0_DCFI|HID0_DLOCK
	andc	r3, r3, r5
	mtspr	HID0, r3		/* no invalidate, unlock */
	li	r5, HID0_DCE|HID0_DCFI
	andc	r3, r3, r5		/* no enable, no invalidate */
	mtspr	HID0, r3
	sync
#ifdef CFG_L2
	bl	l2cache_disable_no_flush /* uses r3 */
#endif
	mtlr	r4			/* restore link register */
	blr

/*
 * Is data cache enabled?
 */
_GLOBAL(dcache_status)
	mfspr	r3, HID0
	andi.	r3, r3, HID0_DCE
	blr

/*
 * Invalidate L2 cache using L2I and polling L2IP
 */
_GLOBAL(l2cache_invalidate)
	sync
	oris	r3, r3, L2CR_L2I@h
	sync
	mtspr	l2cr, r3
	sync
invl2:
	mfspr	r3, l2cr
	andi.	r3, r3, L2CR_L2IP
	bne	invl2
	/* turn off the global invalidate bit */
	mfspr	r3, l2cr
	rlwinm	r3, r3, 0, 11, 9
	sync
	mtspr	l2cr, r3
	sync
	blr

/*
 * Enable L2 cache
 * Calls l2cache_invalidate. LR is saved in r4
 */
_GLOBAL(l2cache_enable)
	mflr	r4			/* save link register */
	bl	l2cache_invalidate	/* uses r3 */
	sync
	lis	r3, L2_ENABLE@h
	ori	r3, r3, L2_ENABLE@l
	mtspr	l2cr, r3
	isync
	mtlr	r4			/* restore link register */
	blr

/*
 * Disable L2 cache
 * Calls flush_data_cache. LR is saved in r4
 */
_GLOBAL(l2cache_disable)
	mflr	r4			/* save link register */
	bl	flush_data_cache	/* uses r3 and r5 */
	sync
	mtlr	r4			/* restore link register */
l2cache_disable_no_flush:		/* provide way to disable L2 w/o flushing */
	lis	r3, L2_INIT@h
	ori	r3, r3, L2_INIT@l
	mtspr	l2cr, r3
	isync
	blr

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
a美女胸又www黄视频久久| 天堂va蜜桃一区二区三区漫画版| 欧美一卡二卡三卡四卡| 色诱视频网站一区| 欧美性猛交xxxxxx富婆| 欧美丝袜丝nylons| 欧美日韩和欧美的一区二区| 欧美日韩一区二区三区免费看| 欧美伊人久久久久久久久影院| 色综合久久中文综合久久97| 色噜噜狠狠色综合中国| 欧美专区在线观看一区| 欧美性受极品xxxx喷水| 欧美精品在线视频| 精品免费一区二区三区| 日韩精品一区二| 久久精品视频网| 国产欧美日韩精品a在线观看| 欧美激情在线看| 国产精品久久久久久久久免费樱桃| 亚洲欧美在线视频| 一级特黄大欧美久久久| 天天综合天天综合色| 精品一区二区免费| 成人精品视频网站| 91精品婷婷国产综合久久性色| 亚洲精品一区二区三区在线观看| 国产人妖乱国产精品人妖| 亚洲视频每日更新| 日本在线不卡视频| av一区二区久久| 日韩欧美国产综合在线一区二区三区| 精品少妇一区二区三区日产乱码| 中文字幕乱码亚洲精品一区 | 日韩av不卡在线观看| 精品一区精品二区高清| 色婷婷国产精品综合在线观看| 欧美日韩在线直播| 久久精品视频免费观看| 五月婷婷久久综合| 91美女精品福利| 久久一二三国产| 天天av天天翘天天综合网色鬼国产| 国产在线看一区| 欧美日韩国产在线播放网站| 国产人久久人人人人爽| 日韩vs国产vs欧美| 一本久久精品一区二区| 久久看人人爽人人| 青青草91视频| 欧美日韩国产大片| 亚洲人精品午夜| 国产在线不卡一卡二卡三卡四卡| 日本高清不卡一区| 综合分类小说区另类春色亚洲小说欧美| 美女免费视频一区二区| 在线免费观看日本一区| 久久网这里都是精品| 三级成人在线视频| 欧美亚洲综合网| 亚洲欧美激情一区二区| 成人黄色综合网站| 久久久久国产精品麻豆ai换脸 | 国产91在线看| 精品国产伦一区二区三区观看方式 | 在线免费不卡视频| 亚洲同性同志一二三专区| 国产成人高清在线| 久久久影视传媒| 国产在线精品一区二区不卡了| 91精品国产色综合久久 | 日韩一区二区精品| 日韩精品乱码免费| 91精品欧美一区二区三区综合在| 亚洲国产你懂的| 欧美三级电影一区| 亚洲国产视频一区二区| 色综合久久久久综合| 国产欧美日韩在线视频| 国产精品一级黄| 国产欧美一区二区在线观看| 久久精品国产成人一区二区三区| 日韩一级黄色片| 久久99精品视频| 久久久五月婷婷| 国产成人精品一区二| 亚洲国产经典视频| 成人激情综合网站| 亚洲男女一区二区三区| 欧美三级视频在线播放| 男男视频亚洲欧美| 久久久一区二区三区捆绑**| 成人综合激情网| 亚洲美女屁股眼交3| 欧美日韩www| 国产乱妇无码大片在线观看| 国产精品免费久久| 欧美三级日本三级少妇99| 麻豆成人av在线| 国产精品私人影院| 欧美日韩综合在线| 美女一区二区久久| 亚洲日本va在线观看| 911精品国产一区二区在线| 极品少妇一区二区三区精品视频| 国产欧美一区二区精品忘忧草| 色综合天天在线| 日韩精品视频网| 亚洲国产成人午夜在线一区| 91极品美女在线| 久久99久久99| 亚洲一线二线三线视频| 精品国产一区二区三区av性色| 成人激情综合网站| 久久成人av少妇免费| 亚洲欧洲精品一区二区三区不卡| 欧美麻豆精品久久久久久| 高清国产午夜精品久久久久久| 亚洲成人自拍一区| 中文字幕一区二区在线观看 | 不卡的av电影| 免费在线看一区| 亚洲黄色免费网站| 欧美国产1区2区| 日韩一区二区三区精品视频| 色哟哟国产精品免费观看| 精一区二区三区| 日韩极品在线观看| 亚洲一区影音先锋| 中文字幕一区二区日韩精品绯色| 日韩一区二区免费高清| 欧美日韩在线电影| 91麻豆123| www.成人网.com| 成人午夜在线免费| 国产精品亚洲视频| 毛片一区二区三区| 日本少妇一区二区| 亚洲精品综合在线| 亚洲人妖av一区二区| 国产精品人人做人人爽人人添| 精品久久久久香蕉网| 欧美不卡一区二区三区四区| av在线一区二区三区| 成人av电影在线网| 精品亚洲免费视频| 精品无码三级在线观看视频| 91麻豆精品国产91久久久更新时间 | 久久影院午夜论| 日韩一区二区在线观看| 在线电影院国产精品| 欧美亚洲动漫精品| 欧美日韩一区精品| 欧美年轻男男videosbes| 色婷婷精品大视频在线蜜桃视频| 丁香另类激情小说| 国产成人自拍网| 久久精品国产亚洲高清剧情介绍 | 久久这里都是精品| 久久久av毛片精品| 欧美精品一区二区三区蜜桃| 精品国精品自拍自在线| 国产亚洲成年网址在线观看| 亚洲国产精品精华液2区45| 欧美国产综合色视频| 亚洲精品一区二区三区在线观看| 久久夜色精品一区| 国产精品欧美极品| 亚洲精品免费播放| 亚洲国产精品久久不卡毛片 | 一区二区中文字幕在线| 亚洲日本va午夜在线影院| 有坂深雪av一区二区精品| 亚洲福利视频一区| 久久精品99久久久| www.久久久久久久久| 欧美私模裸体表演在线观看| 精品日韩欧美一区二区| 欧美精彩视频一区二区三区| 亚洲精品免费在线| 久久99国产精品麻豆| 99久久精品免费看国产免费软件| 欧美午夜一区二区三区免费大片| 精品国产乱码久久久久久久| 亚洲欧洲另类国产综合| 日韩成人午夜精品| caoporn国产精品| 51午夜精品国产| 国产精品青草综合久久久久99| 亚洲综合一二区| 国产超碰在线一区| 91久久奴性调教| 国产亚洲欧洲997久久综合| 亚洲一区在线看| 波多野结衣中文字幕一区二区三区| 3d成人动漫网站| 亚洲黄色小说网站| 成人看片黄a免费看在线| 日韩一区二区免费高清| 亚洲一二三区不卡|