if {![have_spec x86_64]} { puts "\nSolo5 requires a 64bit architecture\n" exit 0 } if {![file exists bin/mirage]} { puts "" puts "A mirage image must be provided at 'bin/mirage' to execute this scenario." puts "" exit 1 } if {[have_spec linux]} { puts "" puts "This scenario is not available for Linux." puts "" exit 1 } create_boot_directory import_from_depot \ [depot_user]/src/[base_src] \ [depot_user]/src/init \ [depot_user]/src/rtc_drv \ [depot_user]/pkg/terminal \ source ${genode_dir}/repos/base/run/platform_drv.inc set build_components { app/log_core drivers/framebuffer drivers/input/dummy drivers/nic drivers/rtc lib/solo5 server/terminal_log } append_platform_drv_build_components lappend_if [expr {[nic_drv_binary] == "nic_drv"}] build_components drivers/nic lappend_if [expr {[nic_drv_binary] == "usb_drv"}] build_components drivers/usb proc gpio_drv { } { if {[have_spec rpi] && [have_spec hw]} { return hw_gpio_drv } if {[have_spec rpi] && [have_spec foc]} { return foc_gpio_drv } return gpio_drv } lappend_if [have_spec gpio] build_components drivers/gpio build $build_components set fb_drv "fb_drv" if {[have_include "image/uefi"]} { set fb_drv "fb_boot_drv" } append config { } append_platform_drv_config append_if [have_spec gpio] config " " append config { } install_config $config append boot_modules { dummy_input_drv log_core terminal_log mirage rtc_drv solo5.lib.so } append boot_modules " $fb_drv" # platform-specific modules append_platform_drv_boot_modules lappend boot_modules [nic_drv_binary] lappend_if [have_spec gpio] boot_modules [gpio_drv] build_boot_image $boot_modules proc qemu_nic_model {} { if [have_spec x86] { return e1000 } if [have_spec lan9118] { return lan9118 } if [have_spec zynq] { return cadence_gem } return nic_model_missing } append qemu_args " -netdev user,id=net0 " append qemu_args " -net nic,model=[qemu_nic_model],netdev=net0 " run_genode_until forever