diff --git a/BUILD.gn b/BUILD.gn index 08bd5c0fab73dcb6e4422cb39d31b4ff574d9c0b..856b92a7d65400df08e6bb4ae64f11b49de95f2d 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 26797439c6db96cb32d0c131b1d05643c880a1d7..bd4a9b55c285ba62aaafcc550b4974f173a2fb26 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 7784db2aa9a74bf1e7a1202b65a2116fb4c2ab30..5cbda863fa0c08df89fcc111e514368663bee6bc 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 @@ -85,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),) diff --git a/kernel_module_build.sh b/kernel_module_build.sh index 7a4fc9e7a83e6346a82693ae7893e0125e3940e4..daefe1ffd65390ddca3a24e240b9b9315d6a7380 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