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

📄 cachelib.s

📁 Boot code for ADM5120 with serial console for Edimax router.
💻 S
字号:
/*****************************************************************************;;    Project : ADM5120;    Creator : Dan Everett;    File    : cachelib.S;    Abstract: ;;*****************************************************************************/#include <asm.h>#include <mips.h>#include <mips4kc.h>#include <adm5120.h>.set noreorderLEAF(icahce_invalidate_line)	cache	ICACHE_HIT_INVALIDATE, 0(a0)	jr		ra	nopEND(icahce_invalidate_line)LEAF(icache_invalidate_block)	/*	 *	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	nopEND(icache_invalidate_block)LEAF(dcahce_invalidate_line)	cache	DCACHE_HIT_INVALIDATE, 0(a0)	jr		ra	nopEND(dcahce_invalidate_line)LEAF(dcache_invalidate_block)	/*	 *	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	nopEND(dcache_invalidate_block).set reorder

⌨️ 快捷键说明

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