1# SPDX-License-Identifier: Apache-2.0
2
3# Determines what argument to give to -mcpu= based on the
4# KConfig'uration and sets this to GCC_M_CPU
5
6if("${ARCH}" STREQUAL "arm")
7  if    (CONFIG_CPU_CORTEX_M0)
8    set(GCC_M_CPU cortex-m0)
9  elseif(CONFIG_CPU_CORTEX_M0PLUS)
10    set(GCC_M_CPU cortex-m0plus)
11  elseif(CONFIG_CPU_CORTEX_M1)
12    set(GCC_M_CPU cortex-m1)
13  elseif(CONFIG_CPU_CORTEX_M3)
14    set(GCC_M_CPU cortex-m3)
15  elseif(CONFIG_CPU_CORTEX_M4)
16    set(GCC_M_CPU cortex-m4)
17  elseif(CONFIG_CPU_CORTEX_M7)
18    set(GCC_M_CPU cortex-m7)
19  elseif(CONFIG_CPU_CORTEX_M23)
20    set(GCC_M_CPU cortex-m23)
21  elseif(CONFIG_CPU_CORTEX_M33)
22    if    (CONFIG_ARMV8_M_DSP)
23      set(GCC_M_CPU cortex-m33)
24    else()
25      set(GCC_M_CPU cortex-m33+nodsp)
26    endif()
27  elseif(CONFIG_CPU_CORTEX_M55)
28    if    (CONFIG_ARMV8_1_M_MVEF)
29      set(GCC_M_CPU cortex-m55)
30    elseif(CONFIG_ARMV8_1_M_MVEI)
31      set(GCC_M_CPU cortex-m55+nomve.fp)
32    elseif(CONFIG_ARMV8_M_DSP)
33      set(GCC_M_CPU cortex-m55+nomve)
34    else()
35      set(GCC_M_CPU cortex-m55+nodsp)
36    endif()
37  elseif(CONFIG_CPU_CORTEX_M85)
38    if    (CONFIG_ARMV8_1_M_MVEF)
39      set(GCC_M_CPU cortex-m85)
40    elseif(CONFIG_ARMV8_1_M_MVEI)
41      set(GCC_M_CPU cortex-m85+nomve.fp)
42    elseif(CONFIG_ARMV8_M_DSP)
43      set(GCC_M_CPU cortex-m85+nomve)
44    else()
45      set(GCC_M_CPU cortex-m85+nodsp)
46    endif()
47  elseif(CONFIG_CPU_CORTEX_R4)
48    if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
49      set(GCC_M_CPU cortex-r4f)
50    else()
51      set(GCC_M_CPU cortex-r4)
52    endif()
53  elseif(CONFIG_CPU_CORTEX_R5)
54    set(GCC_M_CPU cortex-r5)
55    if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
56      if(NOT CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
57        set(GCC_M_CPU ${GCC_M_CPU}+nofp.dp)
58      endif()
59    else()
60      set(GCC_M_CPU ${GCC_M_CPU}+nofp)
61    endif()
62  elseif(CONFIG_CPU_CORTEX_R7)
63    set(GCC_M_CPU cortex-r7)
64    if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
65      if(NOT CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
66        set(GCC_M_CPU ${GCC_M_CPU}+nofp.dp)
67      endif()
68    else()
69      set(GCC_M_CPU ${GCC_M_CPU}+nofp)
70    endif()
71  elseif(CONFIG_CPU_CORTEX_R52)
72    set(GCC_M_CPU cortex-r52)
73    if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
74      if(NOT CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
75        set(GCC_M_CPU ${GCC_M_CPU}+nofp.dp)
76      endif()
77    endif()
78  elseif(CONFIG_CPU_CORTEX_A9)
79    set(GCC_M_CPU cortex-a9)
80  else()
81    message(FATAL_ERROR "Expected CONFIG_CPU_CORTEX_x to be defined")
82  endif()
83elseif("${ARCH}" STREQUAL "arm64")
84  if(CONFIG_CPU_CORTEX_A53)
85    set(GCC_M_CPU cortex-a53)
86  elseif(CONFIG_CPU_CORTEX_A55)
87    set(GCC_M_CPU cortex-a55)
88  elseif(CONFIG_CPU_CORTEX_A76)
89    set(GCC_M_CPU cortex-a76)
90  elseif(CONFIG_CPU_CORTEX_A76_A55)
91    set(GCC_M_CPU cortex-a76)
92    set(GCC_M_TUNE cortex-a76.cortex-a55)
93  elseif(CONFIG_CPU_CORTEX_A72)
94    set(GCC_M_CPU cortex-a72)
95  elseif(CONFIG_CPU_CORTEX_R82)
96    set(GCC_M_CPU cortex-r82)
97  endif()
98elseif("${ARCH}" STREQUAL "arc")
99  if(CONFIG_CPU_EM4_FPUS)
100    set(GCC_M_CPU em4_fpus)
101  elseif(CONFIG_CPU_EM4_DMIPS)
102    set(GCC_M_CPU em4_dmips)
103  elseif(CONFIG_CPU_EM4_FPUDA)
104    set(GCC_M_CPU em4_fpuda)
105  elseif(CONFIG_CPU_HS3X)
106    set(GCC_M_CPU archs)
107  elseif(CONFIG_CPU_HS4X)
108    set(GCC_M_CPU hs4x)
109  elseif(CONFIG_CPU_HS5X)
110    set(GCC_M_CPU hs5x)
111  elseif(CONFIG_CPU_HS6X)
112    set(GCC_M_CPU hs6x)
113  elseif(CONFIG_CPU_EM4)
114    set(GCC_M_CPU arcem)
115  elseif(CONFIG_CPU_EM6)
116    set(GCC_M_CPU arcem)
117  endif()
118endif()
119