aboutsummaryrefslogtreecommitdiffstats
path: root/meta-xilinx-bsp/recipes-devtools/qemu
diff options
context:
space:
mode:
Diffstat (limited to 'meta-xilinx-bsp/recipes-devtools/qemu')
-rw-r--r--meta-xilinx-bsp/recipes-devtools/qemu/files/qemu-system-aarch64-multiarch32
-rw-r--r--meta-xilinx-bsp/recipes-devtools/qemu/qemu-devicetrees.inc37
-rw-r--r--meta-xilinx-bsp/recipes-devtools/qemu/qemu-devicetrees_2017.3.bb4
-rw-r--r--meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx-helper-native_1.0.bb28
-rw-r--r--meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx-multiarch-helper-native_1.0.bb20
-rw-r--r--meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx.inc47
-rw-r--r--meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx_2017.3.bb5
7 files changed, 173 insertions, 0 deletions
diff --git a/meta-xilinx-bsp/recipes-devtools/qemu/files/qemu-system-aarch64-multiarch b/meta-xilinx-bsp/recipes-devtools/qemu/files/qemu-system-aarch64-multiarch
new file mode 100644
index 00000000..15124c1b
--- /dev/null
+++ b/meta-xilinx-bsp/recipes-devtools/qemu/files/qemu-system-aarch64-multiarch
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+BINPATH=$(dirname $0)
+MACHINE_PATH=$(mktemp -d)
+
+APU_ARGS=
+PMU_ARGS=
+
+while [ ! -z "$1" ]; do
+ if [ "$1" = "-pmu-args" ]; then
+ PMU_ARGS+=" $2"
+ shift
+ else
+ APU_ARGS+=" $1"
+ fi
+ shift
+done
+
+PMU_ROM=$(last=; for i in $PMU_ARGS; do if [ "$last" = "-kernel" ]; then echo "$i"; break; fi; last=$i; done)
+if [ ! -e $PMU_ROM ]; then
+ echo "------"
+ echo "Error: Missing PMU ROM - $PMU_ROM"
+ echo " See 'meta-xilinx/README.qemu.md' for more information on accquiring the PMU ROM."
+ echo "------"
+ exit 255
+fi
+
+# start the PMU instance
+$BINPATH/qemu-system-microblazeel $PMU_ARGS -machine-path $MACHINE_PATH &
+# start the APU instance
+$BINPATH/qemu-system-aarch64 $APU_ARGS -machine-path $MACHINE_PATH
+
diff --git a/meta-xilinx-bsp/recipes-devtools/qemu/qemu-devicetrees.inc b/meta-xilinx-bsp/recipes-devtools/qemu/qemu-devicetrees.inc
new file mode 100644
index 00000000..d4044ed7
--- /dev/null
+++ b/meta-xilinx-bsp/recipes-devtools/qemu/qemu-devicetrees.inc
@@ -0,0 +1,37 @@
+SUMMARY = "Xilinx's hardware device trees required for QEMU"
+HOMEPAGE = "https://github.com/xilinx/qemu-devicetrees/"
+LICENSE = "BSD"
+DEPENDS += "dtc-native"
+
+inherit deploy
+
+LIC_FILES_CHKSUM = "file://Makefile;beginline=1;endline=27;md5=7348b6cbcae69912cb1dee68d6c68d99"
+
+PV = "xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}"
+
+BRANCH ?= ""
+REPO ?= "git://github.com/Xilinx/qemu-devicetrees.git;protocol=https"
+
+BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
+SRC_URI = "${REPO};${BRANCHARG}"
+
+S = "${WORKDIR}/git"
+
+# Don't need to do anything
+do_install() {
+ :
+}
+
+do_deploy() {
+ # single-arch dtbs
+ for DTS_FILE in ${S}/LATEST/SINGLE_ARCH/*.dtb; do
+ install -Dm 0644 $DTS_FILE ${DEPLOYDIR}/qemu-hw-devicetrees/$(basename $DTS_FILE .dtb).dtb
+ done
+
+ # multi-arch dtbs
+ for DTS_FILE in ${S}/LATEST/MULTI_ARCH/*.dtb; do
+ install -Dm 0644 $DTS_FILE ${DEPLOYDIR}/qemu-hw-devicetrees/multiarch/$(basename $DTS_FILE .dtb).dtb
+ done
+}
+
+addtask deploy after do_install
diff --git a/meta-xilinx-bsp/recipes-devtools/qemu/qemu-devicetrees_2017.3.bb b/meta-xilinx-bsp/recipes-devtools/qemu/qemu-devicetrees_2017.3.bb
new file mode 100644
index 00000000..ec6093b7
--- /dev/null
+++ b/meta-xilinx-bsp/recipes-devtools/qemu/qemu-devicetrees_2017.3.bb
@@ -0,0 +1,4 @@
+require qemu-devicetrees.inc
+
+XILINX_RELEASE_VERSION = "v2017.3"
+SRCREV ?= "4b951c594078562e9dd828430075968dd91ac425"
diff --git a/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx-helper-native_1.0.bb b/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx-helper-native_1.0.bb
new file mode 100644
index 00000000..55b35b53
--- /dev/null
+++ b/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx-helper-native_1.0.bb
@@ -0,0 +1,28 @@
+
+python () {
+ if d.getVar("PREFERRED_PROVIDER_qemu-helper-native") != d.getVar("PN"):
+ raise bb.parse.SkipRecipe("Set qemu-helper-native provider to use this recipe")
+}
+
+def get_filespath_extra(d, subpath):
+ metaroot = next((p for p in d.getVar('BBPATH').split(':') if os.path.basename(p) == 'meta'), None)
+ if metaroot:
+ return os.path.join(metaroot, subpath) + ":"
+ return ""
+
+# TODO: improve this, since it is very hacky that this recipe need to build tunctl.
+# include the existing qemu-helper-native
+require recipes-devtools/qemu/qemu-helper-native_1.0.bb
+# get the path to tunctl.c
+FILESEXTRAPATHS_prepend := "${@get_filespath_extra(d, 'recipes-devtools/qemu/qemu-helper')}"
+
+# provide it, to replace the existing
+PROVIDES += "qemu-helper-native"
+
+# replace qemu with qemu-xilinx
+DEPENDS_remove = "qemu-native"
+DEPENDS_append = " \
+ qemu-xilinx-native \
+ qemu-xilinx-multiarch-helper-native \
+ "
+
diff --git a/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx-multiarch-helper-native_1.0.bb b/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx-multiarch-helper-native_1.0.bb
new file mode 100644
index 00000000..a9b11c6c
--- /dev/null
+++ b/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx-multiarch-helper-native_1.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Helper scripts for executing a multi-arch instance of Xilinx QEMU"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+RDEPENDS_${PN} = "qemu-xilinx-native"
+
+inherit native
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+SRC_URI = "file://qemu-system-aarch64-multiarch"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+SYSROOT_DIRS += "${bindir}/qemu-xilinx"
+
+do_install() {
+ install -Dm 0755 ${WORKDIR}/qemu-system-aarch64-multiarch ${D}${bindir}/qemu-xilinx/qemu-system-aarch64-multiarch
+}
+
diff --git a/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx.inc b/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx.inc
new file mode 100644
index 00000000..9b59ecce
--- /dev/null
+++ b/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx.inc
@@ -0,0 +1,47 @@
+QEMU_TARGETS = "aarch64 arm microblaze microblazeel"
+
+require recipes-devtools/qemu/qemu.inc
+
+SUMMARY = "Xilinx's fork of a fast open source processor emulator"
+HOMEPAGE = "https://github.com/xilinx/qemu/"
+
+LIC_FILES_CHKSUM = " \
+ file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
+ file://COPYING.LIB;endline=24;md5=c04def7ae38850e7d3ef548588159913 \
+ "
+
+PV = "${XILINX_QEMU_VERSION}-xilinx-${XILINX_RELEASE_VERSION}+git${SRCPV}"
+BRANCH ?= ""
+REPO ?= "git://github.com/Xilinx/qemu.git;protocol=https"
+
+BRANCHARG = "${@['nobranch=1', 'branch=${BRANCH}'][d.getVar('BRANCH', True) != '']}"
+SRC_URI = "${REPO};${BRANCHARG}"
+
+S = "${WORKDIR}/git"
+
+# Disable KVM completely
+PACKAGECONFIG_remove = "kvm"
+
+# Enable libgcrypt
+PACKAGECONFIG_append = " gcrypt"
+
+DISABLE_STATIC_pn-${PN} = ""
+
+PTEST_ENABLED = ""
+
+# append a suffix dir, to allow multiple versions of QEMU to be installed
+EXTRA_OECONF_append = " \
+ --bindir=${bindir}/qemu-xilinx \
+ --libexecdir=${libexecdir}/qemu-xilinx \
+ "
+
+do_configure_prepend() {
+ # rewrite usage of 'libgcrypt-config' with 'pkg-config libgcrypt'
+ sed -r -i 's/libgcrypt-config(\s*--)/pkg-config libgcrypt\1/g' ${S}/configure
+}
+
+do_install_append() {
+ # Prevent QA warnings about installed ${localstatedir}/run
+ if [ -d ${D}${localstatedir}/run ]; then rmdir ${D}${localstatedir}/run; fi
+}
+
diff --git a/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx_2017.3.bb b/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx_2017.3.bb
new file mode 100644
index 00000000..f8a91d75
--- /dev/null
+++ b/meta-xilinx-bsp/recipes-devtools/qemu/qemu-xilinx_2017.3.bb
@@ -0,0 +1,5 @@
+require qemu-xilinx.inc
+
+XILINX_RELEASE_VERSION = "v2017.3"
+XILINX_QEMU_VERSION = "v2.8.1"
+SRCREV ?= "8f8c89b18f6e4523099e41d81769fc534064b8de"