aboutsummaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authors-ol <s+removethis@s-ol.nu>2021-07-09 14:36:47 +0000
committers-ol <s+removethis@s-ol.nu>2021-07-09 14:39:04 +0000
commitdd0f115ef08293623236b25810a770cd42be5bca (patch)
tree9d901e2b05521de105499b9feac9ede1fbf62eaf /examples
parentvalidate opi, system (diff)
downloadsubv-dd0f115ef08293623236b25810a770cd42be5bca.tar.gz
subv-dd0f115ef08293623236b25810a770cd42be5bca.zip
examples: exit via SBI
Diffstat (limited to 'examples')
-rw-r--r--examples/ask_name.subv12
-rw-r--r--examples/hello_world.subv14
2 files changed, 21 insertions, 5 deletions
diff --git a/examples/ask_name.subv b/examples/ask_name.subv
index f411bfc..dfd5a7a 100644
--- a/examples/ask_name.subv
+++ b/examples/ask_name.subv
@@ -42,8 +42,16 @@ main:
13/opi a/rd/a0 0/subop/add a/rs/a0 NICETOMEETU/imm12lo
6f/jal 1/rd/ra print/off21
- # infinite loop
- 6f/jal 0/rd/x0 0/off21
+exit:
+# system reset (via SBI extension SRST)
+ # a7 = ext id, a6 = fid, a0 = 0, a1 = 0
+ 37/lui 11/rd/a7 53525/imm20
+ 13/opi 11/rd/a7 0/subop/add 11/rs/a7 354/imm12
+ 33/opr 0/mode/norm 10/rd/a6 0/subop/add 0/rs/x0 0/rs/x0
+ 33/opr 0/mode/norm a/rd/a0 0/subop/add 0/rs/x0 0/rs/x0
+ 33/opr 0/mode/norm b/rd/a1 0/subop/add 0/rs/x0 0/rs/x0
+ # ECALL
+ 73/system 0/subop/priv 0/funct12/ecall
init:
# initialize UART0
diff --git a/examples/hello_world.subv b/examples/hello_world.subv
index d25aa83..b85739d 100644
--- a/examples/hello_world.subv
+++ b/examples/hello_world.subv
@@ -11,9 +11,17 @@ main:
13/opi a/rd/a0 0/subop/add a/rs/a0 Message/imm12lo
# call print
6f/jal 1/rd/ra print/off21
-loop:
- # infinite loop
- 6f/jal 0/rd/x0 main/off21
+
+exit:
+# system reset (via SBI extension SRST)
+ # a7 = ext id, a6 = fid, a0 = 0, a1 = 0
+ 37/lui 11/rd/a7 53525/imm20
+ 13/opi 11/rd/a7 0/subop/add 11/rs/a7 354/imm12
+ 33/opr 0/mode/norm 10/rd/a6 0/subop/add 0/rs/x0 0/rs/x0
+ 33/opr 0/mode/norm a/rd/a0 0/subop/add 0/rs/x0 0/rs/x0
+ 33/opr 0/mode/norm b/rd/a1 0/subop/add 0/rs/x0 0/rs/x0
+ # ECALL
+ 73/system 0/subop/priv 0/funct12/ecall
print:
# load 0x10000000 (UART0) into t0