Porting Fiasco.OC to RISC-V - Questions
heshamelmatary at gmail.com
Thu Mar 12 13:49:05 CET 2015
Thanks for your reply. I thought it would be a good idea to start with
L4Re to familiarize myself with Fiasco.OC/L4Re structure, and chose to
start with L4Re because it doesn't need a lot of architecture
dependent code. So, after your reply, I'd work on getting bootstrap
working and loading the "to-be-evolved" Fiasco.OC RISC-V kernel. This
would allow me to debug and test Fiasco.OC/risc-v as I add new
On Thu, Mar 12, 2015 at 12:48 PM, Hesham ALMatary
<heshamelmatary at gmail.com> wrote:
> Hi Adam,
> Thanks for your reply. I thought it would be a good idea to start with
> L4Re to familiarize myself with Fiasco.OC/L4Re structure, and chose to
> start with L4Re because it doesn't need a lot of architecture
> dependent code. So, after your reply, I'd work on getting bootstrap
> working and loading the "to-be-evolved" Fiasco.OC RISC-V kernel. This
> would allow me to debug and test Fiasco.OC/risc-v as I add new
> code/features their.
> On Wed, Mar 11, 2015 at 11:14 PM, Adam Lackorzynski
> <adam at os.inf.tu-dresden.de> wrote:
>> On Wed Mar 11, 2015 at 17:53:58 +0000, Hesham ALMatary wrote:
>>> I'm considering porting Fiasco.OC/L4Re to RISC-V architecture (for
>>> both my research and GSoC). So, I started reading the documentation
>>> and building the environment (For Fiasco.OC and RISC-V tools), and
>>> QEMU (the emulator that I'll use initially) is running Hello World
>>> example just fine.
>>> After some reading, I wanted to start adding support for building L4Re
>>> for RISC-V (is this a good start?), and I came up with some questions.
>>> There are two variants of RISC-V ABI (32 and 64 bit) should I provide
>>> both or just 64-bit version?
>> For starting, just choose one. The other type could be done later.
>>> What are the minimal packages and/or Fiasco.OC system components that
>>> need to be implemented to get Hello World working? Please correct me
>>> if the following L4Re list is not right (contains more than needed, or
>>> lack others):
>>> "bootstrap, sigma0, moe, Log, libc, libc_minimal, cxx_util, cxx_io,
>>> cxx_base, cxx_io_kdebug,l4sys-direct, l4sys"
>> Good list. To find out the exact list you can just do
>> "make O=... sigma0 moe bootstrap l4re_kernel hello" and then see in the
>> build directory what was actually built.
>> But actually for starting, you just need boostrap because then comes the
>> kernel that needs to work before anything more needs to be done for the
>> user level components.
>>> Some of the packages are architecture dependent which need some code
>>> from other projects (like uclibc), should I add them all? FYI, newlib
>>> has support for riscv, but uclibc doesn't,
>> True that uclibc does not support riscv natively. But there's nearly no
>> architecture dependent code needed, so this is not really an issue.
>>> how can I make the build
>>> system choose specific packages for the target architecture (riscv in
>>> this case) and maybe neglect building others?
>> One way is putting 'broken' files in to package's root directory (e.g.
>> l4/pkg/hello/broken). Then there's the SYSTEMS variable which defines
>> for which architecture a library/program can be compiled for. Its
>> default is all architecture, so by not changing the default and just
>> adding riscv-l4f where you want it could also be a way.
>> Adam adam at os.inf.tu-dresden.de
>> Lackorzynski http://os.inf.tu-dresden.de/~adam/
>> l4-hackers mailing list
>> l4-hackers at os.inf.tu-dresden.de
More information about the l4-hackers