cachelib.s
来自「Boot code for ADM5120 with serial consol」· S 代码 · 共 113 行
S
113 行
/*****************************************************************************;; 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 + =
减小字号Ctrl + -
显示快捷键?