summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorAlistair Francis <alistair.francis@wdc.com>2019-06-18 17:55:41 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-06-19 22:13:39 +0100
commitaad42285930da69b316b305acfa164cffd1504c4 (patch)
tree16ea683efbd046caff79dd90feab36c766b8ce06 /meta
parentef82d0230e2286a22500aeb544277bef4c9dca15 (diff)
downloadpoky-aad42285930da69b316b305acfa164cffd1504c4.tar.gz
qemuriscv64: Add the QEMU RISC-V 64-bit machine
The include is split ready to add the 32-bit RISC-V machine as soon as glibc supports 32-bit RISC-V. This is based on the work in the meta-riscv layer, thanks to Khem for starting this. (From OE-Core rev: 11b6020dff4550fc3a42e04bc1e86baf37942c62) Signed-off-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/conf/machine/include/riscv/arch-riscv.inc10
-rw-r--r--meta/conf/machine/include/riscv/qemuriscv.inc45
-rw-r--r--meta/conf/machine/include/riscv/tune-riscv.inc19
-rw-r--r--meta/conf/machine/qemuriscv64.conf11
4 files changed, 85 insertions, 0 deletions
diff --git a/meta/conf/machine/include/riscv/arch-riscv.inc b/meta/conf/machine/include/riscv/arch-riscv.inc
new file mode 100644
index 0000000000..19f8f3e211
--- /dev/null
+++ b/meta/conf/machine/include/riscv/arch-riscv.inc
@@ -0,0 +1,10 @@
1# RISCV Architecture definition
2
3DEFAULTTUNE ?= "riscv64"
4
5TUNE_ARCH = "${TUNE_ARCH_tune-${DEFAULTTUNE}}"
6TUNE_PKGARCH = "${TUNE_PKGARCH_tune-${DEFAULTTUNE}}"
7TUNE_CCARGS .= ""
8
9# QEMU usermode fails with invalid instruction error (For riscv32)
10MACHINE_FEATURES_BACKFILL_CONSIDERED_append = "${@bb.utils.contains('TUNE_FEATURES', 'riscv32', ' qemu-usermode', '', d)}"
diff --git a/meta/conf/machine/include/riscv/qemuriscv.inc b/meta/conf/machine/include/riscv/qemuriscv.inc
new file mode 100644
index 0000000000..aa1eba77da
--- /dev/null
+++ b/meta/conf/machine/include/riscv/qemuriscv.inc
@@ -0,0 +1,45 @@
1PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot"
2
3require conf/machine/include/qemu.inc
4require conf/machine/include/riscv/tune-riscv.inc
5
6MACHINE_FEATURES = "screen keyboard ext2 ext3 serial"
7
8KERNEL_IMAGETYPE = "Image"
9
10SERIAL_CONSOLES ?= "115200;ttyS0 115200;hvc0"
11
12IMAGE_FSTYPES_append = " ext4"
13
14MACHINE_EXTRA_RRECOMMENDS += " kernel-modules"
15
16EXTRA_IMAGEDEPENDS += "opensbi"
17RISCV_SBI_PLAT ?= "qemu/virt"
18RISCV_SBI_PAYLOAD ?= "${KERNEL_IMAGETYPE}-${MACHINE}.bin"
19
20# qemuboot options
21QB_KERNEL_CMDLINE_APPEND = "earlycon=sbi"
22QB_MEM = "-m 512"
23QB_MACHINE = "-machine virt"
24QB_DEFAULT_KERNEL = "fw_jump.elf"
25QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"
26QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@"
27QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0"
28QB_SERIAL_OPT = "-device virtio-serial-device -chardev null,id=virtcon -device virtconsole,chardev=virtcon"
29QB_TCPSERIAL_OPT = " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon"
30# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
31QB_OPT_APPEND = " -object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-device,rng=rng0"
32
33BAD_RECOMMENDATIONS += "\
34 libcxx-dev \
35 libcxx-staticdev \
36 compiler-rt-dev \
37 compiler-rt-staticdev \
38"
39
40ASSUME_PROVIDED += "\
41 libcxx-dev \
42 libcxx-staticdev \
43 compiler-rt-dev \
44 compiler-rt-staticdev \
45"
diff --git a/meta/conf/machine/include/riscv/tune-riscv.inc b/meta/conf/machine/include/riscv/tune-riscv.inc
new file mode 100644
index 0000000000..1e3a1081e0
--- /dev/null
+++ b/meta/conf/machine/include/riscv/tune-riscv.inc
@@ -0,0 +1,19 @@
1require conf/machine/include/riscv/arch-riscv.inc
2
3TUNEVALID[riscv64] = "Enable 64-bit RISC-V optimizations"
4TUNEVALID[riscv32] = "Enable 32-bit RISC-V optimizations"
5
6TUNEVALID[littleendian] = "Little endian mode"
7
8AVAILTUNES += "riscv64 riscv32"
9
10TUNE_FEATURES_tune-riscv64 = "riscv64 littleendian"
11TUNE_ARCH_tune-riscv64 = "riscv64"
12TUNE_PKGARCH_tune-riscv64 = "riscv64"
13PACKAGE_EXTRA_ARCHS_tune-riscv64 = "riscv64"
14
15TUNE_FEATURES_tune-riscv32 = "riscv32 littleendian"
16TUNE_ARCH_tune-riscv32 = "riscv32"
17TUNE_PKGARCH_tune-riscv32 = "riscv32"
18PACKAGE_EXTRA_ARCHS_tune-riscv32 = "riscv32"
19
diff --git a/meta/conf/machine/qemuriscv64.conf b/meta/conf/machine/qemuriscv64.conf
new file mode 100644
index 0000000000..f1be7b8a71
--- /dev/null
+++ b/meta/conf/machine/qemuriscv64.conf
@@ -0,0 +1,11 @@
1#@TYPE: Machine
2#@NAME: generic riscv64 machine
3#@DESCRIPTION: Machine configuration for running a generic riscv64
4
5require conf/machine/include/riscv/qemuriscv.inc
6
7QB_OPT_APPEND = "-show-cursor -monitor null -device loader,file=${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE},addr=0x80200000"
8
9EXTRA_IMAGEDEPENDS += "u-boot"
10UBOOT_MACHINE = "qemu-riscv64_defconfig"
11UBOOT_ELF = "u-boot"