diff options
| author | cheapie <cheapiephp@gmail.com> | 2026-05-29 19:38:40 -0500 |
|---|---|---|
| committer | cheapie <cheapiephp@gmail.com> | 2026-05-29 19:43:27 -0500 |
| commit | 94c5a7930e5bff6cb18492392d5eea32306885e1 (patch) | |
| tree | a842d2a1d4186638b98af68145d902bf22c1d9ff /misa.S | |
| parent | baa99d7688127a06e407edcadded63fb6efe2dc1 (diff) | |
| download | rvcontroller-94c5a7930e5bff6cb18492392d5eea32306885e1.tar rvcontroller-94c5a7930e5bff6cb18492392d5eea32306885e1.tar.gz rvcontroller-94c5a7930e5bff6cb18492392d5eea32306885e1.tar.bz2 rvcontroller-94c5a7930e5bff6cb18492392d5eea32306885e1.tar.xz rvcontroller-94c5a7930e5bff6cb18492392d5eea32306885e1.zip | |
Add mutable ISA support via writing to misa
Diffstat (limited to 'misa.S')
| -rw-r--r-- | misa.S | 120 |
1 files changed, 67 insertions, 53 deletions
@@ -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 |
