.section .text | |
.global start | |
.global main | |
start: | |
/* print "START\n" */ | |
lui a0,0x10000000>>12 | |
addi a1,zero,'S' | |
addi a2,zero,'T' | |
addi a3,zero,'A' | |
addi a4,zero,'R' | |
addi a5,zero,'\n' | |
sw a1,0(a0) | |
sw a2,0(a0) | |
sw a3,0(a0) | |
sw a4,0(a0) | |
sw a2,0(a0) | |
sw a5,0(a0) | |
/* execute some insns for "make timing" */ | |
lui a0,0 | |
auipc a0,0 | |
slli a0,a0,0 | |
slli a0,a0,31 | |
addi a1,zero,0 | |
sll a0,a0,a1 | |
addi a1,zero,31 | |
sll a0,a0,a1 | |
/* set stack pointer */ | |
lui sp,(64*1024)>>12 | |
/* jump to main C code */ | |
jal ra,main | |
/* print "DONE\n" */ | |
lui a0,0x10000000>>12 | |
addi a1,zero,'D' | |
addi a2,zero,'O' | |
addi a3,zero,'N' | |
addi a4,zero,'E' | |
addi a5,zero,'\n' | |
sw a1,0(a0) | |
sw a2,0(a0) | |
sw a3,0(a0) | |
sw a4,0(a0) | |
sw a5,0(a0) | |
/* trap */ | |
ebreak | |