summaryrefslogtreecommitdiff
path: root/assembly/misa
diff options
context:
space:
mode:
authorcheapie <cheapiephp@gmail.com>2026-05-30 08:58:29 -0500
committercheapie <cheapiephp@gmail.com>2026-05-30 08:58:29 -0500
commitd609dcb35dafebeafced9c40d92ddd5da630aa54 (patch)
treebe5b1083f2f12173dbe936306e46a11cff4d62ea /assembly/misa
parent28be6fac111899c930c8072cd42bcbd7be6f5d40 (diff)
downloadrvcontroller-d609dcb35dafebeafced9c40d92ddd5da630aa54.tar
rvcontroller-d609dcb35dafebeafced9c40d92ddd5da630aa54.tar.gz
rvcontroller-d609dcb35dafebeafced9c40d92ddd5da630aa54.tar.bz2
rvcontroller-d609dcb35dafebeafced9c40d92ddd5da630aa54.tar.xz
rvcontroller-d609dcb35dafebeafced9c40d92ddd5da630aa54.zip
Organize files better and include binaries for assembly samples
Diffstat (limited to 'assembly/misa')
-rw-r--r--assembly/misa/Makefile26
-rw-r--r--assembly/misa/misa.S126
-rwxr-xr-xassembly/misa/misa.elfbin0 -> 5272 bytes
-rw-r--r--assembly/misa/misa.hex29
-rw-r--r--assembly/misa/misa.obin0 -> 1052 bytes
l---------assembly/misa/rvcontroller.ld1
6 files changed, 182 insertions, 0 deletions
diff --git a/assembly/misa/Makefile b/assembly/misa/Makefile
new file mode 100644
index 0000000..95095b6
--- /dev/null
+++ b/assembly/misa/Makefile
@@ -0,0 +1,26 @@
+# Intentionally less complete default march so that it's still compatible with RVController's minimum configuration
+# (in case someone changed the misa value and wants to decode the new one)
+MARCH ?= rv32ezicsr_zicond
+
+.PHONY: all dump load clean
+
+all: misa.hex
+
+misa.o: misa.S
+ riscv32-none-elf-as -I../rvcontroller-libraries -march=${MARCH} -o misa.o misa.S
+
+misa.elf: misa.o
+ riscv32-none-elf-ld -T rvcontroller.ld --no-warn-rwx-segments -o misa.elf misa.o
+
+dump: misa.elf
+ riscv32-none-elf-objdump -d misa.elf
+
+misa.hex: misa.elf
+ riscv32-none-elf-objcopy -O ihex misa.elf misa.hex
+
+load: misa.hex
+ bash -c "wl-copy < misa.hex"
+
+clean:
+ rm -f misa.bin misa.elf misa.o
+
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
diff --git a/assembly/misa/misa.elf b/assembly/misa/misa.elf
new file mode 100755
index 0000000..6f5e949
--- /dev/null
+++ b/assembly/misa/misa.elf
Binary files differ
diff --git a/assembly/misa/misa.hex b/assembly/misa/misa.hex
new file mode 100644
index 0000000..4f70427
--- /dev/null
+++ b/assembly/misa/misa.hex
@@ -0,0 +1,29 @@
+:10000000F32210309307B0001305200573000000A1
+:100010001305600573000000130530037300000032
+:1000200013052003730000001303001033F3620074
+:100030009307B00013059004B3D7670E7300000058
+:100040001303000133F362009307B000130550045B
+:10005000B3D7670E730000003713000033F362005C
+:100060009307B0001305D004B3D7670E73000000E8
+:100070001303100033F362009307B000130510045C
+:10008000B3D7670E730000001303000233F362005E
+:100090009307B00013056004B3D7670E7300000028
+:1000A0001303800033F362009307B000130540048C
+:1000B000B3D7670E730000003703010033F362000B
+:1000C0009307B00013051005B3D7670E7300000047
+:1000D000371300001303038033F362009307B0006B
+:1000E0001305C004B3D7670E73000000130340006C
+:1000F00033F362009307B00013053004B3D7670EE3
+:10010000730000001303200033F362009307B00074
+:1001100013052004B3D7670E7300000013030020FB
+:1001200033F362009307B0001305A004B3D7670E42
+:10013000730000003703080033F362009307B00038
+:1001400013054005B3D7670E730000003783000026
+:1001500033F362009307B00013050005B3D7670EB1
+:10016000730000003703200033F362009307B000F0
+:1001700013056005B3D7670E730000001303000872
+:1001800033F362009307B00013058004B3D7670E02
+:10019000730000003703040033F362009307B000DC
+:1001A00013053005B3D7670E730000009307A00056
+:0401B00073000000D8
+:00000001FF
diff --git a/assembly/misa/misa.o b/assembly/misa/misa.o
new file mode 100644
index 0000000..a8b734a
--- /dev/null
+++ b/assembly/misa/misa.o
Binary files differ
diff --git a/assembly/misa/rvcontroller.ld b/assembly/misa/rvcontroller.ld
new file mode 120000
index 0000000..bc01402
--- /dev/null
+++ b/assembly/misa/rvcontroller.ld
@@ -0,0 +1 @@
+../../rvcontroller.ld \ No newline at end of file