You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

97 lines
1.6 KiB

# .global crtStart
# .global main
# .global irqCallback
# crtStart:
# j crtInit
# nop
# nop
# nop
# nop
# nop
# nop
# nop
# .global trap_entry
# trap_entry:
# sw x1, - 1*4(sp)
# sw x5, - 2*4(sp)
# sw x6, - 3*4(sp)
# sw x7, - 4*4(sp)
# sw x10, - 5*4(sp)
# sw x11, - 6*4(sp)
# sw x12, - 7*4(sp)
# sw x13, - 8*4(sp)
# sw x14, - 9*4(sp)
# sw x15, -10*4(sp)
# sw x16, -11*4(sp)
# sw x17, -12*4(sp)
# sw x28, -13*4(sp)
# sw x29, -14*4(sp)
# sw x30, -15*4(sp)
# sw x31, -16*4(sp)
# addi sp,sp,-16*4
# call irqCallback
# lw x1 , 15*4(sp)
# lw x5, 14*4(sp)
# lw x6, 13*4(sp)
# lw x7, 12*4(sp)
# lw x10, 11*4(sp)
# lw x11, 10*4(sp)
# lw x12, 9*4(sp)
# lw x13, 8*4(sp)
# lw x14, 7*4(sp)
# lw x15, 6*4(sp)
# lw x16, 5*4(sp)
# lw x17, 4*4(sp)
# lw x28, 3*4(sp)
# lw x29, 2*4(sp)
# lw x30, 1*4(sp)
# lw x31, 0*4(sp)
# addi sp,sp,16*4
# mret
# .text
# crtInit:
# .option push
# .option norelax
# la gp, __global_pointer$
# .option pop
# la sp, _stack_start
# bss_init:
# la a0, _bss_start
# la a1, _bss_end
# bss_loop:
# beq a0,a1,bss_done
# sw zero,0(a0)
# add a0,a0,4
# j bss_loop
# bss_done:
# ctors_init:
# la a0, _ctors_start
# addi sp,sp,-4
# ctors_loop:
# la a1, _ctors_end
# beq a0,a1,ctors_done
# lw a3,0(a0)
# add a0,a0,4
# sw a0,0(sp)
# jalr a3
# lw a0,0(sp)
# j ctors_loop
# ctors_done:
# addi sp,sp,4
# li a0, 0x880 //880 enable timer + external interrupts
# csrw mie,a0
# li a0, 0x1808 //1808 enable interrupts
# csrw mstatus,a0
# call main
# infinitLoop:
# j infinitLoop