-- SPDX-License-Identifier: CC0-1.0 let Genode = env:DHALL_GENODE let Args = { config : Genode.Init.Type, rom : Genode.Prelude.Map.Type Text Text } : Type in λ(args : Args) → { arch = let Arch = < x86_32 | x86_64 > in Arch.x86_64 , config = Genode.Init::{ , verbose = True , defaultRoutes = Genode.Init.default.defaultRoutes # [ Genode.ServiceRoute.parent "IO_MEM" , Genode.ServiceRoute.parent "IO_PORT" , Genode.ServiceRoute.parent "IRQ" , Genode.ServiceRoute.child "Timer" "timer" ] , children = [ { mapKey = "timer" , mapValue = Genode.Init.Start::{ , binary = "nova_timer_drv" , resources = { caps = 96, ram = Genode.units.MiB 1 } , provides = [ "Timer" ] } } , { mapKey = "harness" , mapValue = let child = Genode.Init.toStart args.config in Genode.Init.Start::{ , binary = "sotest-harness" , exitPropagate = True , resources = { caps = child.resources.caps + 128 , ram = child.resources.ram + Genode.units.MiB 1 } , config = Some ( Genode.Prelude.XML.element { name = "config" , attributes = Genode.Prelude.XML.emptyAttributes , content = [ Genode.Init.Start.toXML "init" child ] } ) , routes = [ Genode.ServiceRoute.parentLabel "LOG" (Some "SOTEST") (Some "platform") ] } } ] } , rom = let baseNova = env:BASE_NOVA_MANIFEST let os = env:OS_MANIFEST let sotest = env:SOTEST_PRODUCER_MANIFEST in [ { mapKey = "ld.lib.so" , mapValue = baseNova.lib.ld-nova.mapValue } , baseNova.bin.nova_timer_drv , os.bin.init , sotest.bin.sotest-harness ] # args.rom }