From 693513f0343d1aefcb6826fdfe600bedb8efd138 Mon Sep 17 00:00:00 2001 From: rikaken2004 <244897142+rikaken2004@users.noreply.github.com> Date: Wed, 30 Sep 2026 16:30:54 +0800 Subject: [PATCH] arch/arm64: make per-core -mcpu flags reachable in both build systems Every ARCH_CORTEX_A5x config selects ARCH_ARMV8A, and both Toolchain.defs and cmake/Toolchain.cmake test CONFIG_ARCH_ARMV8A at the head of the chain, so the -mcpu=cortex-a53/a55/a57/a72 branches were unreachable and all Cortex-A targets built with plain -march=armv8-a, losing per-core scheduling/tuning. Test the specific cores first so -mcpu wins for them; the generic ARCH_ARMV8A branch still covers cores without a dedicated entry and keeps the armv8.5-a/MTE handling. Also add the missing cortex-a55 branch to the cmake toolchain for parity with the makefile. Signed-off-by: rikaken2004 <244897142+rikaken2004@users.noreply.github.com> --- arch/arm64/src/Toolchain.defs | 18 +++++++++--------- arch/arm64/src/cmake/Toolchain.cmake | 16 +++++++++------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/arch/arm64/src/Toolchain.defs b/arch/arm64/src/Toolchain.defs index 3fc5950552a..dad042310ce 100644 --- a/arch/arm64/src/Toolchain.defs +++ b/arch/arm64/src/Toolchain.defs @@ -32,7 +32,15 @@ # reliable code generation. # -ifeq ($(CONFIG_ARCH_ARMV8A),y) +ifeq ($(CONFIG_ARCH_CORTEX_A53),y) + ARCHCPUFLAGS += -mcpu=cortex-a53 +else ifeq ($(CONFIG_ARCH_CORTEX_A55),y) + ARCHCPUFLAGS += -mcpu=cortex-a55 +else ifeq ($(CONFIG_ARCH_CORTEX_A57),y) + ARCHCPUFLAGS += -mcpu=cortex-a57 +else ifeq ($(CONFIG_ARCH_CORTEX_A72),y) + ARCHCPUFLAGS += -mcpu=cortex-a72 +else ifeq ($(CONFIG_ARCH_ARMV8A),y) ifeq ($(CONFIG_ARCH_AS_HAS_ARMV8_5),y) OPTION_MARCH = -march=armv8.5-a else @@ -48,14 +56,6 @@ else ifeq ($(CONFIG_ARCH_ARMV8R),y) else ARCHCPUFLAGS += -march=armv8-r+nofp endif -else ifeq ($(CONFIG_ARCH_CORTEX_A53),y) - ARCHCPUFLAGS += -mcpu=cortex-a53 -else ifeq ($(CONFIG_ARCH_CORTEX_A55),y) - ARCHCPUFLAGS += -mcpu=cortex-a55 -else ifeq ($(CONFIG_ARCH_CORTEX_A57),y) - ARCHCPUFLAGS += -mcpu=cortex-a57 -else ifeq ($(CONFIG_ARCH_CORTEX_A72),y) - ARCHCPUFLAGS += -mcpu=cortex-a72 else ifeq ($(CONFIG_ARCH_CORTEX_R82),y) ARCHCPUFLAGS += -mcpu=cortex-r82 endif diff --git a/arch/arm64/src/cmake/Toolchain.cmake b/arch/arm64/src/cmake/Toolchain.cmake index ab7cb6928a6..0ff14f48c33 100644 --- a/arch/arm64/src/cmake/Toolchain.cmake +++ b/arch/arm64/src/cmake/Toolchain.cmake @@ -25,7 +25,15 @@ set(CMAKE_SYSTEM_VERSION 1) set(CMAKE_C_COMPILER_FORCED TRUE) set(CMAKE_CXX_COMPILER_FORCED TRUE) -if(CONFIG_ARCH_ARMV8A) +if(CONFIG_ARCH_CORTEX_A53) + add_compile_options(-mcpu=cortex-a53) +elseif(CONFIG_ARCH_CORTEX_A55) + add_compile_options(-mcpu=cortex-a55) +elseif(CONFIG_ARCH_CORTEX_A57) + add_compile_options(-mcpu=cortex-a57) +elseif(CONFIG_ARCH_CORTEX_A72) + add_compile_options(-mcpu=cortex-a72) +elseif(CONFIG_ARCH_ARMV8A) add_compile_options(-march=armv8-a) elseif(CONFIG_ARCH_ARMV8R) if(CONFIG_ARCH_FPU) @@ -33,12 +41,6 @@ elseif(CONFIG_ARCH_ARMV8R) else() add_compile_options(-march=armv8-r+nofp) endif() -elseif(CONFIG_ARCH_CORTEX_A53) - add_compile_options(-mcpu=cortex-a53) -elseif(CONFIG_ARCH_CORTEX_A57) - add_compile_options(-mcpu=cortex-a57) -elseif(CONFIG_ARCH_CORTEX_A72) - add_compile_options(-mcpu=cortex-a72) elseif(CONFIG_ARCH_CORTEX_R82) add_compile_options(-mcpu=cortex-r82) endif()