Commit graph

29 commits

Author SHA1 Message Date
Toby Jaffey
f917ba38ff Tighten up internal vs external functions, which lets optimiser do a better job, self.bin about 10% smaller. 2025-12-14 19:51:36 +00:00
Toby Jaffey
9bda566997 Move internal static garbage into vmst.
Potentially, this could have ended up being non-zero when used by concurrent threads.
2025-12-14 19:34:58 +00:00
Toby Jaffey
7d064dd11d Fix indent 2025-12-14 18:36:18 +00:00
Toby Jaffey
e5fd17aff6 Fix issues with unaligned memory bus rd/wr. Improve fuzzing. 2025-12-14 18:35:00 +00:00
Toby Jaffey
5fb03b7d66 Remove RV32 breakpoints and interrupts, to save a tiny bit of code size.
Some checks are pending
CI / test (ubuntu-latest) (push) Waiting to run
2025-12-14 15:05:35 +00:00
Toby Jaffey
0736381925 Slim down mini-rv32imaa by removing zicsr and atomics - which are unused. 2025-12-14 11:49:28 +00:00
Toby Jaffey
861c75d80e Remove cycle counting and timers from mini-rv32ima 2025-12-14 11:19:23 +00:00
Toby Jaffey
5dc9acdf3d When a trap occurs in mini-rv32ima, always pass to the host rather than allowing running code to handle it. This would be important for a real OS, but the aim of uvm32 is embeddable logic - not full emulation.
As all traps are caught by host, begin testing mini-rv32ima internals by checking PC oob and PC alignment.
2025-12-14 11:00:45 +00:00
Toby Jaffey
2039de73f2 Rename getbuf to getslice 2025-12-13 23:15:06 +00:00
Toby Jaffey
f8f7627eb8 Update README.
Add license
2025-12-12 21:50:33 +00:00
Toby Jaffey
789cd74516 Disable stack canary by default 2025-12-12 21:01:40 +00:00
Toby Jaffey
8c97057809 Make extram uint8_t 2025-12-12 20:51:39 +00:00
Toby Jaffey
8158ac647c Renaming and documentating header 2025-12-12 20:42:26 +00:00
Toby Jaffey
7a1656ab10 Handle 8, 16 and 32 bit accesses to extram. 2025-12-11 10:33:45 +00:00
Toby Jaffey
b55c2bc88a Add system for memory mapping a block of memory from the host. 2025-12-11 02:36:46 +00:00
Toby Jaffey
ac1975a820 Test metering, prove that system can resume after a hang error with a range of meter sizes 2025-12-10 22:30:19 +00:00
Toby Jaffey
508d41c8c5 Remove stackoverflow error, have one CORE_INTERNAL error for catastrophic crash 2025-12-10 18:42:34 +00:00
Toby Jaffey
da7f70c456 Initial test framework
Clean up makefiles
Everything buildable under docker (or natively)
2025-12-10 16:36:33 +00:00
Toby Jaffey
e07eeab043 Make yield a regular syscall taking an argument.
Allows "wait for interrupt"/"wait for event" type operation where VM code blocks until the host has something for it.
2025-12-10 10:35:18 +00:00
Toby Jaffey
9baedb42e8 Add a stack canary, setup on boot 2025-12-10 01:00:36 +00:00
Toby Jaffey
ac554865a6 Make ROM const 2025-12-09 22:08:53 +00:00
Toby Jaffey
76fba39a21 Rework syscall ABI.
Syscalls now accept two parameters, allowing for things like "int count = read(buf, len)"
Rather than providing safe signatures for syscalls, the user is now given helper functions to safely parse incoming values, c-strings and slices.
2025-12-09 21:51:35 +00:00
Toby Jaffey
8c11b45670 Move CPU core out of RAM. This limits possibilities for self-modifying code hacks, but is cleaner/safer. 2025-12-09 10:46:29 +00:00
Toby Jaffey
c691c3ebdf Fix overly long event name 2025-12-08 13:04:05 +00:00
Toby Jaffey
9d6e6790e1 Cleanup syscall numbers 2025-12-08 12:53:33 +00:00
Toby Jaffey
61fe0e8647 Rename ioreq to syscall 2025-12-08 12:26:47 +00:00
Toby Jaffey
751f068486 Rework host/target interface to use ecall and proper syscalls instead of CSRs 2025-12-08 02:44:38 +00:00
Toby Jaffey
047c9e3853 Move error strings out of header, to prevent unused warning 2025-12-06 21:35:00 +00:00
Toby Jaffey
c9d30b6d28 uvm32 initial version 2025-12-06 16:44:23 +00:00