diff --git a/meta-openeuler/conf/distro/include/tcmode-external.inc b/meta-openeuler/conf/distro/include/tcmode-external.inc index b9ecaa40bf94ece68c678217b585a30a3b1b328e..5923f2463aa7318696dd2eda2b77a806b41a48ea 100644 --- a/meta-openeuler/conf/distro/include/tcmode-external.inc +++ b/meta-openeuler/conf/distro/include/tcmode-external.inc @@ -79,6 +79,11 @@ PNBLACKLIST_DYNAMIC += "\ gcc-source-${@'${GCCVERSION}'.replace('%', '')} \ " +#unsupport now for riscv64 +PNBLACKLIST_DYNAMIC_remove_riscv64 += " \ + gdb-cross-canadian-${TRANSLATED_TARGET_ARCH} \ +" + # We need our -cross recipes to rebuild when the external toolchain changes, # to recreate the links / wrapper scripts BB_HASHBASE_WHITELIST_remove = "EXTERNAL_TOOLCHAIN" diff --git a/meta-openeuler/conf/local.conf.sample b/meta-openeuler/conf/local.conf.sample index a35d507561755f55985018baae64cbca65eb17f6..22a226fcd84d03a5055e795927974690e71a1f2b 100644 --- a/meta-openeuler/conf/local.conf.sample +++ b/meta-openeuler/conf/local.conf.sample @@ -361,8 +361,10 @@ OPENEULER_SP_DIR = "/usr1/openeuler/src/" # openeuler_gcc_arm32le" EXTERNAL_TOOLCHAIN_arm = "/usr1/openeuler/gcc/openeuler_gcc_arm32le" EXTERNAL_TOOLCHAIN_aarch64 = "/usr1/openeuler/gcc/openeuler_gcc_arm64le" +EXTERNAL_TOOLCHAIN_riscv64 = "/usr1/openeuler/gcc/openeuler_gcc_riscv64" EXTERNAL_TARGET_SYS_arm = "arm-openeuler-linux-gnueabi" EXTERNAL_TARGET_SYS_aarch64 = "aarch64-openeuler-linux-gnu" +EXTERNAL_TARGET_SYS_riscv64 = "riscv64-openeuler-linux-gnu" # default openeuler platform OPENEULER_PLATFORM = "aarch64-std" diff --git a/meta-openeuler/conf/machine/qemu-riscv64.conf b/meta-openeuler/conf/machine/qemu-riscv64.conf new file mode 100644 index 0000000000000000000000000000000000000000..ad1abb90974e3fcc61a1d138337df0cbd08ce55f --- /dev/null +++ b/meta-openeuler/conf/machine/qemu-riscv64.conf @@ -0,0 +1,16 @@ +# Description: Config for riscv64 machine + +MACHINEOVERRIDES =. "mriscv64:" +DEFAULTTUNE = "riscv64" + +export ROOTFS_PACKAGE_ARCH = "riscv64" + +require conf/machine/qemu-common.inc +KERNEL_IMAGETYPE = "Image" +KERNEL_IMAGETYPE_FOR_MAKE = "Image" + +require conf/machine/include/riscv/tune-riscv.inc +BASE_LIB_tune-riscv64 = "lib64" + +require conf/multilib.conf +MULTILIBS ?= "" diff --git a/meta-openeuler/recipes-core/images/qemu-riscv64.inc b/meta-openeuler/recipes-core/images/qemu-riscv64.inc new file mode 100644 index 0000000000000000000000000000000000000000..fac63ec6b02bbb447062045e86f3843357e2c910 --- /dev/null +++ b/meta-openeuler/recipes-core/images/qemu-riscv64.inc @@ -0,0 +1,2 @@ +#image configuration for riscv64 +require qemu.inc diff --git a/meta-openeuler/recipes-core/lxc/lxc/0036-add-riscv-support.patch b/meta-openeuler/recipes-core/lxc/lxc/0036-add-riscv-support.patch new file mode 100644 index 0000000000000000000000000000000000000000..fcd5f2485733475a66d84cd3972f4e9ebd5cd835 --- /dev/null +++ b/meta-openeuler/recipes-core/lxc/lxc/0036-add-riscv-support.patch @@ -0,0 +1,119 @@ +--- lxc-4.0.3/src/lxc/syscall_numbers.h ++++ lxc-4.0.3-new/src/lxc/syscall_numbers.h +@@ -35,6 +35,8 @@ + #define __NR_keyctl 280 + #elif defined __powerpc__ + #define __NR_keyctl 271 ++ #elif defined __riscv ++ #define __NR_keyctl 219 + #elif defined __sparc__ + #define __NR_keyctl 283 + #elif defined __ia64__ +@@ -68,6 +70,8 @@ + #define __NR_memfd_create 350 + #elif defined __powerpc__ + #define __NR_memfd_create 360 ++ #elif defined __riscv ++ #define __NR_memfd_create 279 + #elif defined __sparc__ + #define __NR_memfd_create 348 + #elif defined __blackfin__ +@@ -103,6 +107,8 @@ + #define __NR_pivot_root 217 + #elif defined __powerpc__ + #define __NR_pivot_root 203 ++ #elif defined __riscv ++ #define __NR_pivot_root 41 + #elif defined __sparc__ + #define __NR_pivot_root 146 + #elif defined __ia64__ +@@ -136,6 +142,8 @@ + #define __NR_setns 339 + #elif defined __powerpc__ + #define __NR_setns 350 ++ #elif defined __riscv ++ #define __NR_setns 268 + #elif defined __sparc__ + #define __NR_setns 337 + #elif defined __ia64__ +@@ -169,6 +177,8 @@ + #define __NR_sethostname 74 + #elif defined __powerpc__ + #define __NR_sethostname 74 ++ #elif defined __riscv ++ #define __NR_sethostname 161 + #elif defined __sparc__ + #define __NR_sethostname 88 + #elif defined __ia64__ +@@ -202,6 +212,8 @@ + #define __NR_signalfd 316 + #elif defined __powerpc__ + #define __NR_signalfd 305 ++ #elif defined __riscv ++ #define __NR_signalfd4 74 + #elif defined __sparc__ + #define __NR_signalfd 311 + #elif defined __ia64__ +@@ -235,6 +247,8 @@ + #define __NR_signalfd4 322 + #elif defined __powerpc__ + #define __NR_signalfd4 313 ++ #elif defined __riscv ++ #define __NR_signalfd4 74 + #elif defined __sparc__ + #define __NR_signalfd4 317 + #elif defined __ia64__ +@@ -268,6 +282,8 @@ + #define __NR_unshare 303 + #elif defined __powerpc__ + #define __NR_unshare 282 ++ #elif defined __riscv ++ #define __NR_unshare 97 + #elif defined __sparc__ + #define __NR_unshare 299 + #elif defined __ia64__ +@@ -301,6 +317,8 @@ + #define __NR_bpf 351 + #elif defined __powerpc__ + #define __NR_bpf 361 ++ #elif defined __riscv ++ #define __NR_bpf 280 + #elif defined __sparc__ + #define __NR_bpf 349 + #elif defined __ia64__ +@@ -334,6 +352,8 @@ + #define __NR_faccessat 300 + #elif defined __powerpc__ + #define __NR_faccessat 298 ++ #elif defined __riscv ++ #define __NR_faccessat 48 + #elif defined __sparc__ + #define __NR_faccessat 296 + #elif defined __ia64__ +@@ -385,6 +405,8 @@ + #define __NR_seccomp 348 + #elif defined __powerpc__ + #define __NR_seccomp 358 ++ #elif defined __riscv ++ #define __NR_seccomp 277 + #elif defined __sparc__ + #define __NR_seccomp 346 + #elif defined __ia64__ +@@ -418,6 +440,8 @@ + #define __NR_gettid 236 + #elif defined __powerpc__ + #define __NR_gettid 207 ++ #elif defined __riscv ++ #define __NR_gettid 178 + #elif defined __sparc__ + #define __NR_gettid 143 + #elif defined __ia64__ +@@ -455,6 +479,8 @@ + #define __NR_execveat 354 + #elif defined __powerpc__ + #define __NR_execveat 362 ++ #elif defined __riscv ++ #define __NR_execveat 281 + #elif defined __sparc__ + #define __NR_execveat 350 + #elif defined __ia64__ diff --git a/meta-openeuler/recipes-core/lxc/lxc_4.0.3.bb b/meta-openeuler/recipes-core/lxc/lxc_4.0.3.bb index a40aa5006153c1979d419b1f308d18b4230f6975..5560b5a1cefb9e2128940b8cfb72c20248fb7d89 100644 --- a/meta-openeuler/recipes-core/lxc/lxc_4.0.3.bb +++ b/meta-openeuler/recipes-core/lxc/lxc_4.0.3.bb @@ -42,6 +42,7 @@ SRC_URI = "file://lxc/lxc-4.0.3.tar.gz \ file://lxc/0034-cgfsng-fix-cgroup-attach-cgroup-creation.patch \ file://support_arm32.patch \ file://check_only_rootfs_as_filesystem_type.patch \ + file://0036-add-riscv-support.patch \ " diff --git a/meta-openeuler/recipes-core/os-base/os-base_1.0.bb b/meta-openeuler/recipes-core/os-base/os-base_1.0.bb index e1a7427a11cf58c773471b66306b86b4870c5887..62b20d9408b56fb637fc55f146cb15f25a175b3b 100644 --- a/meta-openeuler/recipes-core/os-base/os-base_1.0.bb +++ b/meta-openeuler/recipes-core/os-base/os-base_1.0.bb @@ -75,6 +75,10 @@ do_install_append_raspberrypi4() { sed -i '/\# load kernel modules/imount -o remount,rw \/' ${D}/etc/rc.d/rc.sysinit } +do_install_append_riscv64() { + sed -i 's/ttyAMA0/ttyS0/g' ${D}/etc/inittab +} + PACKAGES =+ "${PN}-sysctl" FILES_${PN} = "/" FILES_${PN}-sysctl = "${sysconfdir}/sysctl.conf" diff --git a/meta-openeuler/recipes-core/packagegroups/packagegroup-base.bb b/meta-openeuler/recipes-core/packagegroups/packagegroup-base.bb index 70c795eebe4ff3eab32fb021af4709bad4460e73..3111ee2b2584939e2f78272469a657ad7d13acc3 100644 --- a/meta-openeuler/recipes-core/packagegroups/packagegroup-base.bb +++ b/meta-openeuler/recipes-core/packagegroups/packagegroup-base.bb @@ -103,3 +103,12 @@ e2fsprogs-resize2fs \ RDEPENDS_packagegroup-base_append_aarch64-std = " \ dsoftbus \ " + +RDEPENDS_packagegroup-base_remove_riscv64 += " \ +libhugetlbfs \ +" + +RDEPENDS_packagegroup-base-extended_remove_riscv64 += " \ +libmetal \ +openamp \ +" diff --git a/meta-openeuler/recipes-core/packagegroups/packagegroup-kernel-modules.bb b/meta-openeuler/recipes-core/packagegroups/packagegroup-kernel-modules.bb index 0f1477b195817f17be1a12f0d32d0b555a2046e5..d74e5ca9ec06ca5d428531e48d1e541d307905f5 100644 --- a/meta-openeuler/recipes-core/packagegroups/packagegroup-kernel-modules.bb +++ b/meta-openeuler/recipes-core/packagegroups/packagegroup-kernel-modules.bb @@ -55,3 +55,5 @@ RDEPENDS_${PN}_raspberrypi4 = " \ " RDEPENDS_${PN}_aarch64-pro = " \ " +RDEPENDS_${PN}_riscv64 = " \ +" diff --git a/meta-openeuler/recipes-external/glibc/glibc-external.bb b/meta-openeuler/recipes-external/glibc/glibc-external.bb index 329812e5806922932e8ff95f3d1edf7240805089..fc3335137d0f5c18d5153766b343f82cfd40c3d9 100644 --- a/meta-openeuler/recipes-external/glibc/glibc-external.bb +++ b/meta-openeuler/recipes-external/glibc/glibc-external.bb @@ -197,6 +197,11 @@ FILES_${PN} += "\ ${datadir}/locale \ ${datadir}/i18n \ " +#For riscv64 +FILES_${PN} += "\ + ${libdir}/lp64d \ + ${base_libdir}/lp64d \ +" FILES_${PN}-dev_remove := "${datadir}/aclocal" diff --git a/meta-openeuler/recipes-kernel/linux/linux-openeuler.bb b/meta-openeuler/recipes-kernel/linux/linux-openeuler.bb index 77d8717c811e6cea449dfd574205cb39a911fd83..d8a1bb02519e90114ef2b010ec7798e253d7f735 100644 --- a/meta-openeuler/recipes-kernel/linux/linux-openeuler.bb +++ b/meta-openeuler/recipes-kernel/linux/linux-openeuler.bb @@ -29,7 +29,7 @@ KERNEL_MODULE_PACKAGE_SUFFIX = "" PV = "${LINUX_VERSION}" -COMPATIBLE_MACHINE = "qemuarm|qemuarmv5|qemuarm64|qemux86|qemuppc|qemuppc64|qemumips|qemumips64|qemux86-64|qemuriscv64|qemuriscv32|qemu-aarch64|qemu-arm|raspberrypi4-64" +COMPATIBLE_MACHINE = "qemuarm|qemuarmv5|qemuarm64|qemux86|qemuppc|qemuppc64|qemumips|qemumips64|qemux86-64|qemuriscv64|qemuriscv32|qemu-aarch64|qemu-arm|qemu-riscv64|raspberrypi4-64" PACKAGES += "${KERNEL_PACKAGE_NAME}-img" FILES_${KERNEL_PACKAGE_NAME}-img = "/boot/Image-${KERNEL_VERSION}" @@ -47,6 +47,9 @@ python () { KERNEL_CC_append_aarch64 = " ${TOOLCHAIN_OPTIONS}" KERNEL_LD_append_aarch64 = " ${TOOLCHAIN_OPTIONS}" +KERNEL_CC_append_riscv64 = " ${TOOLCHAIN_OPTIONS}" +KERNEL_LD_append_riscv64 = " ${TOOLCHAIN_OPTIONS}" + OPENEULER_KERNEL_CONFIG = "../yocto-embedded-tools/config/${ARCH}/defconfig-kernel" OPENEULER_KERNEL_CONFIG_aarch64-pro = "${S}/arch/${ARCH}/configs/bcm2711_defconfig" do_configure_prepend() { diff --git a/scripts/compile.sh b/scripts/compile.sh index cc58a20869b43b8b2d0093d97394ad370fbdcfda..5ec563caae546b761b2f429171a9989d1978bd8f 100644 --- a/scripts/compile.sh +++ b/scripts/compile.sh @@ -13,6 +13,7 @@ usage() echo " aarch64-pro" echo " arm-std" echo " raspberrypi4-64" + echo " riscv64-std" echo " Build dir: /build (defaut)" echo " External toolchain dir(absoulte path):" echo " /usr1/openeuler/gcc/openeuler_gcc_arm64le (default)" @@ -70,6 +71,10 @@ get_build_info() "arm-std") MACHINE="qemu-arm" ;; + "riscv64-std") + MACHINE="qemu-riscv64" + BITBAKE_OPT="openeuler-image openeuler-image-tiny" + ;; *) echo "unknown platform, use aarch64-std as default" PLATFORM="aarch64-std" @@ -82,6 +87,8 @@ get_build_info() OPENEULER_TOOLCHAIN_DIR="OPENEULER_TOOLCHAIN_DIR_aarch64";; "qemu-arm") OPENEULER_TOOLCHAIN_DIR="OPENEULER_TOOLCHAIN_DIR_arm";; + "qemu-riscv64") + OPENEULER_TOOLCHAIN_DIR="OPENEULER_TOOLCHAIN_DIR_riscv64";; *) echo "unknown machine" usage || return 1