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_M52)
28    if    (CONFIG_ARMV8_1_M_MVEF)
29      set(GCC_M_CPU cortex-m52)
30    elseif(CONFIG_ARMV8_1_M_MVEI)
31      set(GCC_M_CPU cortex-m52+nomve.fp)
32    elseif(CONFIG_ARMV8_M_DSP)
33      set(GCC_M_CPU cortex-m52+nomve)
34    else()
35      set(GCC_M_CPU cortex-m52+nodsp)
36    endif()
37  elseif(CONFIG_CPU_CORTEX_M55)
38    if    (CONFIG_ARMV8_1_M_MVEF)
39      set(GCC_M_CPU cortex-m55)
40    elseif(CONFIG_ARMV8_1_M_MVEI)
41      set(GCC_M_CPU cortex-m55+nomve.fp)
42    elseif(CONFIG_ARMV8_M_DSP)
43      set(GCC_M_CPU cortex-m55+nomve)
44    else()
45      set(GCC_M_CPU cortex-m55+nodsp)
46    endif()
47  elseif(CONFIG_CPU_CORTEX_M85)
48    if    (CONFIG_ARMV8_1_M_MVEF)
49      set(GCC_M_CPU cortex-m85)
50    elseif(CONFIG_ARMV8_1_M_MVEI)
51      set(GCC_M_CPU cortex-m85+nomve.fp)
52    elseif(CONFIG_ARMV8_M_DSP)
53      set(GCC_M_CPU cortex-m85+nomve)
54    else()
55      set(GCC_M_CPU cortex-m85+nodsp)
56    endif()
57  elseif(CONFIG_CPU_CORTEX_R4)
58    if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
59      set(GCC_M_CPU cortex-r4f)
60    else()
61      set(GCC_M_CPU cortex-r4)
62    endif()
63  elseif(CONFIG_CPU_CORTEX_R5)
64    set(GCC_M_CPU cortex-r5)
65    if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
66      if(NOT CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
67        set(GCC_M_CPU ${GCC_M_CPU}+nofp.dp)
68      endif()
69    else()
70      set(GCC_M_CPU ${GCC_M_CPU}+nofp)
71    endif()
72  elseif(CONFIG_CPU_CORTEX_R7)
73    set(GCC_M_CPU cortex-r7)
74    if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
75      if(NOT CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
76        set(GCC_M_CPU ${GCC_M_CPU}+nofp.dp)
77      endif()
78    else()
79      set(GCC_M_CPU ${GCC_M_CPU}+nofp)
80    endif()
81  elseif(CONFIG_CPU_CORTEX_R8)
82    set(GCC_M_CPU cortex-r8)
83    if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
84      if(NOT CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
85        set(GCC_M_CPU ${GCC_M_CPU}+nofp.dp)
86      endif()
87    else()
88      set(GCC_M_CPU ${GCC_M_CPU}+nofp)
89    endif()
90  elseif(CONFIG_CPU_CORTEX_R52)
91    set(GCC_M_CPU cortex-r52)
92    if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
93      if(NOT CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
94        set(GCC_M_CPU ${GCC_M_CPU}+nofp.dp)
95      endif()
96    endif()
97  elseif(CONFIG_CPU_CORTEX_A7)
98    set(GCC_M_CPU cortex-a7)
99  elseif(CONFIG_CPU_CORTEX_A9)
100    set(GCC_M_CPU cortex-a9)
101  else()
102    message(FATAL_ERROR "Expected CONFIG_CPU_CORTEX_x to be defined")
103  endif()
104elseif("${ARCH}" STREQUAL "arm64")
105  if(CONFIG_CPU_CORTEX_A53)
106    set(GCC_M_CPU cortex-a53)
107  elseif(CONFIG_CPU_CORTEX_A55)
108    set(GCC_M_CPU cortex-a55)
109  elseif(CONFIG_CPU_CORTEX_A76)
110    set(GCC_M_CPU cortex-a76)
111  elseif(CONFIG_CPU_CORTEX_A76_A55)
112    set(GCC_M_CPU cortex-a76)
113    set(GCC_M_TUNE cortex-a76.cortex-a55)
114  elseif(CONFIG_CPU_CORTEX_A72)
115    set(GCC_M_CPU cortex-a72)
116  elseif(CONFIG_CPU_CORTEX_R82)
117    set(GCC_M_CPU cortex-r82)
118  endif()
119elseif("${ARCH}" STREQUAL "arc")
120  if(CONFIG_CPU_EM4_FPUS)
121    set(GCC_M_CPU em4_fpus)
122  elseif(CONFIG_CPU_EM4_DMIPS)
123    set(GCC_M_CPU em4_dmips)
124  elseif(CONFIG_CPU_EM4_FPUDA)
125    set(GCC_M_CPU em4_fpuda)
126  elseif(CONFIG_CPU_HS3X)
127    set(GCC_M_CPU archs)
128  elseif(CONFIG_CPU_HS4X)
129    set(GCC_M_CPU hs4x)
130  elseif(CONFIG_CPU_HS5X)
131    set(GCC_M_CPU hs5x)
132  elseif(CONFIG_CPU_HS6X)
133    set(GCC_M_CPU hs6x)
134  elseif(CONFIG_CPU_EM4)
135    set(GCC_M_CPU arcem)
136  elseif(CONFIG_CPU_EM6)
137    set(GCC_M_CPU arcem)
138  endif()
139endif()
140