Use NOVA microkernel from github, add 64bit

Use git to get recent kernels from github. Adjust NOVA patch to compile
with recent github version. Patch and use makefile of NOVA microkernel
to avoid duplicated (and outdated) makefile in Genode

Furthermore, this patch adds support for using NOVA on x86_64. The
generic part of the syscall bindings has been moved to
'base-nova/include/nova/syscall-generic.h'. The 32/64-bit specific
parts are located at 'base-nova/include/32bit/nova/syscalls.h' and
'base-nova/include/64bit/nova/syscalls.h' respectively.

On x86_64, the run environment boots qemu using the Pulsar boot loader
because GRUB legacy does not support booting 64bit ELF executables.

In addition to the NOVA-specific changes in base-nova, this patch
rectifies compile-time warnings or build errors in the 'ports' and
'libports' repositories that are related to NOVA x86_64 (i.e., Vancouver
builds for 32bit only and needed an adaptation to NOVAs changed
bindings)

Fixes #233, fixes #234
This commit is contained in:
Alexander Boettcher
2012-06-06 10:19:48 +02:00
committed by Norman Feske
parent 200deec403
commit ae6257dce1
30 changed files with 726 additions and 344 deletions

View File

@@ -441,7 +441,12 @@ proc spawn_qemu { wait_for_re timeout_value } {
if {[have_spec platform_vea9x4]} { append qemu_args " -M vexpress-a9 -cpu cortex-a9 -m 256 " }
# on x86, we supply the boot image as ISO image
if {[have_spec x86]} { append qemu_args " -cdrom [run_dir].iso " }
if {[have_spec x86_64] && [have_spec nova]} {
append qemu_args " -boot n -tftp [run_dir] -bootp boot/pulsar -no-reboot -no-shutdown "
} else {
# on x86, we supply the boot image as ISO image
if {[have_spec x86]} { append qemu_args " -cdrom [run_dir].iso " }
}
# on ARM, we supply the boot image as kernel
if {[have_spec arm]} { append qemu_args " -kernel [run_dir]/image.elf " }