VIMIX supports RISC V 32- and 64-bit.
Booting from a SBI bootloader works (at least in qemu
), to enable this see build_instructions.
64-bit integer math on a 32-bit CPU requires software implementations of division etc. This is why only the 32-bit kernel and userspace require kernel/lib/div64.c
. Handling of 64-bit time values on 32-bit systems makes this necessary (see get_time).
Only 64-bit user space is supported. To support 32-bit applications on a 64-bit kernel at least these changes would be required:
- Mark processes as 32- vs 64-bit
- Limit virtual memory addresses of 32-bit processes to 4GB.
- Switch CPU mode to execute 32-bit code before switching to process
- Switch back in interrupt
- Only store 32-bit registers at context switch (sign extend?)
Only sv39 memory_management is supported.
Up: README
build_instructions | debugging | run_on_qemu | run_on_spike | run_on_visionfive2 | overview_directories | architectures | kernel | user space