#include "tl2cdr.h" .extern main .extern int_svr_code .extern plic_claim .globl _prog_start .section .text.init _prog_start: li x1, 0 li x2, 0 li x3, 0 li x4, 0 li x5, 0 li x6, 0 li x7, 0 li x8, 0 li x9, 0 li x10, 0 li x11, 0 li x12, 0 li x13, 0 li x14, 0 li x15, 0 #ifdef __RV32I_MARCH__ li x16, 0 li x17, 0 li x18, 0 li x19, 0 li x20, 0 li x21, 0 li x22, 0 li x23, 0 li x24, 0 li x25, 0 li x26, 0 li x27, 0 li x28, 0 li x29, 0 li x30, 0 li x31, 0 #endif li sp, 0x40011000 li a0, 0 lui t0, %hi(plic_claim) lw a1, %lo(plic_claim)(t0) call int_svr_code mv t0, a0 #这里选择不同的trap_entry服务函数,这个是RV32I的代码 csrw mtvec, t0 li t0, 1 << 11 csrw mie, t0 csrr t0, mstatus ori t0, t0, 1<<3 csrw mstatus, t0 call main ecall