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