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_R4)
38    if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
39      set(GCC_M_CPU cortex-r4f)
40    else()
41      set(GCC_M_CPU cortex-r4)
42    endif()
43  elseif(CONFIG_CPU_CORTEX_R5)
44    set(GCC_M_CPU cortex-r5)
45    if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
46      if(NOT CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
47        set(GCC_M_CPU ${GCC_M_CPU}+nofp.dp)
48      endif()
49    else()
50      set(GCC_M_CPU ${GCC_M_CPU}+nofp)
51    endif()
52  elseif(CONFIG_CPU_CORTEX_R7)
53    set(GCC_M_CPU cortex-r7)
54    if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
55      if(NOT CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
56        set(GCC_M_CPU ${GCC_M_CPU}+nofp.dp)
57      endif()
58    else()
59      set(GCC_M_CPU ${GCC_M_CPU}+nofp)
60    endif()
61  elseif(CONFIG_CPU_CORTEX_R52)
62    set(GCC_M_CPU cortex-r52)
63    if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
64      if(NOT CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
65        set(GCC_M_CPU ${GCC_M_CPU}+nofp.dp)
66      endif()
67    endif()
68  elseif(CONFIG_CPU_CORTEX_A9)
69    set(GCC_M_CPU cortex-a9)
70  else()
71    message(FATAL_ERROR "Expected CONFIG_CPU_CORTEX_x to be defined")
72  endif()
73elseif("${ARCH}" STREQUAL "arm64")
74  if(CONFIG_CPU_CORTEX_A53)
75    set(GCC_M_CPU cortex-a53)
76  elseif(CONFIG_CPU_CORTEX_A55)
77    set(GCC_M_CPU cortex-a55)
78  elseif(CONFIG_CPU_CORTEX_A76)
79    set(GCC_M_CPU cortex-a76)
80  elseif(CONFIG_CPU_CORTEX_A76_A55)
81    set(GCC_M_CPU cortex-a76)
82    set(GCC_M_TUNE cortex-a76.cortex-a55)
83  elseif(CONFIG_CPU_CORTEX_A72)
84    set(GCC_M_CPU cortex-a72)
85  elseif(CONFIG_CPU_CORTEX_R82)
86    set(GCC_M_ARCH armv8.4-a+nolse)
87  endif()
88elseif("${ARCH}" STREQUAL "arc")
89  if(CONFIG_CPU_EM4_FPUS)
90    set(GCC_M_CPU em4_fpus)
91  elseif(CONFIG_CPU_EM4_DMIPS)
92    set(GCC_M_CPU em4_dmips)
93  elseif(CONFIG_CPU_EM4_FPUDA)
94    set(GCC_M_CPU em4_fpuda)
95  elseif(CONFIG_CPU_HS3X)
96    set(GCC_M_CPU archs)
97  elseif(CONFIG_CPU_HS4X)
98    set(GCC_M_CPU hs4x)
99  elseif(CONFIG_CPU_HS5X)
100    set(GCC_M_CPU hs5x)
101  elseif(CONFIG_CPU_HS6X)
102    set(GCC_M_CPU hs6x)
103  elseif(CONFIG_CPU_EM4)
104    set(GCC_M_CPU arcem)
105  elseif(CONFIG_CPU_EM6)
106    set(GCC_M_CPU arcem)
107  endif()
108endif()
109