1# Copyright (c) 2025 IAR Systems AB 2# 3# SPDX-License-Identifier: Apache-2.0 4 5# Determines what argument to give to --fpu= based on the 6# KConfiguration and sets this to ICCARM_FPU 7 8if(CONFIG_FPU) 9 10 # 32-bit 11 if("${ARCH}" STREQUAL "arm") 12 if(CONFIG_CPU_AARCH32_CORTEX_R) 13 if(CONFIG_CPU_CORTEX_R4 OR CONFIG_CPU_CORTEX_R5) # VFPv3 14 if(CONFIG_VFP_FEATURE_DOUBLE_PRECISION) 15 set(ICCARM_FPU VFPv3_D16) 16 elseif(CONFIG_VFP_FEATURE_SINGLE_PRECISION) 17 set(ICCARM_FPU VFPv3-SP) 18 endif() 19 if(CONFIG_VFP_FEATURE_HALF_PRECISION) 20 set(ICCARM_FPU ${ICCARM_FPU}_Fp16) 21 endif() 22 elseif(CONFIG_CPU_CORTEX_R52) 23 if(CONFIG_VFP_FEATURE_DOUBLE_PRECISION) 24 set(ICCARM_FPU VFPv5_D16) 25 elseif(CONFIG_VFP_FEATURE_SINGLE_PRECISION) 26 set(ICCARM_FPU VFPv5-SP) 27 endif() 28 endif() 29 elseif(CONFIG_CPU_CORTEX_M) 30 # Defines a mapping from ICCARM_CPU to FPU 31 if(CONFIG_CPU_HAS_FPU_DOUBLE_PRECISION) 32 set(PRECISION_TOKEN _D16) 33 else() 34 set(PRECISION_TOKEN _SP) 35 endif() 36 37 set(FPU_FOR_Cortex-M4 FPv4${PRECISION_TOKEN}) 38 set(FPU_FOR_Cortex-M7 FPv5${PRECISION_TOKEN}) 39 set(FPU_FOR_Cortex-M33 FPv5${PRECISION_TOKEN}) 40 set(FPU_FOR_Cortex-M33.no_dsp FPv5${PRECISION_TOKEN}) 41 set(FPU_FOR_Cortex-M55 FPv5${PRECISION_TOKEN}) 42 set(FPU_FOR_Cortex-M55.no_mve FPv5${PRECISION_TOKEN}) 43 set(FPU_FOR_Cortex-M55.no_dsp FPv5${PRECISION_TOKEN}) 44 set(FPU_FOR_Cortex-M85 FPv5${PRECISION_TOKEN}) 45 set(FPU_FOR_Cortex-M85.no_mve FPv5${PRECISION_TOKEN}) 46 set(FPU_FOR_Cortex-M85.no_dsp FPv5${PRECISION_TOKEN}) 47 48 set(ICCARM_FPU ${FPU_FOR_${ICCARM_CPU}}) 49 endif() 50 # 64-bit 51 else() 52 set(ICCARM_FPU none) 53 endif() 54 55endif() #CONFIG_FPU 56