Skip to content

Latest commit

 

History

History
39 lines (22 loc) · 1.62 KB

architectures.md

File metadata and controls

39 lines (22 loc) · 1.62 KB

Supported Architectures and Arch Specifics

VIMIX supports RISC V 32- and 64-bit.

SBI

Booting from a SBI bootloader works (at least in qemu), to enable this see build_instructions.

32-bit RISC V

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

64-bit RISC V

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.

RISC V Platforms


Up: README

build_instructions | debugging | run_on_qemu | run_on_spike | run_on_visionfive2 | overview_directories | architectures | kernel | user space