====== History of the FreeBSD/RISC-V Port ====== This page describes the history of the %%FreeBSD%%/RISC-V port, an adaptation of the [[http://www.freebsd.org/|FreeBSD Operating System]] to run on the [[http://riscv.org|RISC-V Instruction-Set Architecture (ISA)]]. As a result of this work, %%FreeBSD%% is able to boot to multi-user mode on the Spike simulator and QEMU emulator. Following a number of commits to the %%FreeBSD%% subversion repository in January 2016 (see below), %%FreeBSD%% was the first operating system to have bootable in-tree support for RISC-V. This work was described in an [[http://www.eetimes.com/document.asp?doc_id=1328620|EE Times article on the January 2016 RISC-V workshop]]. This work was supported by the [[https://www.cl.cam.ac.uk/research/security/ctsrd/|DARPA CTSRD Project]] at the [[https://www.cl.cam.ac.uk|University of Cambridge Computer Laboratory]] and was led by [[/RuslanBukin|RuslanBukin]]. The %%FreeBSD%% Foundation posted a [[http://freebsdfoundation.blogspot.co.uk/2016/02/initial-freebsd-risc-v-architecture.html|blog article describing the RISC-V porting effort and merge of architectural support to the FreeBSD base system]] in January 2016. ====== Source ====== This page contains some details about the %%FreeBSD%%/riscv64 development process. Now that RISC-V is an in-tree supported architecture this information is largely kept here for historical purposes. Delivery into head: | **Review** | **Commit** | Description | | [[https://reviews.freebsd.org/D4445|D4445]] | [[https://svnweb.freebsd.org/base?view=revision&revision=292124|r292124]] | kernel-toolchain | | [[https://reviews.freebsd.org/D4554|D4554]] | [[https://svnweb.freebsd.org/base?view=revision&revision=292407|r292407]] | includes | | [[https://reviews.freebsd.org/D4679|D4679]] | [[https://svnweb.freebsd.org/base?view=revision&revision=292691|r292691]] | rtld-elf | | [[https://reviews.freebsd.org/D4943|D4943]] | [[https://svnweb.freebsd.org/base?view=revision&revision=294227|r294227]] | libc/libstand | | [[https://reviews.freebsd.org/D4982|D4982]] | [[https://svnweb.freebsd.org/base?view=revision&revision=295041|r295041]] | kernel | | [[https://reviews.freebsd.org/D5014|D5014]] | [[https://svnweb.freebsd.org/base?view=revision&revision=294571|r294571]] | xlint | | [[https://reviews.freebsd.org/D5020|D5020]] | [[https://svnweb.freebsd.org/base?view=revision&revision=294573|r294573]] | jemalloc | | [[https://reviews.freebsd.org/D5021|D5021]] | [[https://svnweb.freebsd.org/base?view=revision&revision=294577|r294577]] | compiler-rt | | [[https://reviews.freebsd.org/D5035|D5035]] | [[https://svnweb.freebsd.org/base?view=revision&revision=294574|r294574]] | libunwind stubs | | [[https://reviews.freebsd.org/D5039|D5039]] | [[https://svnweb.freebsd.org/base?view=revision&revision=294634|r294634]] | gcc config | | [[https://reviews.freebsd.org/D5040|D5040]] | [[https://svnweb.freebsd.org/base?view=revision&revision=294662|r294662]] | libproc support | | [[https://reviews.freebsd.org/D5046|D5046]] | [[https://svnweb.freebsd.org/base?view=revision&revision=294664|r294664]] | elftoolchain | | [[https://reviews.freebsd.org/D5048|D5048]] | [[https://svnweb.freebsd.org/base?view=revision&revision=294665|r294665]] | usr.bin/ldd | | [[https://reviews.freebsd.org/D5064|D5064]] | [[https://svnweb.freebsd.org/base?view=revision&revision=294908|r294908]] | libthread_db | | [[https://reviews.freebsd.org/D5063|D5063]] | [[https://svnweb.freebsd.org/base?view=revision&revision=294912|r294912]] | libthr | | [[https://reviews.freebsd.org/D5178|D5178]] | [[https://svnweb.freebsd.org/base?view=revision&revision=295253|r295253]] | reuse gp for pcpup | | N/A | [[https://svnweb.freebsd.org/base?view=revision&revision=295972|r295972]] | SMP support | | N/A | [[https://svnweb.freebsd.org/base?view=revision&revision=296614|r296614]] | DDB support | | N/A | [[https://svnweb.freebsd.org/base?view=revision&revision=303660|r303660]] | Privilege v1.9 update | | N/A | [[https://svnweb.freebsd.org/base?view=revision&revision=303908|r303908]] | Operation in machine mode removed | | [[https://reviews.freebsd.org/D8529|D8529]] | [[https://svnweb.freebsd.org/base?view=revision&revision=308731|r308731]] | Full softfloat and hardfloat support | | [[https://reviews.freebsd.org/D11901|D11901]] | [[https://svnweb.freebsd.org/base?view=revision&revision=322168|r322168]] | Compiler built-in macros changes | | [[https://reviews.freebsd.org/D11800|D11800]] | [[https://svnweb.freebsd.org/base?view=revision&revision=322361|r322361]] | Support for privilege spec v1.10 | | N/A | [[https://svnweb.freebsd.org/base?view=revision&revision=335007|335007]] | PLIC | | N/A | [[https://svnweb.freebsd.org/base?view=revision&revision=338467|338467]] | Make use of SSTATUS_SUM bit | ===== People ===== Work on this project was performed by [[/RuslanBukin|RuslanBukin]], [[/ArunThomas|ArunThomas]], and [[/EdMaste|EdMaste]], with [[/RobertWatson|RobertWatson]], [[/AndrewTurner|AndrewTurner]], [[/DavidChisnall|DavidChisnall]], and others providing advice and moral support.