1config CREATE_ARCH_SYMLINK
2	bool
3
4config HAVE_ARCH_IOREMAP
5	bool
6
7config NEEDS_MANUAL_RELOC
8	bool
9
10config LINKER_LIST_ALIGN
11	int
12	default 32 if SANDBOX
13	default 8 if ARM64 || X86
14	default 4
15	help
16	  Force the each linker list to be aligned to this boundary. This
17	  is required if ll_entry_get() is used, since otherwise the linker
18	  may add padding into the table, thus breaking it.
19	  See linker_lists.rst for full details.
20
21choice
22	prompt "Architecture select"
23	default SANDBOX
24
25config ARC
26	bool "ARC architecture"
27	select ARC_TIMER
28	select CLK
29	select DM
30	select HAVE_PRIVATE_LIBGCC
31	select SUPPORT_OF_CONTROL
32	select TIMER
33
34config ARM
35	bool "ARM architecture"
36	select ARCH_SUPPORTS_LTO
37	select CREATE_ARCH_SYMLINK
38	select HAVE_PRIVATE_LIBGCC if !ARM64
39	select SUPPORT_OF_CONTROL
40
41config M68K
42	bool "M68000 architecture"
43	select HAVE_PRIVATE_LIBGCC
44	select NEEDS_MANUAL_RELOC
45	select SYS_BOOT_GET_CMDLINE
46	select SYS_BOOT_GET_KBD
47	select SUPPORT_OF_CONTROL
48
49config MICROBLAZE
50	bool "MicroBlaze architecture"
51	select NEEDS_MANUAL_RELOC
52	select SUPPORT_OF_CONTROL
53	imply CMD_IRQ
54
55config MIPS
56	bool "MIPS architecture"
57	select HAVE_ARCH_IOREMAP
58	select HAVE_PRIVATE_LIBGCC
59	select SUPPORT_OF_CONTROL
60
61config NDS32
62	bool "NDS32 architecture"
63	select SUPPORT_OF_CONTROL
64
65config NIOS2
66	bool "Nios II architecture"
67	select CPU
68	select DM
69	select OF_CONTROL
70	select SUPPORT_OF_CONTROL
71	imply CMD_DM
72
73config PPC
74	bool "PowerPC architecture"
75	select HAVE_PRIVATE_LIBGCC
76	select SUPPORT_OF_CONTROL
77	select SYS_BOOT_GET_CMDLINE
78	select SYS_BOOT_GET_KBD
79
80config RISCV
81	bool "RISC-V architecture"
82	select CREATE_ARCH_SYMLINK
83	select SUPPORT_OF_CONTROL
84	select OF_CONTROL
85	select DM
86	imply DM_SERIAL
87	imply DM_ETH
88	imply DM_MMC
89	imply DM_SPI
90	imply DM_SPI_FLASH
91	imply BLK
92	imply CLK
93	imply MTD
94	imply TIMER
95	imply CMD_DM
96	imply SPL_DM
97	imply SPL_OF_CONTROL
98	imply SPL_LIBCOMMON_SUPPORT
99	imply SPL_LIBGENERIC_SUPPORT
100	imply SPL_SERIAL_SUPPORT
101	imply SPL_TIMER
102
103config SANDBOX
104	bool "Sandbox"
105	select ARCH_SUPPORTS_LTO
106	select BOARD_LATE_INIT
107	select BZIP2
108	select CMD_POWEROFF
109	select DM
110	select DM_GPIO
111	select DM_I2C
112	select DM_KEYBOARD
113	select DM_MMC
114	select DM_SERIAL
115	select DM_SPI
116	select DM_SPI_FLASH
117	select GZIP_COMPRESSED
118	select HAVE_BLOCK_DEVICE
119	select LZO
120	select OF_BOARD_SETUP
121	select PCI_ENDPOINT
122	select SPI
123	select SUPPORT_OF_CONTROL
124	select SYSRESET_CMD_POWEROFF
125	select IRQ
126	select SUPPORT_EXTENSION_SCAN
127	imply BITREVERSE
128	select BLOBLIST
129	imply LTO
130	imply CMD_DM
131	imply CMD_EXCEPTION
132	imply CMD_GETTIME
133	imply CMD_HASH
134	imply CMD_IO
135	imply CMD_IOTRACE
136	imply CMD_LZMADEC
137	imply CMD_SATA
138	imply CMD_SF
139	imply CMD_SF_TEST
140	imply CRC32_VERIFY
141	imply FAT_WRITE
142	imply FIRMWARE
143	imply HASH_VERIFY
144	imply LZMA
145	imply SCSI
146	imply TEE
147	imply AVB_VERIFY
148	imply LIBAVB
149	imply CMD_AVB
150	imply SCP03
151	imply CMD_SCP03
152	imply UDP_FUNCTION_FASTBOOT
153	imply VIRTIO_MMIO
154	imply VIRTIO_PCI
155	imply VIRTIO_SANDBOX
156	imply VIRTIO_BLK
157	imply VIRTIO_NET
158	imply DM_SOUND
159	imply PCI_SANDBOX_EP
160	imply PCH
161	imply PHYLIB
162	imply DM_MDIO
163	imply DM_MDIO_MUX
164	imply ACPI_PMC
165	imply ACPI_PMC_SANDBOX
166	imply CMD_PMC
167	imply CMD_CLONE
168	imply SILENT_CONSOLE
169	imply BOOTARGS_SUBST
170	imply PHY_FIXED
171	imply DM_DSA
172	imply CMD_EXTENSION
173
174config SH
175	bool "SuperH architecture"
176	select HAVE_PRIVATE_LIBGCC
177	select SUPPORT_OF_CONTROL
178
179config X86
180	bool "x86 architecture"
181	select SUPPORT_SPL
182	select SUPPORT_TPL
183	select CREATE_ARCH_SYMLINK
184	select DM
185	select DM_PCI
186	select HAVE_ARCH_IOMAP
187	select HAVE_PRIVATE_LIBGCC
188	select OF_CONTROL
189	select PCI
190	select SUPPORT_OF_CONTROL
191	select TIMER
192	select USE_PRIVATE_LIBGCC
193	select X86_TSC_TIMER
194	select IRQ
195	imply HAS_ROM if X86_RESET_VECTOR
196	imply BLK
197	imply CMD_DM
198	imply CMD_FPGA_LOADMK
199	imply CMD_GETTIME
200	imply CMD_IO
201	imply CMD_IRQ
202	imply CMD_PCI
203	imply CMD_SF
204	imply CMD_SF_TEST
205	imply CMD_ZBOOT
206	imply DM_ETH
207	imply DM_GPIO
208	imply DM_KEYBOARD
209	imply DM_MMC
210	imply DM_RTC
211	imply DM_SCSI
212	imply DM_SERIAL
213	imply DM_SPI
214	imply DM_SPI_FLASH
215	imply DM_USB
216	imply DM_VIDEO
217	imply SYSRESET
218	imply SPL_SYSRESET
219	imply SYSRESET_X86
220	imply USB_ETHER_ASIX
221	imply USB_ETHER_SMSC95XX
222	imply USB_HOST_ETHER
223	imply PCH
224	imply RTC_MC146818
225	imply ACPIGEN if !QEMU
226	imply SYSINFO if GENERATE_SMBIOS_TABLE
227	imply SYSINFO_SMBIOS if GENERATE_SMBIOS_TABLE
228
229	# Thing to enable for when SPL/TPL are enabled: SPL
230	imply SPL_DM
231	imply SPL_OF_LIBFDT
232	imply SPL_DRIVERS_MISC_SUPPORT
233	imply SPL_GPIO_SUPPORT
234	imply SPL_PINCTRL
235	imply SPL_LIBCOMMON_SUPPORT
236	imply SPL_LIBGENERIC_SUPPORT
237	imply SPL_SERIAL_SUPPORT
238	imply SPL_SPI_FLASH_SUPPORT
239	imply SPL_SPI_SUPPORT
240	imply SPL_OF_CONTROL
241	imply SPL_TIMER
242	imply SPL_REGMAP
243	imply SPL_SYSCON
244	# TPL
245	imply TPL_DM
246	imply TPL_DRIVERS_MISC_SUPPORT
247	imply TPL_GPIO_SUPPORT
248	imply TPL_PINCTRL
249	imply TPL_LIBCOMMON_SUPPORT
250	imply TPL_LIBGENERIC_SUPPORT
251	imply TPL_SERIAL_SUPPORT
252	imply TPL_OF_CONTROL
253	imply TPL_TIMER
254	imply TPL_REGMAP
255	imply TPL_SYSCON
256
257config XTENSA
258	bool "Xtensa architecture"
259	select CREATE_ARCH_SYMLINK
260	select SUPPORT_OF_CONTROL
261
262endchoice
263
264config SYS_ARCH
265	string
266	help
267	  This option should contain the architecture name to build the
268	  appropriate arch/<CONFIG_SYS_ARCH> directory.
269	  All the architectures should specify this option correctly.
270
271config SYS_CPU
272	string
273	help
274	  This option should contain the CPU name to build the correct
275	  arch/<CONFIG_SYS_ARCH>/cpu/<CONFIG_SYS_CPU> directory.
276
277	  This is optional.  For those targets without the CPU directory,
278	  leave this option empty.
279
280config SYS_SOC
281	string
282	help
283	  This option should contain the SoC name to build the directory
284	  arch/<CONFIG_SYS_ARCH>/cpu/<CONFIG_SYS_CPU>/<CONFIG_SYS_SOC>.
285
286	  This is optional.  For those targets without the SoC directory,
287	  leave this option empty.
288
289config SYS_VENDOR
290	string
291	help
292	  This option should contain the vendor name of the target board.
293	  If it is set and
294	  board/<CONFIG_SYS_VENDOR>/common/Makefile exists, the vendor common
295	  directory is compiled.
296	  If CONFIG_SYS_BOARD is also set, the sources under
297	  board/<CONFIG_SYS_VENDOR>/<CONFIG_SYS_BOARD> directory are compiled.
298
299	  This is optional.  For those targets without the vendor directory,
300	  leave this option empty.
301
302config SYS_BOARD
303	string
304	help
305	  This option should contain the name of the target board.
306	  If it is set, either board/<CONFIG_SYS_VENDOR>/<CONFIG_SYS_BOARD>
307	  or board/<CONFIG_SYS_BOARD> directory is compiled depending on
308	  whether CONFIG_SYS_VENDOR is set or not.
309
310	  This is optional.  For those targets without the board directory,
311	  leave this option empty.
312
313config SYS_CONFIG_NAME
314	string
315	help
316	  This option should contain the base name of board header file.
317	  The header file include/configs/<CONFIG_SYS_CONFIG_NAME>.h
318	  should be included from include/config.h.
319
320config SYS_DISABLE_DCACHE_OPS
321	bool
322	help
323	 This option disables dcache flush and dcache invalidation
324	 operations. For example, on coherent systems where cache
325	 operatios are not required, enable this option to avoid them.
326	 Note that, its up to the individual architectures to implement
327	 this functionality.
328
329source "arch/arc/Kconfig"
330source "arch/arm/Kconfig"
331source "arch/m68k/Kconfig"
332source "arch/microblaze/Kconfig"
333source "arch/mips/Kconfig"
334source "arch/nds32/Kconfig"
335source "arch/nios2/Kconfig"
336source "arch/powerpc/Kconfig"
337source "arch/sandbox/Kconfig"
338source "arch/sh/Kconfig"
339source "arch/x86/Kconfig"
340source "arch/xtensa/Kconfig"
341source "arch/riscv/Kconfig"
342