diff --git a/flake.nix b/flake.nix index 7a9ef99..2554331 100644 --- a/flake.nix +++ b/flake.nix @@ -8,7 +8,7 @@ outputs = { self, nixpkgs }: let localSystems = [ "aarch64-linux" "x86_64-linux" ]; - crossSystems = [ "aarch64-genode" "x86_64-genode" ]; + crossSystems = [ "aarch64-genode" "i686-genode" "x86_64-genode" ]; forAllLocalSystems = f: nixpkgs.lib.genAttrs localSystems (system: f system); @@ -249,6 +249,7 @@ }); in { aarch64-linux = checks'.aarch64-linux-aarch64-genode; + i686-linux = checks'.x86_64-linux-i686-genode; x86_64-linux = checks'.x86_64-linux-x86_64-genode; }; diff --git a/packages/default.nix b/packages/default.nix index 3cc81fe..e0b3df6 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -97,6 +97,7 @@ in depotPkgs // { mv $out/ld-nova.lib.so $out/ld.lib.so mv $out/nova_timer_drv $out/timer_drv ''; + meta.platforms = [ "i686-genode" "x86_64-genode" ]; }; bender = buildPackages.callPackage ./bender { }; diff --git a/packages/genodelabs/default.nix b/packages/genodelabs/default.nix index be7e58a..f1ae38d 100644 --- a/packages/genodelabs/default.nix +++ b/packages/genodelabs/default.nix @@ -9,10 +9,12 @@ let platform = targetPackages.targetPlatform; arch = with platform; - if isx86_64 then - "x86_64" - else if isAarch64 then + if isAarch64 then "arm_v8a" + else if isx86_32 then + "x86_32" + else if isx86_64 then + "x86_64" else throw "unknown Genode arch for platform ${platform.system}"; diff --git a/tests/default.nix b/tests/default.nix index eda496f..5e23d1b 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -21,6 +21,7 @@ let qemuBinary = qemuPkg: { aarch64-genode = "${qemuPkg}/bin/qemu-system-aarch64"; + i686-genode = "${qemuPkg}/bin/qemu-system-i386"; x86_64-genode = "${qemuPkg}/bin/qemu-system-x86_64"; }.${genodepkgs.stdenv.hostPlatform.system}; @@ -66,7 +67,7 @@ let ''; } { - prefix = "nova-"; + prefix = "nova-x86_64-"; specs = [ "x86" "nova" ]; platforms = [ "x86_64-genode" ]; basePackages = [ testPkgs.base-nova ] @@ -84,6 +85,25 @@ let "$@" ''; } + { + prefix = "nova-x86_32-"; + specs = [ "x86" "nova" ]; + platforms = [ "i686-genode" ]; + basePackages = [ testPkgs.base-nova ] + ++ map testPkgs.genodeSources.depot [ "rtc_drv" ]; + makeImage = lib.novaImage; + startVM = vmName: image: '' + #! ${localPackages.runtimeShell} + exec ${qemuBinary qemu'} \ + -name ${vmName} \ + -machine q35 \ + -m 384 \ + -kernel "${testPkgs.bender}/bender" \ + -initrd "${testPkgs.NOVA}/hypervisor-x86_32 arg=iommu novpid serial,${image}/image.elf" \ + $QEMU_OPTS \ + "$@" + ''; + } ]; cores' = builtins.filter (core: