| set(EMU_PLATFORM qemu) |
| |
| set(QEMU_binary_suffix x86_64) |
| |
| # QEMU, in Jailhouse's case, is not emulating Zephyr's hardware |
| # directly, but the root cell/system, with a mount point reaching |
| # the kernel itself available |
| set(QEMU_KERNEL_OPTION ";") |
| |
| if(NOT CONFIG_REBOOT) |
| set(REBOOT_FLAG -no-reboot) |
| endif() |
| |
| if (NOT DEFINED JAILHOUSE_QEMU_IMG_FILE) |
| message(FATAL_ERROR "You have to provide a valid qcow2 QEMU image to be a Jailhouse root cell (variable JAILHOUSE_QEMU_IMG_FILE)!") |
| endif() |
| |
| set(QEMU_CPU_TYPE_${ARCH} kvm64,-kvm_pv_eoi,-kvm_steal_time,-kvm_asyncpf,-kvmclock,+vmx,+x2apic,+arat) |
| set(QEMU_FLAGS_${ARCH} |
| -machine q35,kernel_irqchip=split |
| ${REBOOT_FLAG} |
| -m 1G |
| -enable-kvm |
| -smp 4 |
| -device intel-iommu,intremap=on,x-buggy-eim=on |
| -cpu ${QEMU_CPU_TYPE_${ARCH}} |
| -drive file=${JAILHOUSE_QEMU_IMG_FILE},format=qcow2,id=disk,if=none |
| -device ide-hd,drive=disk |
| -netdev user,id=net |
| -device e1000e,addr=2.0,netdev=net |
| -device intel-hda,addr=1b.0 |
| -device hda-duplex |
| -fsdev local,path=./zephyr,security_model=passthrough,id=vfs |
| -device virtio-9p-pci,addr=1f.7,mount_tag=host,fsdev=vfs |
| ) |
| |
| # TODO: Support debug |
| # set(DEBUG_SCRIPT qemu.sh) |
| # debugserver: QEMU_EXTRA_FLAGS += -s -S |
| # debugserver: qemu |