Toby Jaffey
4e61e3bd4a
Make self and mandel examples a bit smaller
CI / test (ubuntu-latest) (push) Waiting to run
2025-12-15 01:12:47 +00:00
Toby Jaffey
035608b04a
Add agnes NES emulator (very slow).
...
Add -W <n> -H <n> width and height options to host-sdl
2025-12-15 00:37:12 +00:00
Toby Jaffey
2e90bfa812
Doom binary with audio
CI / test (ubuntu-latest) (push) Waiting to run
2025-12-14 23:34:06 +00:00
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
07bab3cca6
Rebuild precompiled bins
2025-12-14 19:37:00 +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
065d2c64aa
TinyGL example
2025-12-14 14:45:10 +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
be5dbbfa44
Latest doom binary (since crt0.S changes)
2025-12-14 11:00:26 +00:00
Toby Jaffey
8d67bf2fc3
Latest maze binary
2025-12-14 10:59:59 +00:00
Toby Jaffey
cfc1286874
Regenerate binaries, now default crt0 has changed
2025-12-14 01:36:47 +00:00
Toby Jaffey
173d5056a5
Completely remove UVM32_STACK_PROTECTION unless enabled (requires manually changing crt0.S), as this saves 16 bytes on every .bin
2025-12-14 00:09:32 +00:00
Toby Jaffey
2039de73f2
Rename getbuf to getslice
2025-12-13 23:15:06 +00:00
Toby Jaffey
1c9e9296be
xxd -n (set variable name) doesn't exist on all systems, use shell utilities to build the headers
...
Fixes #1
2025-12-13 22:20:38 +00:00
Toby Jaffey
789cd74516
Disable stack canary by default
2025-12-12 21:01:40 +00:00
Toby Jaffey
8158ac647c
Renaming and documentating header
2025-12-12 20:42:26 +00:00
Toby Jaffey
147a9f2198
Split includes.
...
All code needs uvm32_sys.h, but uvm32_common_custom.h is optional (and has defs needed for demos)
2025-12-12 15:56:47 +00:00
Toby Jaffey
ce63353156
Update makefile
2025-12-12 14:29:50 +00:00
Toby Jaffey
577aaadacd
Zig allocator demo, using extram
2025-12-11 21:18:21 +00:00
Toby Jaffey
5fc4575888
Add precompiled heap example
2025-12-11 20:37:33 +00:00
Toby Jaffey
6878c5210f
Fix weird definition of NULL
2025-12-11 16:57:23 +00:00
Toby Jaffey
1213c5673f
Do .bin inclusion in C code at build
2025-12-11 12:48:41 +00:00
Toby Jaffey
a55300c8c3
Updated maze binary
2025-12-11 01:11:41 +00:00
Toby Jaffey
15806b592b
Rebuilt binaries
2025-12-11 00:01:03 +00:00
Toby Jaffey
3e7b7cea4d
Round power of 2 for memory size
2025-12-11 00:00:01 +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
9596838a4b
Recursive maze demo, causes big stack usage
2025-12-09 23:29:16 +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
d56f34dc4e
Use cursors
2025-12-09 00:56:07 +00:00
Toby Jaffey
04e7aaef88
Exit on keypress
2025-12-09 00:54:22 +00:00
Toby Jaffey
c37286cf01
Add "self", example of building uvm32 to run inside uvm32
...
mandelbrot app is embedded in host-mini, which is then compiled to a .bin
2025-12-08 23:54:14 +00:00
Toby Jaffey
7e7cabeb24
Prettier, better terminal handling, more variation
2025-12-08 21:41:51 +00:00
Toby Jaffey
ebb6518ec3
Lissajous, showing floating point arithmetic
2025-12-08 21:20:57 +00:00
Toby Jaffey
6735b159ac
Make syscall names closer to libc
2025-12-08 16:28:00 +00:00
Toby Jaffey
9d6e6790e1
Cleanup syscall numbers
2025-12-08 12:53:33 +00:00
Toby Jaffey
274f347d90
Break console io example out into own app
2025-12-08 10:35:42 +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
c0711213ae
Add console tetris demo
2025-12-07 21:02:22 +00:00
Toby Jaffey
95333e06d8
More precompiled examples
2025-12-07 01:04:28 +00:00
Toby Jaffey
c9d30b6d28
uvm32 initial version
2025-12-06 16:44:23 +00:00