2025-02-02 20:19:19 +08:00
|
|
|
#include "tl2cdr.h"
|
2024-10-28 15:51:12 +08:00
|
|
|
|
2024-10-28 18:01:25 +08:00
|
|
|
.extern main
|
2025-02-09 01:17:17 +08:00
|
|
|
|
2025-02-03 14:56:04 +08:00
|
|
|
.extern int_svr_code
|
2025-02-03 07:51:54 +08:00
|
|
|
.extern plic_claim
|
|
|
|
|
|
2025-02-02 20:19:19 +08:00
|
|
|
.globl _prog_start
|
2024-10-28 18:01:25 +08:00
|
|
|
.section .text.init
|
2024-10-28 15:51:12 +08:00
|
|
|
|
|
|
|
|
|
2024-10-28 18:01:25 +08:00
|
|
|
_prog_start:
|
2025-01-15 15:44:29 +08:00
|
|
|
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
|
2025-02-03 07:51:54 +08:00
|
|
|
#ifdef __RV32I_MARCH__
|
2025-01-15 15:44:29 +08:00
|
|
|
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
|
2025-02-03 07:51:54 +08:00
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
li sp, 0x40011000
|
|
|
|
|
|
2025-02-09 01:17:17 +08:00
|
|
|
li a0, 0
|
2025-02-03 12:13:17 +08:00
|
|
|
|
2025-02-09 01:17:17 +08:00
|
|
|
lui t0, %hi(plic_claim)
|
|
|
|
|
lw a1, %lo(plic_claim)(t0)
|
2025-02-03 07:51:54 +08:00
|
|
|
|
2025-02-03 14:56:04 +08:00
|
|
|
call int_svr_code
|
2025-02-03 10:10:40 +08:00
|
|
|
mv t0, a0 #这里选择不同的trap_entry服务函数,这个是RV32I的代码
|
2025-02-09 01:17:17 +08:00
|
|
|
|
2025-01-27 21:48:17 +08:00
|
|
|
csrw mtvec, t0
|
|
|
|
|
li t0, 1 << 11
|
|
|
|
|
csrw mie, t0
|
|
|
|
|
|
|
|
|
|
csrr t0, mstatus
|
|
|
|
|
ori t0, t0, 1<<3
|
|
|
|
|
csrw mstatus, t0
|
|
|
|
|
|
2024-10-28 18:01:25 +08:00
|
|
|
call main
|
2024-10-28 15:51:12 +08:00
|
|
|
|
2024-10-28 18:01:25 +08:00
|
|
|
ecall
|