From d609dcb35dafebeafced9c40d92ddd5da630aa54 Mon Sep 17 00:00:00 2001 From: cheapie Date: Sat, 30 May 2026 08:58:29 -0500 Subject: Organize files better and include binaries for assembly samples --- assembly/misa/Makefile | 26 +++++++++ assembly/misa/misa.S | 126 ++++++++++++++++++++++++++++++++++++++++++ assembly/misa/misa.elf | Bin 0 -> 5272 bytes assembly/misa/misa.hex | 29 ++++++++++ assembly/misa/misa.o | Bin 0 -> 1052 bytes assembly/misa/rvcontroller.ld | 1 + 6 files changed, 182 insertions(+) create mode 100644 assembly/misa/Makefile create mode 100644 assembly/misa/misa.S create mode 100755 assembly/misa/misa.elf create mode 100644 assembly/misa/misa.hex create mode 100644 assembly/misa/misa.o create mode 120000 assembly/misa/rvcontroller.ld (limited to 'assembly/misa') 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 Binary files /dev/null and b/assembly/misa/misa.elf 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 Binary files /dev/null and b/assembly/misa/misa.o 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 -- cgit v1.2.3