From 94c5a7930e5bff6cb18492392d5eea32306885e1 Mon Sep 17 00:00:00 2001 From: cheapie Date: Fri, 29 May 2026 19:38:40 -0500 Subject: Add mutable ISA support via writing to misa --- misa.S | 120 ++++++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 67 insertions(+), 53 deletions(-) (limited to 'misa.S') diff --git a/misa.S b/misa.S index 4bd93ef..a360c5e 100644 --- a/misa.S +++ b/misa.S @@ -1,6 +1,6 @@ -csrr t0,0x301 # Read misa +csrr t0,misa # Read misa -li a7,11 # Print character +li a5,11 # Print character li a0,'R' ecall li a0,'V' @@ -10,103 +10,117 @@ ecall li a0,'2' ecall -bexti t1,t0,8 -li a7,11 +li t1,1<<8 +and t1,t0,t1 +li a5,11 li a0,'I' -czero.eqz a7,a7,t1 # Clear ecall function if bit isn't set +czero.eqz a5,a5,t1 # Clear ecall function if bit isn't set ecall -bexti t1,t0,4 -li a7,11 +li t1,1<<4 +and t1,t0,t1 +li a5,11 li a0,'E' -czero.eqz a7,a7,t1 +czero.eqz a5,a5,t1 ecall -bexti t1,t0,12 -li a7,11 +li t1,1<<12 +and t1,t0,t1 +li a5,11 li a0,'M' -czero.eqz a7,a7,t1 +czero.eqz a5,a5,t1 ecall -bexti t1,t0,0 -li a7,11 +li t1,1<<0 +and t1,t0,t1 +li a5,11 li a0,'A' -czero.eqz a7,a7,t1 +czero.eqz a5,a5,t1 ecall -bexti t1,t0,5 -li a7,11 +li t1,1<<5 +and t1,t0,t1 +li a5,11 li a0,'F' -czero.eqz a7,a7,t1 +czero.eqz a5,a5,t1 ecall -bexti t1,t0,3 -li a7,11 +li t1,1<<3 +and t1,t0,t1 +li a5,11 li a0,'D' -czero.eqz a7,a7,t1 +czero.eqz a5,a5,t1 ecall -bexti t1,t0,16 -li a7,11 +li t1,1<<16 +and t1,t0,t1 +li a5,11 li a0,'Q' -czero.eqz a7,a7,t1 +czero.eqz a5,a5,t1 ecall -bexti t1,t0,11 -li a7,11 +li t1,1<<11 +and t1,t0,t1 +li a5,11 li a0,'L' -czero.eqz a7,a7,t1 +czero.eqz a5,a5,t1 ecall -bexti t1,t0,2 -li a7,11 +li t1,1<<2 +and t1,t0,t1 +li a5,11 li a0,'C' -czero.eqz a7,a7,t1 +czero.eqz a5,a5,t1 ecall -bexti t1,t0,1 -li a7,11 +li t1,1<<1 +and t1,t0,t1 +li a5,11 li a0,'B' -czero.eqz a7,a7,t1 +czero.eqz a5,a5,t1 ecall -bexti t1,t0,9 -li a7,11 +li t1,1<<9 +and t1,t0,t1 +li a5,11 li a0,'J' -czero.eqz a7,a7,t1 +czero.eqz a5,a5,t1 ecall -bexti t1,t0,19 -li a7,11 +li t1,1<<19 +and t1,t0,t1 +li a5,11 li a0,'T' -czero.eqz a7,a7,t1 +czero.eqz a5,a5,t1 ecall -bexti t1,t0,15 -li a7,11 +li t1,1<<15 +and t1,t0,t1 +li a5,11 li a0,'P' -czero.eqz a7,a7,t1 +czero.eqz a5,a5,t1 ecall -bexti t1,t0,21 -li a7,11 +li t1,1<<21 +and t1,t0,t1 +li a5,11 li a0,'V' -czero.eqz a7,a7,t1 +czero.eqz a5,a5,t1 ecall -bexti t1,t0,7 -li a7,11 +li t1,1<<7 +and t1,t0,t1 +li a5,11 li a0,'H' -czero.eqz a7,a7,t1 +czero.eqz a5,a5,t1 ecall -bexti t1,t0,18 -li a7,11 +li t1,1<<18 +and t1,t0,t1 +li a5,11 li a0,'S' -czero.eqz a7,a7,t1 +czero.eqz a5,a5,t1 ecall -bexti t1,t0,2 - -li a7,10 +li a5,10 ecall -- cgit v1.2.3