1config PPC64
2	bool "64-bit kernel"
3	default n
4	select HAVE_VIRT_CPU_ACCOUNTING
5	select ZLIB_DEFLATE
6	help
7	  This option selects whether a 32-bit or a 64-bit kernel
8	  will be built.
9
10menu "Processor support"
11choice
12	prompt "Processor Type"
13	depends on PPC32
14	help
15	  There are five families of 32 bit PowerPC chips supported.
16	  The most common ones are the desktop and server CPUs (601, 603,
17	  604, 740, 750, 74xx) CPUs from Freescale and IBM, with their
18	  embedded 512x/52xx/82xx/83xx/86xx counterparts.
19	  The other embedded parts, namely 4xx, 8xx, e200 (55xx) and e500
20	  (85xx) each form a family of their own that is not compatible
21	  with the others.
22
23	  If unsure, select 52xx/6xx/7xx/74xx/82xx/83xx/86xx.
24
25config PPC_BOOK3S_32
26	bool "512x/52xx/6xx/7xx/74xx/82xx/83xx/86xx"
27	select PPC_FPU
28
29config PPC_85xx
30	bool "Freescale 85xx"
31	select E500
32
33config PPC_8xx
34	bool "Freescale 8xx"
35	select FSL_SOC
36	select 8xx
37	select PPC_LIB_RHEAP
38
39config 40x
40	bool "AMCC 40x"
41	select PPC_DCR_NATIVE
42	select PPC_UDBG_16550
43	select 4xx_SOC
44	select PPC_PCI_CHOICE
45
46config 44x
47	bool "AMCC 44x, 46x or 47x"
48	select PPC_DCR_NATIVE
49	select PPC_UDBG_16550
50	select 4xx_SOC
51	select PPC_PCI_CHOICE
52	select PHYS_64BIT
53
54config E200
55	bool "Freescale e200"
56
57endchoice
58
59choice
60	prompt "Processor Type"
61	depends on PPC64
62	help
63	  There are two families of 64 bit PowerPC chips supported.
64	  The most common ones are the desktop and server CPUs
65	  (POWER4, POWER5, 970, POWER5+, POWER6, POWER7, POWER8 ...)
66
67	  The other are the "embedded" processors compliant with the
68	  "Book 3E" variant of the architecture
69
70config PPC_BOOK3S_64
71	bool "Server processors"
72	select PPC_FPU
73	select PPC_HAVE_PMU_SUPPORT
74	select SYS_SUPPORTS_HUGETLBFS
75	select HAVE_ARCH_TRANSPARENT_HUGEPAGE if PPC_64K_PAGES
76	select ARCH_SUPPORTS_NUMA_BALANCING
77	select IRQ_WORK
78
79config PPC_BOOK3E_64
80	bool "Embedded processors"
81	select PPC_FPU # Make it a choice ?
82	select PPC_SMP_MUXED_IPI
83	select PPC_DOORBELL
84
85endchoice
86
87choice
88	prompt "CPU selection"
89	depends on PPC64
90	default GENERIC_CPU
91	help
92	  This will create a kernel which is optimised for a particular CPU.
93	  The resulting kernel may not run on other CPUs, so use this with care.
94
95	  If unsure, select Generic.
96
97config GENERIC_CPU
98	bool "Generic"
99	depends on !CPU_LITTLE_ENDIAN
100
101config CELL_CPU
102	bool "Cell Broadband Engine"
103	depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
104
105config POWER4_CPU
106	bool "POWER4"
107	depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
108
109config POWER5_CPU
110	bool "POWER5"
111	depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
112
113config POWER6_CPU
114	bool "POWER6"
115	depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN
116
117config POWER7_CPU
118	bool "POWER7"
119	depends on PPC_BOOK3S_64
120	select ARCH_HAS_FAST_MULTIPLIER
121
122config POWER8_CPU
123	bool "POWER8"
124	depends on PPC_BOOK3S_64
125	select ARCH_HAS_FAST_MULTIPLIER
126
127config E5500_CPU
128	bool "Freescale e5500"
129	depends on E500
130
131config E6500_CPU
132	bool "Freescale e6500"
133	depends on E500
134
135endchoice
136
137config PPC_BOOK3S
138	def_bool y
139	depends on PPC_BOOK3S_32 || PPC_BOOK3S_64
140
141config PPC_BOOK3E
142	def_bool y
143	depends on PPC_BOOK3E_64
144
145config 6xx
146	def_bool y
147	depends on PPC32 && PPC_BOOK3S
148	select PPC_HAVE_PMU_SUPPORT
149
150config TUNE_CELL
151	bool "Optimize for Cell Broadband Engine"
152	depends on PPC64 && PPC_BOOK3S
153	help
154	  Cause the compiler to optimize for the PPE of the Cell Broadband
155	  Engine. This will make the code run considerably faster on Cell
156	  but somewhat slower on other machines. This option only changes
157	  the scheduling of instructions, not the selection of instructions
158	  itself, so the resulting kernel will keep running on all other
159	  machines.
160
161# this is temp to handle compat with arch=ppc
162config 8xx
163	bool
164
165config E500
166	select FSL_EMB_PERFMON
167	select PPC_FSL_BOOK3E
168	bool
169
170config PPC_E500MC
171	bool "e500mc Support"
172	select PPC_FPU
173	select COMMON_CLK
174	depends on E500
175	help
176	  This must be enabled for running on e500mc (and derivatives
177	  such as e5500/e6500), and must be disabled for running on
178	  e500v1 or e500v2.
179
180config PPC_FPU
181	bool
182	default y if PPC64
183
184config FSL_EMB_PERFMON
185	bool "Freescale Embedded Perfmon"
186	depends on E500 || PPC_83xx
187	help
188	  This is the Performance Monitor support found on the e500 core
189	  and some e300 cores (c3 and c4).  Select this only if your
190	  core supports the Embedded Performance Monitor APU
191
192config FSL_EMB_PERF_EVENT
193	bool
194	depends on FSL_EMB_PERFMON && PERF_EVENTS && !PPC_PERF_CTRS
195	default y
196
197config FSL_EMB_PERF_EVENT_E500
198	bool
199	depends on FSL_EMB_PERF_EVENT && E500
200	default y
201
202config 4xx
203	bool
204	depends on 40x || 44x
205	default y
206
207config BOOKE
208	bool
209	depends on E200 || E500 || 44x || PPC_BOOK3E
210	default y
211
212config FSL_BOOKE
213	bool
214	depends on (E200 || E500) && PPC32
215	default y
216
217# this is for common code between PPC32 & PPC64 FSL BOOKE
218config PPC_FSL_BOOK3E
219	bool
220	select FSL_EMB_PERFMON
221	select PPC_SMP_MUXED_IPI
222	select SYS_SUPPORTS_HUGETLBFS if PHYS_64BIT || PPC64
223	select PPC_DOORBELL
224	default y if FSL_BOOKE
225
226config PTE_64BIT
227	bool
228	depends on 44x || E500 || PPC_86xx
229	default y if PHYS_64BIT
230
231config PHYS_64BIT
232	bool 'Large physical address support' if E500 || PPC_86xx
233	depends on (44x || E500 || PPC_86xx) && !PPC_83xx && !PPC_82xx
234	---help---
235	  This option enables kernel support for larger than 32-bit physical
236	  addresses.  This feature may not be available on all cores.
237
238	  If you have more than 3.5GB of RAM or so, you also need to enable
239	  SWIOTLB under Kernel Options for this to work.  The actual number
240	  is platform-dependent.
241
242	  If in doubt, say N here.
243
244config ALTIVEC
245	bool "AltiVec Support"
246	depends on 6xx || PPC_BOOK3S_64 || (PPC_E500MC && PPC64)
247	---help---
248	  This option enables kernel support for the Altivec extensions to the
249	  PowerPC processor. The kernel currently supports saving and restoring
250	  altivec registers, and turning on the 'altivec enable' bit so user
251	  processes can execute altivec instructions.
252
253	  This option is only usefully if you have a processor that supports
254	  altivec (G4, otherwise known as 74xx series), but does not have
255	  any affect on a non-altivec cpu (it does, however add code to the
256	  kernel).
257
258	  If in doubt, say Y here.
259
260config VSX
261	bool "VSX Support"
262	depends on PPC_BOOK3S_64 && ALTIVEC && PPC_FPU
263	---help---
264
265	  This option enables kernel support for the Vector Scaler extensions
266	  to the PowerPC processor. The kernel currently supports saving and
267	  restoring VSX registers, and turning on the 'VSX enable' bit so user
268	  processes can execute VSX instructions.
269
270	  This option is only useful if you have a processor that supports
271	  VSX (P7 and above), but does not have any affect on a non-VSX
272	  CPUs (it does, however add code to the kernel).
273
274	  If in doubt, say Y here.
275
276config PPC_ICSWX
277	bool "Support for PowerPC icswx coprocessor instruction"
278	depends on PPC_BOOK3S_64
279	default n
280	---help---
281
282	  This option enables kernel support for the PowerPC Initiate
283	  Coprocessor Store Word (icswx) coprocessor instruction on POWER7
284	  or newer processors.
285
286	  This option is only useful if you have a processor that supports
287	  the icswx coprocessor instruction. It does not have any effect
288	  on processors without the icswx coprocessor instruction.
289
290	  This option slightly increases kernel memory usage.
291
292	  If in doubt, say N here.
293
294config PPC_ICSWX_PID
295	bool "icswx requires direct PID management"
296	depends on PPC_ICSWX
297	default y
298	---help---
299	  The PID register in server is used explicitly for ICSWX.  In
300	  embedded systems PID management is done by the system.
301
302config PPC_ICSWX_USE_SIGILL
303	bool "Should a bad CT cause a SIGILL?"
304	depends on PPC_ICSWX
305	default n
306	---help---
307	  Should a bad CT used for "non-record form ICSWX" cause an
308	  illegal instruction signal or should it be silent as
309	  architected.
310
311	  If in doubt, say N here.
312
313config SPE_POSSIBLE
314	def_bool y
315	depends on E200 || (E500 && !PPC_E500MC)
316
317config SPE
318	bool "SPE Support"
319	depends on SPE_POSSIBLE
320	default y
321	---help---
322	  This option enables kernel support for the Signal Processing
323	  Extensions (SPE) to the PowerPC processor. The kernel currently
324	  supports saving and restoring SPE registers, and turning on the
325	  'spe enable' bit so user processes can execute SPE instructions.
326
327	  This option is only useful if you have a processor that supports
328	  SPE (e500, otherwise known as 85xx series), but does not have any
329	  effect on a non-spe cpu (it does, however add code to the kernel).
330
331	  If in doubt, say Y here.
332
333config PPC_STD_MMU
334	def_bool y
335	depends on PPC_BOOK3S
336
337config PPC_STD_MMU_32
338	def_bool y
339	depends on PPC_STD_MMU && PPC32
340
341config PPC_STD_MMU_64
342	def_bool y
343	depends on PPC_STD_MMU && PPC64
344
345config PPC_MMU_NOHASH
346	def_bool y
347	depends on !PPC_STD_MMU
348
349config PPC_BOOK3E_MMU
350	def_bool y
351	depends on FSL_BOOKE || PPC_BOOK3E
352
353config PPC_MM_SLICES
354	bool
355	default y if (!PPC_FSL_BOOK3E && PPC64 && HUGETLB_PAGE) || (PPC_STD_MMU_64 && PPC_64K_PAGES)
356	default n
357
358config PPC_HAVE_PMU_SUPPORT
359       bool
360
361config PPC_PERF_CTRS
362       def_bool y
363       depends on PERF_EVENTS && PPC_HAVE_PMU_SUPPORT
364       help
365         This enables the powerpc-specific perf_event back-end.
366
367config SMP
368	depends on PPC_BOOK3S || PPC_BOOK3E || FSL_BOOKE || PPC_47x
369	bool "Symmetric multi-processing support"
370	---help---
371	  This enables support for systems with more than one CPU. If you have
372	  a system with only one CPU, say N. If you have a system with more
373	  than one CPU, say Y.  Note that the kernel does not currently
374	  support SMP machines with 603/603e/603ev or PPC750 ("G3") processors
375	  since they have inadequate hardware support for multiprocessor
376	  operation.
377
378	  If you say N here, the kernel will run on single and multiprocessor
379	  machines, but will use only one CPU of a multiprocessor machine. If
380	  you say Y here, the kernel will run on single-processor machines.
381	  On a single-processor machine, the kernel will run faster if you say
382	  N here.
383
384	  If you don't know what to do here, say N.
385
386config NR_CPUS
387	int "Maximum number of CPUs (2-8192)"
388	range 2 8192
389	depends on SMP
390	default "32" if PPC64
391	default "4"
392
393config NOT_COHERENT_CACHE
394	bool
395	depends on 4xx || 8xx || E200 || PPC_MPC512x || GAMECUBE_COMMON
396	default n if PPC_47x
397	default y
398
399config CHECK_CACHE_COHERENCY
400	bool
401
402config PPC_DOORBELL
403	bool
404	default n
405
406endmenu
407
408choice
409	prompt "Endianness selection"
410	default CPU_BIG_ENDIAN
411	help
412	  This option selects whether a big endian or little endian kernel will
413	  be built.
414
415config CPU_BIG_ENDIAN
416	bool "Build big endian kernel"
417	help
418	  Build a big endian kernel.
419
420	  If unsure, select this option.
421
422config CPU_LITTLE_ENDIAN
423	bool "Build little endian kernel"
424	select PPC64_BOOT_WRAPPER
425	help
426	  Build a little endian kernel.
427
428	  Note that if cross compiling a little endian kernel,
429	  CROSS_COMPILE must point to a toolchain capable of targeting
430	  little endian powerpc.
431
432endchoice
433
434config PPC64_BOOT_WRAPPER
435	def_bool n
436	depends on CPU_LITTLE_ENDIAN
437