2024-10-25 17:46:21 +08:00
|
|
|
|
2024-10-28 15:51:12 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-10-28 18:01:25 +08:00
|
|
|
.extern main
|
2025-01-15 15:44:29 +08:00
|
|
|
.extern trap_entry
|
|
|
|
|
|
2024-10-28 18:01:25 +08:00
|
|
|
.globl _prog_start
|
|
|
|
|
.section .text.init
|
2024-10-28 15:51:12 +08:00
|
|
|
|
|
|
|
|
|
2024-10-28 18:01:25 +08:00
|
|
|
_prog_start:
|
2024-10-29 17:32:17 +08:00
|
|
|
|
2025-01-15 15:44:29 +08:00
|
|
|
la t0, trap_entry
|
|
|
|
|
csrw mtvec, t0
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
li sp, 0x40011000
|
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
|
2024-10-28 15:51:12 +08:00
|
|
|
|
2024-10-25 17:46:21 +08:00
|
|
|
|
2025-01-15 15:44:29 +08:00
|
|
|
# .balign 32
|
|
|
|
|
# .section .trap_entry, "ax", %progbits
|
|
|
|
|
# trap_entry:
|
2024-10-28 18:01:25 +08:00
|
|
|
|
2024-10-30 17:11:59 +08:00
|
|
|
# io.interrupt(0) := intTxError
|
|
|
|
|
# io.interrupt(1) := intRxError
|
|
|
|
|
# io.interrupt(2) := intRxStart
|
|
|
|
|
# io.interrupt(3) := intRxEnd
|
|
|
|
|
|
|
|
|
|
|
2024-10-28 18:01:25 +08:00
|
|
|
|
|
|
|
|
|