• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# ARM Architecture
2
3#
4# ARM has 32-bit(Aarch32) and 64-bit(Aarch64) implementations
5#
6config ARCH_ARM_AARCH32
7    bool
8    select ARCH_ARM
9    help
10      32-bit ARM architecture implementations, Except the M-profile.
11      It is not limited to ARMv7-A but also ARMv7-R, ARMv8-A 32-bit and etc.
12
13#
14# Architecture Versions
15#
16config ARCH_ARM_V7M
17    bool
18
19config ARCH_ARM_V8M
20    bool
21
22config ARCH_ARM_V5TE
23    bool
24
25config ARCH_ARM_VER
26    string
27    default "armv7-m" if ARCH_ARM_V7M
28    default "armv8-m" if ARCH_ARM_V8M
29    default "armv5te" if ARCH_ARM_V5TE
30
31#
32# VFP Hardware
33#
34choice
35    prompt "Choose FPU type"
36    depends on !ARCH_FPU_DISABLE
37
38    choice
39        prompt "Choose FPU version"
40        default ARCH_FPU_VFP_V4
41        depends on !ARCH_FPU_DISABLE
42        help
43            Choose FPU version.
44
45    config ARCH_FPU_VFP_V3
46        bool "VFP_V3"
47        help
48        An optional extension to the Arm, Thumb, and ThumbEE instruction sets in the ARMv7-A and ARMv7-R profiles.
49        VFPv3U is a variant of VFPv3 that supports the trapping of floating-point exceptions to support code.
50
51    config ARCH_FPU_VFP_V4
52        bool "VFP_V4"
53        help
54        An optional extension to the Arm, Thumb, and ThumbEE instruction sets in the ARMv7-A and ARMv7-R profiles.
55        VFPv4U is a variant of VFPv4 that supports the trapping of floating-point exceptions to support code.
56        VFPv4 and VFPv4U add both the Half-precision Extension and the fused multiply-add instructions to the features of VFPv3.
57    endchoice
58
59    choice
60        prompt "Choose num of FPU doubleword registers"
61        default ARCH_FPU_VFP_D32
62        depends on !ARCH_FPU_DISABLE
63        help
64            Choose num of FPU doubleword registers.
65
66    config ARCH_FPU_VFP_D16
67        bool "FPU_VFP_D16"
68        depends on ARCH_ARM_AARCH32
69        help
70        VPU implemented with 16 doubleword registers (16 x 64-bit).
71
72    config ARCH_FPU_VFP_D32
73        bool "FPU_VFP_D32"
74        depends on ARCH_ARM_AARCH32
75        help
76        VPU implemented with 32 doubleword registers (32 x 64-bit).
77    endchoice
78endchoice
79config ARCH_FPU
80    string
81    default "vfpv3"       if ARCH_FPU_VFP_V3 && ARCH_FPU_VFP_D32 && !COMPILER_ICCARM
82    default "vfpv3-d16"   if ARCH_FPU_VFP_V3 && ARCH_FPU_VFP_D16 && !COMPILER_ICCARM
83    default "vfpv4"       if ARCH_FPU_VFP_V4 && ARCH_FPU_VFP_D32 && !COMPILER_ICCARM
84    default "vfpv4-d16"   if ARCH_FPU_VFP_V4 && ARCH_FPU_VFP_D16 && !COMPILER_ICCARM
85    default "VFPv3"       if ARCH_FPU_VFP_V3 && ARCH_FPU_VFP_D32 && COMPILER_ICCARM
86    default "VFPv3_D16"   if ARCH_FPU_VFP_V3 && ARCH_FPU_VFP_D16 && COMPILER_ICCARM
87    default "VFPv4"       if ARCH_FPU_VFP_V4 && ARCH_FPU_VFP_D32 && COMPILER_ICCARM
88    default "VFPv4_D16"   if ARCH_FPU_VFP_V4 && ARCH_FPU_VFP_D16 && COMPILER_ICCARM
89
90#
91# Supported Processor Cores
92#
93config ARCH_CORTEX_M3
94    bool
95    select ARCH_ARM_V7M
96    select ARCH_ARM_AARCH32
97
98config ARCH_CORTEX_M4
99    bool
100    select ARCH_ARM_V7M
101    select ARCH_ARM_AARCH32
102
103config ARCH_CORTEX_M7
104    bool
105    select ARCH_ARM_V7M
106    select ARCH_ARM_AARCH32
107
108config ARCH_CORTEX_M33
109    bool
110    select ARCH_ARM_V8M
111    select ARCH_ARM_AARCH32
112
113config ARCH_CORTEX_M55
114    bool
115    select ARCH_ARM_V8M
116    select ARCH_ARM_AARCH32
117
118config ARCH_ARM9
119    bool
120    select ARCH_ARM_V5TE
121    select ARCH_ARM_AARCH32
122
123config ARCH_CPU
124    string
125    default "cortex-m3" if ARCH_CORTEX_M3 && !COMPILER_ICCARM
126    default "cortex-m4" if ARCH_CORTEX_M4 && !COMPILER_ICCARM
127    default "cortex-m7" if ARCH_CORTEX_M7 && !COMPILER_ICCARM
128    default "cortex-m33" if ARCH_CORTEX_M33 && !COMPILER_ICCARM
129    default "cortex-m55" if ARCH_CORTEX_M55 && !COMPILER_ICCARM
130    default "Cortex-M3" if ARCH_CORTEX_M3 && COMPILER_ICCARM
131    default "Cortex-M4" if ARCH_CORTEX_M4 && COMPILER_ICCARM
132    default "Cortex-M7" if ARCH_CORTEX_M7 && COMPILER_ICCARM
133    default "Cortex-M33" if ARCH_CORTEX_M33 && COMPILER_ICCARM
134    default "Cortex-M55" if ARCH_CORTEX_M55 && COMPILER_ICCARM
135    default "arm9" if ARCH_ARM9
136