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.
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