From 861c75d80ef26fcd726b3d50c1436763285bd7bc Mon Sep 17 00:00:00 2001 From: Toby Jaffey Date: Sun, 14 Dec 2025 11:19:23 +0000 Subject: [PATCH] Remove cycle counting and timers from mini-rv32ima --- precompiled/self.bin | Bin 5180 -> 4972 bytes uvm32/mini-rv32ima.h | 16 ++++++++++++++-- uvm32/uvm32.h | 1 + 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/precompiled/self.bin b/precompiled/self.bin index d80139bc226e8fb4e5987bf43c4872319ef26a9c..40a7b05ac138ed52c9fd2315edb7cb0b2788966e 100755 GIT binary patch literal 4972 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 literal 5180 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 MINI_RV32_RAM_SIZE ) @@ -347,7 +355,9 @@ MINIRV32_STEPPROTO case 0x340: rval = CSR( mscratch ); break; case 0x305: rval = CSR( mtvec ); break; case 0x304: rval = CSR( mie ); break; +#ifndef MINIRV32_NO_TIMERS_NO_CYCLES case 0xC00: rval = cycle; break; +#endif case 0x344: rval = CSR( mip ); break; case 0x341: rval = CSR( mepc ); break; case 0x300: rval = CSR( mstatus ); break; //mstatus @@ -530,8 +540,10 @@ MINIRV32_STEPPROTO #endif } +#ifndef MINIRV32_NO_TIMERS_NO_CYCLES if( CSR( cyclel ) > cycle ) CSR( cycleh )++; SETCSR( cyclel, cycle ); +#endif SETCSR( pc, pc ); return 0; } diff --git a/uvm32/uvm32.h b/uvm32/uvm32.h index d397ba5..d3d2756 100644 --- a/uvm32/uvm32.h +++ b/uvm32/uvm32.h @@ -41,6 +41,7 @@ SOFTWARE. // Setup and hooks for mini-rv32ima emulator core #define MINIRV32_DECORATE static #define MINIRV32_RETURN_TRAP +#define MINIRV32_NO_TIMERS_NO_CYCLES #define MINI_RV32_RAM_SIZE UVM32_MEMORY_SIZE #define MINIRV32_POSTEXEC(pc, ir, retval) {if (retval > 0) return retval;} uint32_t _uvm32_extramLoad(void *userdata, uint32_t addr, uint32_t accessTyp);