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