diff options
Diffstat (limited to 'picorv32/dhrystone/start.S')
-rw-r--r-- | picorv32/dhrystone/start.S | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/picorv32/dhrystone/start.S b/picorv32/dhrystone/start.S new file mode 100644 index 0000000..9fb2359 --- /dev/null +++ b/picorv32/dhrystone/start.S @@ -0,0 +1,51 @@ + .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 + |