1# ARM Cortex-A and Cortex-R platform configuration options
2
3# Copyright (c) 2018 Marvell
4# Copyright (c) 2018 Lexmark International, Inc.
5# Copyright (c) 2021 Weidmueller Interface GmbH & Co. KG
6#
7# SPDX-License-Identifier: Apache-2.0
8
9# NOTE: We have the specific core implementations first and outside of the
10# if CPU_AARCH32_CORTEX_A / if CPU_AARCH32_CORTEX_R block so that SoCs can
11# select which core they are using without having to select all the options
12# related to that core. Everything else is captured inside the if
13# CPU_AARCH32_CORTEX_A / if CPU_AARCH32_CORTEX_R blocks so they are not
14# exposed if one selects a different ARM Cortex Family (Cortex-M).
15
16config CPU_CORTEX_A9
17	bool
18	select CPU_AARCH32_CORTEX_A
19	select ARMV7_A
20	help
21	  This option signifies the use of a Cortex-A9 CPU.
22
23if CPU_AARCH32_CORTEX_A
24
25config ARMV7_A
26	bool
27	select ATOMIC_OPERATIONS_BUILTIN
28	select ISA_ARM
29
30config ARMV7_EXCEPTION_STACK_SIZE
31	int "Undefined Instruction and Abort stack size (in bytes)"
32	default 256
33	help
34	  This option specifies the size of the stack used by the undefined
35	  instruction and data abort exception handlers.
36
37config ARMV7_FIQ_STACK_SIZE
38	int "FIQ stack size (in bytes)"
39	default 256
40	help
41	  This option specifies the size of the stack used by the FIQ handler.
42
43config ARMV7_SVC_STACK_SIZE
44	int "SVC stack size (in bytes)"
45	default 512
46	help
47	  This option specifies the size of the stack used by the SVC handler.
48
49config ARMV7_SYS_STACK_SIZE
50	int "SYS stack size (in bytes)"
51	default 1024
52	help
53	  This option specifies the size of the stack used by the system mode.
54
55config RUNTIME_NMI
56	default y
57
58config GEN_ISR_TABLES
59	default y
60
61config GEN_IRQ_VECTOR_TABLE
62	default n
63
64config DCACHE_LINE_SIZE
65	default 32
66
67config ICACHE_LINE_SIZE
68	default 32
69
70endif # CPU_AARCH32_CORTEX_A
71
72config CPU_CORTEX_R4
73	bool
74	select CPU_AARCH32_CORTEX_R
75	select ARMV7_R
76	select ARMV7_R_FP if CPU_HAS_FPU
77	help
78	  This option signifies the use of a Cortex-R4 CPU
79
80config CPU_CORTEX_R5
81	bool
82	select CPU_AARCH32_CORTEX_R
83	select ARMV7_R
84	select ARMV7_R_FP if CPU_HAS_FPU
85	help
86	  This option signifies the use of a Cortex-R5 CPU
87
88config CPU_CORTEX_R7
89	bool
90	select CPU_AARCH32_CORTEX_R
91	select ARMV7_R
92	select ARMV7_R_FP if CPU_HAS_FPU
93	help
94	  This option signifies the use of a Cortex-R7 CPU
95
96config CPU_CORTEX_R52
97	bool
98	select CPU_AARCH32_CORTEX_R
99	select AARCH32_ARMV8_R
100	select CPU_HAS_ICACHE
101	select CPU_HAS_DCACHE
102	select VFP_SP_D16
103	help
104	  This option signifies the use of a Cortex-R52 CPU
105
106if CPU_AARCH32_CORTEX_R
107
108config ARMV7_R
109	bool
110	select ATOMIC_OPERATIONS_BUILTIN
111	select ISA_ARM
112	select ISA_THUMB2
113	help
114	  This option signifies the use of an ARMv7-R processor
115	  implementation.
116
117	  From https://developer.arm.com/products/architecture/cpu-architecture/r-profile:
118	  The Armv7-R architecture implements a traditional Arm architecture with
119	  multiple modes and supports a Protected Memory System Architecture
120	  (PMSA) based on a Memory Protection Unit (MPU). It supports the Arm (32)
121	  and Thumb (T32) instruction sets.
122
123config ARMV7_R_FP
124	bool
125	depends on ARMV7_R
126	help
127	  This option signifies the use of an ARMv7-R processor
128	  implementation supporting the Floating-Point Extension.
129
130config AARCH32_ARMV8_R
131	bool
132	select ATOMIC_OPERATIONS_BUILTIN
133	help
134	  This option signifies the use of an ARMv8-R AArch32 processor
135	  implementation.
136
137	  From https://developer.arm.com/products/architecture/cpu-architecture/r-profile:
138	  The Armv8-R architecture targets at the Real-time profile. It introduces
139	  virtualization at the highest security level while retaining the
140	  Protected Memory System Architecture (PMSA) based on a Memory Protection
141	  Unit (MPU). It supports the A32 and T32 instruction sets.
142
143config ARMV7_EXCEPTION_STACK_SIZE
144	int "Undefined Instruction and Abort stack size (in bytes)"
145	default 256
146	help
147	  This option specifies the size of the stack used by the undefined
148	  instruction and data abort exception handlers.
149
150config ARMV7_FIQ_STACK_SIZE
151	int "FIQ stack size (in bytes)"
152	default 256
153	help
154	  This option specifies the size of the stack used by the FIQ handler.
155
156config ARMV7_SVC_STACK_SIZE
157	int "SVC stack size (in bytes)"
158	default 512
159	help
160	  This option specifies the size of the stack used by the SVC handler.
161
162config ARMV7_SYS_STACK_SIZE
163	int "SYS stack size (in bytes)"
164	default 1024
165	help
166	  This option specifies the size of the stack used by the system mode.
167
168config RUNTIME_NMI
169	default y
170
171config GEN_ISR_TABLES
172	default y
173
174config GEN_IRQ_VECTOR_TABLE
175	default n
176
177config DISABLE_TCM_ECC
178	bool "Disable ECC on TCM"
179	help
180	  This option disables ECC checks on Tightly Coupled Memory.
181
182config DCACHE_LINE_SIZE
183	default 64 if CPU_CORTEX_R52
184	default 32
185
186config ICACHE_LINE_SIZE
187	default 64 if CPU_CORTEX_R52
188	default 32
189
190endif # CPU_AARCH32_CORTEX_R
191