#include "sys.h" #include "picorv32.h" // The linker ensures that section .init is first .section ".init","ax" .org 0 .globl _reset _reset: rdtime t0 // Record timer at reset li sp,SRAM_SIZE la t1,time_zero sw t0,(t1) j _start .type _reset, @function .size _reset, . - _reset .pushsection ".rodata","a" // Not really readonly, but close enough .balign 4 .globl time_zero time_zero: .long 0 .type time_zero, @object .size time_zero, . - time_zero .popsection .org 0x20 .globl __irq __irq: add sp,sp,-64 sw ra,0(sp) sw t0,4(sp) sw t1,8(sp) sw t2,12(sp) sw t3,16(sp) sw t4,20(sp) sw t5,24(sp) sw t6,28(sp) sw a0,32(sp) sw a1,36(sp) sw a2,40(sp) sw a3,44(sp) sw a4,48(sp) sw a5,52(sp) sw a6,56(sp) sw a7,60(sp) getq a0,q1 jal _irq lw ra,0(sp) lw t0,4(sp) lw t1,8(sp) lw t2,12(sp) lw t3,16(sp) lw t4,20(sp) lw t5,24(sp) lw t6,28(sp) lw a0,32(sp) lw a1,36(sp) lw a2,40(sp) lw a3,44(sp) lw a4,48(sp) lw a5,52(sp) lw a6,56(sp) lw a7,60(sp) add sp,sp,64 retirq .type __irq, @function .size __irq, . - __irq