882238116e
Change the GCC toolchain configuration to make use of the Cortex-R82 target. When Cortex-R82 was added as a GCC toolchain option, the GCC version of the Zephyr SDK did not support Cortex-R82 tuning. Zephyr was therefore compiled compiled for the Armv8.4-A architecture. Since Zephyr SDK 0.15.0 (which updated GCC from 10.3.0 to 12.1.0) coupled with Zephyr 3.2, the Cortex-R82 target is supported. The Armv8-R AArch64 architecture does not support the EL3 exception level. EL3 support is therefore made conditional on Armv8-R vs Armv8-A. Signed-off-by: Debbie Martin <Debbie.Martin@arm.com>
109 lines
3 KiB
CMake
109 lines
3 KiB
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# Determines what argument to give to -mcpu= based on the
|
|
# KConfig'uration and sets this to GCC_M_CPU
|
|
|
|
if("${ARCH}" STREQUAL "arm")
|
|
if (CONFIG_CPU_CORTEX_M0)
|
|
set(GCC_M_CPU cortex-m0)
|
|
elseif(CONFIG_CPU_CORTEX_M0PLUS)
|
|
set(GCC_M_CPU cortex-m0plus)
|
|
elseif(CONFIG_CPU_CORTEX_M1)
|
|
set(GCC_M_CPU cortex-m1)
|
|
elseif(CONFIG_CPU_CORTEX_M3)
|
|
set(GCC_M_CPU cortex-m3)
|
|
elseif(CONFIG_CPU_CORTEX_M4)
|
|
set(GCC_M_CPU cortex-m4)
|
|
elseif(CONFIG_CPU_CORTEX_M7)
|
|
set(GCC_M_CPU cortex-m7)
|
|
elseif(CONFIG_CPU_CORTEX_M23)
|
|
set(GCC_M_CPU cortex-m23)
|
|
elseif(CONFIG_CPU_CORTEX_M33)
|
|
if (CONFIG_ARMV8_M_DSP)
|
|
set(GCC_M_CPU cortex-m33)
|
|
else()
|
|
set(GCC_M_CPU cortex-m33+nodsp)
|
|
endif()
|
|
elseif(CONFIG_CPU_CORTEX_M55)
|
|
if (CONFIG_ARMV8_1_M_MVEF)
|
|
set(GCC_M_CPU cortex-m55)
|
|
elseif(CONFIG_ARMV8_1_M_MVEI)
|
|
set(GCC_M_CPU cortex-m55+nomve.fp)
|
|
elseif(CONFIG_ARMV8_M_DSP)
|
|
set(GCC_M_CPU cortex-m55+nomve)
|
|
else()
|
|
set(GCC_M_CPU cortex-m55+nodsp)
|
|
endif()
|
|
elseif(CONFIG_CPU_CORTEX_R4)
|
|
if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
|
|
set(GCC_M_CPU cortex-r4f)
|
|
else()
|
|
set(GCC_M_CPU cortex-r4)
|
|
endif()
|
|
elseif(CONFIG_CPU_CORTEX_R5)
|
|
set(GCC_M_CPU cortex-r5)
|
|
if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
|
|
if(NOT CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
|
|
set(GCC_M_CPU ${GCC_M_CPU}+nofp.dp)
|
|
endif()
|
|
else()
|
|
set(GCC_M_CPU ${GCC_M_CPU}+nofp)
|
|
endif()
|
|
elseif(CONFIG_CPU_CORTEX_R7)
|
|
set(GCC_M_CPU cortex-r7)
|
|
if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
|
|
if(NOT CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
|
|
set(GCC_M_CPU ${GCC_M_CPU}+nofp.dp)
|
|
endif()
|
|
else()
|
|
set(GCC_M_CPU ${GCC_M_CPU}+nofp)
|
|
endif()
|
|
elseif(CONFIG_CPU_CORTEX_R52)
|
|
set(GCC_M_CPU cortex-r52)
|
|
if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
|
|
if(NOT CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
|
|
set(GCC_M_CPU ${GCC_M_CPU}+nofp.dp)
|
|
endif()
|
|
endif()
|
|
elseif(CONFIG_CPU_CORTEX_A9)
|
|
set(GCC_M_CPU cortex-a9)
|
|
else()
|
|
message(FATAL_ERROR "Expected CONFIG_CPU_CORTEX_x to be defined")
|
|
endif()
|
|
elseif("${ARCH}" STREQUAL "arm64")
|
|
if(CONFIG_CPU_CORTEX_A53)
|
|
set(GCC_M_CPU cortex-a53)
|
|
elseif(CONFIG_CPU_CORTEX_A55)
|
|
set(GCC_M_CPU cortex-a55)
|
|
elseif(CONFIG_CPU_CORTEX_A76)
|
|
set(GCC_M_CPU cortex-a76)
|
|
elseif(CONFIG_CPU_CORTEX_A76_A55)
|
|
set(GCC_M_CPU cortex-a76)
|
|
set(GCC_M_TUNE cortex-a76.cortex-a55)
|
|
elseif(CONFIG_CPU_CORTEX_A72)
|
|
set(GCC_M_CPU cortex-a72)
|
|
elseif(CONFIG_CPU_CORTEX_R82)
|
|
set(GCC_M_CPU cortex-r82)
|
|
endif()
|
|
elseif("${ARCH}" STREQUAL "arc")
|
|
if(CONFIG_CPU_EM4_FPUS)
|
|
set(GCC_M_CPU em4_fpus)
|
|
elseif(CONFIG_CPU_EM4_DMIPS)
|
|
set(GCC_M_CPU em4_dmips)
|
|
elseif(CONFIG_CPU_EM4_FPUDA)
|
|
set(GCC_M_CPU em4_fpuda)
|
|
elseif(CONFIG_CPU_HS3X)
|
|
set(GCC_M_CPU archs)
|
|
elseif(CONFIG_CPU_HS4X)
|
|
set(GCC_M_CPU hs4x)
|
|
elseif(CONFIG_CPU_HS5X)
|
|
set(GCC_M_CPU hs5x)
|
|
elseif(CONFIG_CPU_HS6X)
|
|
set(GCC_M_CPU hs6x)
|
|
elseif(CONFIG_CPU_EM4)
|
|
set(GCC_M_CPU arcem)
|
|
elseif(CONFIG_CPU_EM6)
|
|
set(GCC_M_CPU arcem)
|
|
endif()
|
|
endif()
|