2020-03-29 15:19:14 +00:00
|
|
|
#define REGBYTES 4
|
|
|
|
#define STORE sw
|
|
|
|
#define LOAD lw
|
2020-03-08 07:09:30 +00:00
|
|
|
|
2020-03-29 15:19:14 +00:00
|
|
|
.section .init;
|
2020-03-08 07:09:30 +00:00
|
|
|
.globl _start;
|
2020-03-29 15:19:14 +00:00
|
|
|
.type _start,@function
|
2020-03-08 07:09:30 +00:00
|
|
|
|
2020-03-29 15:19:14 +00:00
|
|
|
.weak TIMER0_IRQHandler
|
2020-03-08 07:09:30 +00:00
|
|
|
|
|
|
|
_start:
|
|
|
|
j _reset_handler
|
2020-03-29 15:19:14 +00:00
|
|
|
j _timer0_handler
|
2020-03-08 07:09:30 +00:00
|
|
|
|
|
|
|
_reset_handler:
|
2020-03-29 15:19:14 +00:00
|
|
|
.option push
|
|
|
|
.option norelax
|
|
|
|
la gp, __global_pointer$
|
|
|
|
.option pop
|
|
|
|
la sp, _sp
|
2020-03-08 07:09:30 +00:00
|
|
|
li x26, 0x00
|
|
|
|
li x27, 0x00
|
|
|
|
|
2020-03-29 15:19:14 +00:00
|
|
|
/* Load data section */
|
|
|
|
la a0, _data_lma
|
|
|
|
la a1, _data
|
|
|
|
la a2, _edata
|
|
|
|
bgeu a1, a2, 2f
|
|
|
|
1:
|
|
|
|
lw t0, (a0)
|
|
|
|
sw t0, (a1)
|
|
|
|
addi a0, a0, 4
|
|
|
|
addi a1, a1, 4
|
|
|
|
bltu a1, a2, 1b
|
|
|
|
2:
|
|
|
|
|
|
|
|
/* Clear bss section */
|
|
|
|
la a0, __bss_start
|
|
|
|
la a1, _end
|
|
|
|
bgeu a0, a1, 2f
|
|
|
|
1:
|
|
|
|
sw zero, (a0)
|
|
|
|
addi a0, a0, 4
|
|
|
|
bltu a0, a1, 1b
|
|
|
|
2:
|
|
|
|
|
2020-03-08 07:09:30 +00:00
|
|
|
call main
|
|
|
|
|
|
|
|
li x26, 0x01
|
|
|
|
|
|
|
|
loop:
|
|
|
|
j loop
|
|
|
|
|
2020-03-29 15:19:14 +00:00
|
|
|
_timer0_handler:
|
|
|
|
addi sp, sp, -32*REGBYTES
|
|
|
|
|
|
|
|
STORE x1, 1*REGBYTES(sp)
|
|
|
|
STORE x2, 2*REGBYTES(sp)
|
|
|
|
STORE x3, 3*REGBYTES(sp)
|
|
|
|
STORE x4, 4*REGBYTES(sp)
|
|
|
|
STORE x5, 5*REGBYTES(sp)
|
|
|
|
STORE x6, 6*REGBYTES(sp)
|
|
|
|
STORE x7, 7*REGBYTES(sp)
|
|
|
|
STORE x8, 8*REGBYTES(sp)
|
|
|
|
STORE x9, 9*REGBYTES(sp)
|
|
|
|
STORE x10, 10*REGBYTES(sp)
|
|
|
|
STORE x11, 11*REGBYTES(sp)
|
|
|
|
STORE x12, 12*REGBYTES(sp)
|
|
|
|
STORE x13, 13*REGBYTES(sp)
|
|
|
|
STORE x14, 14*REGBYTES(sp)
|
|
|
|
STORE x15, 15*REGBYTES(sp)
|
|
|
|
STORE x16, 16*REGBYTES(sp)
|
|
|
|
STORE x17, 17*REGBYTES(sp)
|
|
|
|
STORE x18, 18*REGBYTES(sp)
|
|
|
|
STORE x19, 19*REGBYTES(sp)
|
|
|
|
STORE x20, 20*REGBYTES(sp)
|
|
|
|
STORE x21, 21*REGBYTES(sp)
|
|
|
|
STORE x22, 22*REGBYTES(sp)
|
|
|
|
STORE x23, 23*REGBYTES(sp)
|
|
|
|
STORE x24, 24*REGBYTES(sp)
|
|
|
|
STORE x25, 25*REGBYTES(sp)
|
|
|
|
#STORE x26, 26*REGBYTES(sp)
|
|
|
|
#STORE x27, 27*REGBYTES(sp)
|
|
|
|
STORE x28, 28*REGBYTES(sp)
|
|
|
|
STORE x29, 29*REGBYTES(sp)
|
|
|
|
STORE x30, 30*REGBYTES(sp)
|
|
|
|
STORE x31, 31*REGBYTES(sp)
|
|
|
|
|
|
|
|
call TIMER0_IRQHandler
|
|
|
|
|
|
|
|
LOAD x1, 1*REGBYTES(sp)
|
|
|
|
LOAD x2, 2*REGBYTES(sp)
|
|
|
|
LOAD x3, 3*REGBYTES(sp)
|
|
|
|
LOAD x4, 4*REGBYTES(sp)
|
|
|
|
LOAD x5, 5*REGBYTES(sp)
|
|
|
|
LOAD x6, 6*REGBYTES(sp)
|
|
|
|
LOAD x7, 7*REGBYTES(sp)
|
|
|
|
LOAD x8, 8*REGBYTES(sp)
|
|
|
|
LOAD x9, 9*REGBYTES(sp)
|
|
|
|
LOAD x10, 10*REGBYTES(sp)
|
|
|
|
LOAD x11, 11*REGBYTES(sp)
|
|
|
|
LOAD x12, 12*REGBYTES(sp)
|
|
|
|
LOAD x13, 13*REGBYTES(sp)
|
|
|
|
LOAD x14, 14*REGBYTES(sp)
|
|
|
|
LOAD x15, 15*REGBYTES(sp)
|
|
|
|
LOAD x16, 16*REGBYTES(sp)
|
|
|
|
LOAD x17, 17*REGBYTES(sp)
|
|
|
|
LOAD x18, 18*REGBYTES(sp)
|
|
|
|
LOAD x19, 19*REGBYTES(sp)
|
|
|
|
LOAD x20, 20*REGBYTES(sp)
|
|
|
|
LOAD x21, 21*REGBYTES(sp)
|
|
|
|
LOAD x22, 22*REGBYTES(sp)
|
|
|
|
LOAD x23, 23*REGBYTES(sp)
|
|
|
|
LOAD x24, 24*REGBYTES(sp)
|
|
|
|
LOAD x25, 25*REGBYTES(sp)
|
|
|
|
#LOAD x26, 26*REGBYTES(sp)
|
|
|
|
#LOAD x27, 27*REGBYTES(sp)
|
|
|
|
LOAD x28, 28*REGBYTES(sp)
|
|
|
|
LOAD x29, 29*REGBYTES(sp)
|
|
|
|
LOAD x30, 30*REGBYTES(sp)
|
|
|
|
LOAD x31, 31*REGBYTES(sp)
|
|
|
|
|
|
|
|
addi sp, sp, 32*REGBYTES
|
|
|
|
|
2020-03-08 07:09:30 +00:00
|
|
|
mret
|