⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cachelib.s

📁 Boot code for ADM5120 with serial console for Edimax router.
💻 S
字号:
/*****************************************************************************;;   (C) Unpublished Work of ADMtek Incorporated.  All Rights Reserved.;;       THIS WORK IS AN UNPUBLISHED WORK AND CONTAINS CONFIDENTIAL,;       PROPRIETARY AND TRADESECRET INFORMATION OF ADMTEK INCORPORATED.;       ACCESS TO THIS WORK IS RESTRICTED TO (I) ADMTEK EMPLOYEES WHO HAVE A;       NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF THEIR ASSIGNMENTS;       AND (II) ENTITIES OTHER THAN ADMTEK WHO HAVE ENTERED INTO APPROPRIATE;       LICENSE AGREEMENTS.  NO PART OF THIS WORK MAY BE USED, PRACTICED,;       PERFORMED, COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED,;       ABBRIDGED, CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST,;       TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF ADMTEK.;       ANY USE OR EXPLOITATION OF THIS WORK WITHOUT AUTHORIZATION COULD;       SUBJECT THE PERPERTRATOR TO CRIMINAL AND CIVIL LIABILITY.;;------------------------------------------------------------------------------;;    Project : ADM5120;    Creator : ;    File    : cachelib.S;    Abstract: ;;Modification History:; ;;*****************************************************************************/#include <asm.h>#include <mips.h>#include <mips4kc.h>#include <adm5120.h>LEAF(icahce_invalidate_line)	.set noreorder	cache	ICACHE_HIT_INVALIDATE, 0(a0)	jr		ra	nop	.set reorderEND(icahce_invalidate_line)LEAF(icache_invalidate_block)	.set noreorder/* *	a0 : start address *	a1 : length */	addu	a1, a0, a1			// a1 holds the end address	li		v0, 0xf	addu	a1, a1, v0	not		v0, v0	and		a0, a0, v0			// align a0 to the start of cache line	and		a1, a1, v0	subu	v0, a1, a0			// v0 holds the length of the block	slt		v1, v0, 4*16	bnez	v1, 2f				// Jump, if less than 4 cache lines	nop1:	cache	ICACHE_HIT_INVALIDATE, 0x00(a0)	cache	ICACHE_HIT_INVALIDATE, 0x10(a0)	cache	ICACHE_HIT_INVALIDATE, 0x20(a0)	cache	ICACHE_HIT_INVALIDATE, 0x30(a0)	addu	a0, a0, 4*16	subu	v0, a1, a0	slt		v1, 4*16	beqz	v1, 1b	nop2:	beq		a1, a0, 4f	nop3:	cache	ICACHE_HIT_INVALIDATE, 0x00(a0)	addu	a0, a0, 16	bne		a1, a0, 3b	nop4:	jr		ra	nop	.set reorderEND(icache_invalidate_block)LEAF(dcahce_invalidate_line)	.set noreorder	cache	DCACHE_HIT_INVALIDATE, 0(a0)	jr		ra	nop	.set reorderEND(dcahce_invalidate_line)LEAF(dcache_invalidate_block)	.set noreorder/* *	a0 : start address *	a1 : length */	addu	a1, a0, a1			// a1 holds the end address	li		v0, 0xf	addu	a1, a1, v0	not		v0, v0	and		a0, a0, v0			// align a0 to the start of cache line	and		a1, a1, v0	subu	v0, a1, a0			// v0 holds the length of the block	slt		v1, v0, 4*16	bnez	v1, 2f				// Jump, if less than 4 cache lines	nop1:	cache	DCACHE_HIT_INVALIDATE, 0x00(a0)	cache	DCACHE_HIT_INVALIDATE, 0x10(a0)	cache	DCACHE_HIT_INVALIDATE, 0x20(a0)	cache	DCACHE_HIT_INVALIDATE, 0x30(a0)	addu	a0, a0, 4*16	subu	v0, a1, a0	slt		v1, 4*16	beqz	v1, 1b	nop2:	beq		a1, a0, 4f	nop3:	cache	DCACHE_HIT_INVALIDATE, 0x00(a0)	addu	a0, a0, 16	bne		a1, a0, 3b	nop4:	jr		ra	nop	.set reorderEND(dcache_invalidate_block)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -