#include "../../../../resources/crt.S" #define regnum_zero 0 #define regnum_ra 1 #define regnum_sp 2 #define regnum_gp 3 #define regnum_tp 4 #define regnum_t0 5 #define regnum_t1 6 #define regnum_t2 7 #define regnum_s0 8 #define regnum_s1 9 #define regnum_a0 10 #define regnum_a1 11 #define regnum_a2 12 #define regnum_a3 13 #define regnum_a4 14 #define regnum_a5 15 #define regnum_a6 16 #define regnum_a7 17 #define regnum_s2 18 #define regnum_s3 19 #define regnum_s4 20 #define regnum_s5 21 #define regnum_s6 22 #define regnum_s7 23 #define regnum_s8 24 #define regnum_s9 25 #define regnum_s10 26 #define regnum_s11 27 #define regnum_t3 28 #define regnum_t4 29 #define regnum_t5 30 #define regnum_t6 31 #define r_type_insn(_f7, _rs2, _rs1, _f3, _rd, _opc) \ .word (((_f7) << 25) | ((_rs2) << 20) | ((_rs1) << 15) | ((_f3) << 12) | ((_rd) << 7) | ((_opc) << 0)) #define dataFlush(_data) \ r_type_insn(0b0111000, 0, regnum_ ## _data, 0b101, 0, 0b0001111) .section .text .globl flushDataCache .type flushDataCache, @function flushDataCache: li a0, 4096 flushDataCacheLoop: ADDI a0,a0,-32 dataFlush(a0) bnez a0, flushDataCacheLoop ret