From dd74a0d30be525e3307ea81cbd26e3d96b00d453 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Polyos=20Project=20=28=E9=99=88=E8=8D=A3=29?= Date: Thu, 21 Dec 2023 13:28:16 +0800 Subject: [PATCH 1/2] add riscv64 support Signed-off-by: Polyos Project --- BUILD.gn | 2 ++ build_kernel.sh | 3 +++ kernel.mk | 8 +++++++- kernel_module_build.sh | 7 ++++++- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index 08bd5c0..856b92a 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -25,6 +25,8 @@ if (target_cpu == "arm") { kernel_image = "uImage" } else if (target_cpu == "arm64") { kernel_image = "Image" +} else if (target_cpu == "riscv64") { + kernel_image = "Image" } else if (target_cpu == "x86_64") { kernel_image = "bzImage" } diff --git a/build_kernel.sh b/build_kernel.sh index 2679743..bd4a9b5 100755 --- a/build_kernel.sh +++ b/build_kernel.sh @@ -38,6 +38,9 @@ fi elif [ "$5" == "arm64" ];then cp ${2}/kernel/OBJ/${8}/arch/arm64/boot/Image ${3}/Image +elif [ "$5" == "riscv64" ];then + cp ${2}/kernel/OBJ/${8}/arch/riscv/boot/Image ${3}/Image + elif [ "$5" == "x86_64" ];then cp ${2}/kernel/OBJ/${8}/arch/x86/boot/bzImage ${3}/bzImage fi diff --git a/kernel.mk b/kernel.mk index 7784db2..0707e00 100644 --- a/kernel.mk +++ b/kernel.mk @@ -33,18 +33,24 @@ KERNEL_HOSTCC := $(CLANG_HOST_TOOLCHAIN)/clang KERNEL_PREBUILT_MAKE := make CLANG_CC := $(CLANG_HOST_TOOLCHAIN)/clang +KERNEL_CROSS_COMPILE := ifeq ($(KERNEL_ARCH), arm) KERNEL_TARGET_TOOLCHAIN := $(PREBUILTS_GCC_DIR)/linux-x86/arm/gcc-linaro-7.5.0-arm-linux-gnueabi/bin KERNEL_TARGET_TOOLCHAIN_PREFIX := $(KERNEL_TARGET_TOOLCHAIN)/arm-linux-gnueabi- else ifeq ($(KERNEL_ARCH), arm64) KERNEL_TARGET_TOOLCHAIN := $(PREBUILTS_GCC_DIR)/linux-x86/aarch64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin KERNEL_TARGET_TOOLCHAIN_PREFIX := $(KERNEL_TARGET_TOOLCHAIN)/aarch64-linux-gnu- +else ifeq ($(KERNEL_ARCH), riscv64) + PATH := $(CLANG_HOST_TOOLCHAIN):$(PATH) + KERNEL_ARCH := riscv + KERNEL_TARGET_TOOLCHAIN_PREFIX := + KERNEL_CROSS_COMPILE += LLVM=1 + KERNEL_CROSS_COMPILE += LLVM_IAS=1 else ifeq ($(KERNEL_ARCH), x86_64) KERNEL_TARGET_TOOLCHAIN := gcc KERNEL_TARGET_TOOLCHAIN_PREFIX := endif -KERNEL_CROSS_COMPILE := ifeq ($(DEVICE_NAME), hispark_phoenix) KERNEL_CROSS_COMPILE += CONFIG_MSP="y" endif diff --git a/kernel_module_build.sh b/kernel_module_build.sh index 7a4fc9e..daefe1f 100755 --- a/kernel_module_build.sh +++ b/kernel_module_build.sh @@ -40,7 +40,12 @@ elif [ "$KERNEL_ARCH" == "x86_64" ];then kernel_image="bzImage" fi export KERNEL_IMAGE=${kernel_image} -LINUX_KERNEL_IMAGE_FILE=${LINUX_KERNEL_OBJ_OUT}/arch/${KERNEL_ARCH}/boot/${kernel_image} + +if [ "$KERNEL_ARCH" == "riscv64" ];then + LINUX_KERNEL_IMAGE_FILE=${LINUX_KERNEL_OBJ_OUT}/arch/riscv/boot/Image +else + LINUX_KERNEL_IMAGE_FILE=${LINUX_KERNEL_OBJ_OUT}/arch/${KERNEL_ARCH}/boot/${kernel_image} +fi if [ "$DEVICE_NAME" == "hispark_phoenix" ];then export SDK_SOURCE_DIR=${OHOS_ROOT_PATH}/device/soc/hisilicon/hi3751v350/sdk_linux/source -- Gitee From aa4f8857cce0fa2f87a78fbf009d53c54d343c7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Polyos=20Project=20=28=E9=99=88=E8=8D=A3=29?= Date: Tue, 9 Jan 2024 14:35:14 +0800 Subject: [PATCH 2/2] kernel.mk: skip applying device patch if file not found Signed-off-by: Polyos Project --- kernel.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel.mk b/kernel.mk index 0707e00..5cbda86 100644 --- a/kernel.mk +++ b/kernel.mk @@ -91,7 +91,7 @@ endif ifeq ($(PRODUCT_PATH), vendor/hisilicon/watchos) $(hide) cd $(KERNEL_SRC_TMP_PATH) && patch -p1 < $(PRODUCT_PATCH_FILE) else - $(hide) cd $(KERNEL_SRC_TMP_PATH) && patch -p1 < $(DEVICE_PATCH_FILE) + $(hide) cd $(KERNEL_SRC_TMP_PATH) && test -f $(DEVICE_PATCH_FILE) && patch -p1 < $(DEVICE_PATCH_FILE) || true endif ifneq ($(findstring $(BUILD_TYPE), small),) -- Gitee