summaryrefslogtreecommitdiff
path: root/assembly/misa/misa.S
diff options
context:
space:
mode:
Diffstat (limited to 'assembly/misa/misa.S')
-rw-r--r--assembly/misa/misa.S126
1 files changed, 126 insertions, 0 deletions
diff --git a/assembly/misa/misa.S b/assembly/misa/misa.S
new file mode 100644
index 0000000..a360c5e
--- /dev/null
+++ b/assembly/misa/misa.S
@@ -0,0 +1,126 @@
+csrr t0,misa # Read misa
+
+li a5,11 # Print character
+li a0,'R'
+ecall
+li a0,'V'
+ecall
+li a0,'3'
+ecall
+li a0,'2'
+ecall
+
+li t1,1<<8
+and t1,t0,t1
+li a5,11
+li a0,'I'
+czero.eqz a5,a5,t1 # Clear ecall function if bit isn't set
+ecall
+
+li t1,1<<4
+and t1,t0,t1
+li a5,11
+li a0,'E'
+czero.eqz a5,a5,t1
+ecall
+
+li t1,1<<12
+and t1,t0,t1
+li a5,11
+li a0,'M'
+czero.eqz a5,a5,t1
+ecall
+
+li t1,1<<0
+and t1,t0,t1
+li a5,11
+li a0,'A'
+czero.eqz a5,a5,t1
+ecall
+
+li t1,1<<5
+and t1,t0,t1
+li a5,11
+li a0,'F'
+czero.eqz a5,a5,t1
+ecall
+
+li t1,1<<3
+and t1,t0,t1
+li a5,11
+li a0,'D'
+czero.eqz a5,a5,t1
+ecall
+
+li t1,1<<16
+and t1,t0,t1
+li a5,11
+li a0,'Q'
+czero.eqz a5,a5,t1
+ecall
+
+li t1,1<<11
+and t1,t0,t1
+li a5,11
+li a0,'L'
+czero.eqz a5,a5,t1
+ecall
+
+li t1,1<<2
+and t1,t0,t1
+li a5,11
+li a0,'C'
+czero.eqz a5,a5,t1
+ecall
+
+li t1,1<<1
+and t1,t0,t1
+li a5,11
+li a0,'B'
+czero.eqz a5,a5,t1
+ecall
+
+li t1,1<<9
+and t1,t0,t1
+li a5,11
+li a0,'J'
+czero.eqz a5,a5,t1
+ecall
+
+li t1,1<<19
+and t1,t0,t1
+li a5,11
+li a0,'T'
+czero.eqz a5,a5,t1
+ecall
+
+li t1,1<<15
+and t1,t0,t1
+li a5,11
+li a0,'P'
+czero.eqz a5,a5,t1
+ecall
+
+li t1,1<<21
+and t1,t0,t1
+li a5,11
+li a0,'V'
+czero.eqz a5,a5,t1
+ecall
+
+li t1,1<<7
+and t1,t0,t1
+li a5,11
+li a0,'H'
+czero.eqz a5,a5,t1
+ecall
+
+li t1,1<<18
+and t1,t0,t1
+li a5,11
+li a0,'S'
+czero.eqz a5,a5,t1
+ecall
+
+li a5,10
+ecall