48 lines
1.5 KiB
CMake
48 lines
1.5 KiB
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# Determines what argument to give to -mfpu= based on the
|
|
# KConfig'uration and sets this to GCC_M_FPU
|
|
|
|
if(CONFIG_FPU)
|
|
|
|
if("${ARCH}" STREQUAL "arm")
|
|
if(CONFIG_CPU_AARCH32_CORTEX_R)
|
|
if(CONFIG_CPU_CORTEX_R4 OR CONFIG_CPU_CORTEX_R5) # VFPv3
|
|
if(CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
|
|
set(GCC_M_FPU vfpv3-d16)
|
|
elseif(CONFIG_VFP_FEATURE_SINGLE_PRECISION)
|
|
set(GCC_M_FPU vfpv3xd)
|
|
endif()
|
|
if(CONFIG_VFP_FEATURE_HALF_PRECISION)
|
|
set(GCC_M_FPU ${GCC_M_FPU}-fp16)
|
|
endif()
|
|
elseif(CONFIG_CPU_CORTEX_R52)
|
|
if(CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
|
|
set(GCC_M_FPU neon-fp-armv8)
|
|
elseif(CONFIG_VFP_FEATURE_SINGLE_PRECISION)
|
|
set(GCC_M_FPU fpv5-sp-d16)
|
|
endif()
|
|
endif()
|
|
elseif(CONFIG_CPU_CORTEX_M)
|
|
# Defines a mapping from GCC_M_CPU to FPU
|
|
if(CONFIG_CPU_HAS_FPU_DOUBLE_PRECISION)
|
|
set(PRECISION_TOKEN)
|
|
else()
|
|
set(PRECISION_TOKEN sp-)
|
|
endif()
|
|
|
|
set(FPU_FOR_cortex-m4 fpv4-${PRECISION_TOKEN}d16)
|
|
set(FPU_FOR_cortex-m7 fpv5-${PRECISION_TOKEN}d16)
|
|
set(FPU_FOR_cortex-m33 fpv5-${PRECISION_TOKEN}d16)
|
|
set(FPU_FOR_cortex-m33+nodsp fpv5-${PRECISION_TOKEN}d16)
|
|
set(FPU_FOR_cortex-m55 auto)
|
|
set(FPU_FOR_cortex-m55+nomve.fp auto)
|
|
set(FPU_FOR_cortex-m55+nomve auto)
|
|
set(FPU_FOR_cortex-m55+nodsp auto)
|
|
|
|
set(GCC_M_FPU ${FPU_FOR_${GCC_M_CPU}})
|
|
endif()
|
|
endif()
|
|
|
|
endif() #CONFIG_FPU
|