Commit | Line | Data |
---|---|---|
b2441318 | 1 | # SPDX-License-Identifier: GPL-2.0 |
af1725d2 CL |
2 | config PPC32 |
3 | bool | |
4 | default y if !PPC64 | |
5 | ||
a0ae9c7c AB |
6 | config PPC64 |
7 | bool "64-bit kernel" | |
78989f0a | 8 | select ZLIB_DEFLATE |
a0ae9c7c AB |
9 | help |
10 | This option selects whether a 32-bit or a 64-bit kernel | |
11 | will be built. | |
12 | ||
13 | menu "Processor support" | |
14 | choice | |
15 | prompt "Processor Type" | |
16 | depends on PPC32 | |
a0ae9c7c | 17 | help |
b9fd305d | 18 | There are five families of 32 bit PowerPC chips supported. |
f0ed73f3 | 19 | The most common ones are the desktop and server CPUs (603, |
b9fd305d | 20 | 604, 740, 750, 74xx) CPUs from Freescale and IBM, with their |
e177edcd | 21 | embedded 512x/52xx/82xx/83xx/86xx counterparts. |
39c8bf2b | 22 | The other embedded parts, namely 4xx, 8xx and e500 |
b9fd305d AB |
23 | (85xx) each form a family of their own that is not compatible |
24 | with the others. | |
25 | ||
26 | If unsure, select 52xx/6xx/7xx/74xx/82xx/83xx/86xx. | |
27 | ||
a6a50d84 | 28 | config PPC_BOOK3S_32 |
f0ed73f3 | 29 | bool "512x/52xx/6xx/7xx/74xx/82xx/83xx/86xx" |
7d68c891 | 30 | imply PPC_FPU |
be34fff0 | 31 | select PPC_HAVE_PMU_SUPPORT |
db972a37 | 32 | select HAVE_ARCH_VMAP_STACK |
a0ae9c7c | 33 | |
a0ae9c7c AB |
34 | config PPC_85xx |
35 | bool "Freescale 85xx" | |
688de017 | 36 | select PPC_E500 |
a0ae9c7c | 37 | |
a0ae9c7c AB |
38 | config PPC_8xx |
39 | bool "Freescale 8xx" | |
855f9a8e | 40 | select ARCH_SUPPORTS_HUGETLBFS |
a0ae9c7c | 41 | select FSL_SOC |
13dac4e3 | 42 | select PPC_KUEP |
99b22916 | 43 | select HAVE_ARCH_VMAP_STACK |
34536d78 | 44 | select HUGETLBFS |
a0ae9c7c AB |
45 | |
46 | config 40x | |
47 | bool "AMCC 40x" | |
48 | select PPC_DCR_NATIVE | |
9dae8afd | 49 | select PPC_UDBG_16550 |
93173ce2 | 50 | select 4xx_SOC |
eb01d42a | 51 | select HAVE_PCI |
fcf9bb6d | 52 | select PPC_KUEP if PPC_KUAP |
a0ae9c7c AB |
53 | |
54 | config 44x | |
e7f75ad0 | 55 | bool "AMCC 44x, 46x or 47x" |
a0ae9c7c | 56 | select PPC_DCR_NATIVE |
1d5499b5 | 57 | select PPC_UDBG_16550 |
93173ce2 | 58 | select 4xx_SOC |
eb01d42a | 59 | select HAVE_PCI |
4ee7084e | 60 | select PHYS_64BIT |
ee263160 | 61 | select PPC_KUEP |
a0ae9c7c | 62 | |
a0ae9c7c AB |
63 | endchoice |
64 | ||
44e9754d CL |
65 | config PPC_BOOK3S_603 |
66 | bool "Support for 603 SW loaded TLB" | |
67 | depends on PPC_BOOK3S_32 | |
68 | default y | |
69 | help | |
70 | Provide support for processors based on the 603 cores. Those | |
71 | processors don't have a HASH MMU and provide SW TLB loading. | |
72 | ||
73 | config PPC_BOOK3S_604 | |
74 | bool "Support for 604+ HASH MMU" if PPC_BOOK3S_603 | |
75 | depends on PPC_BOOK3S_32 | |
76 | default y | |
77 | help | |
78 | Provide support for processors not based on the 603 cores. | |
79 | Those processors have a HASH MMU. | |
80 | ||
2d27cfd3 BH |
81 | choice |
82 | prompt "Processor Type" | |
5b7c3c91 | 83 | depends on PPC64 |
2d27cfd3 BH |
84 | help |
85 | There are two families of 64 bit PowerPC chips supported. | |
86 | The most common ones are the desktop and server CPUs | |
471d7ff8 | 87 | (POWER5, 970, POWER5+, POWER6, POWER7, POWER8, POWER9 ...) |
2d27cfd3 BH |
88 | |
89 | The other are the "embedded" processors compliant with the | |
90 | "Book 3E" variant of the architecture | |
91 | ||
92 | config PPC_BOOK3S_64 | |
93 | bool "Server processors" | |
5b7c3c91 | 94 | select PPC_FPU |
5adfd346 | 95 | select PPC_HAVE_PMU_SUPPORT |
ab624762 | 96 | select HAVE_ARCH_TRANSPARENT_HUGEPAGE |
1e866974 | 97 | select ARCH_ENABLE_HUGEPAGE_MIGRATION if HUGETLB_PAGE && MIGRATION |
310d2e83 | 98 | select ARCH_ENABLE_SPLIT_PMD_PTLOCK |
a0820ff3 | 99 | select ARCH_ENABLE_THP_MIGRATION if TRANSPARENT_HUGEPAGE |
855f9a8e | 100 | select ARCH_SUPPORTS_HUGETLBFS |
c34a51ce | 101 | select ARCH_SUPPORTS_NUMA_BALANCING |
feac00aa AK |
102 | select HAVE_MOVE_PMD |
103 | select HAVE_MOVE_PUD | |
527518f1 | 104 | select IRQ_WORK |
c2857374 | 105 | select PPC_64S_HASH_MMU if !PPC_RADIX_MMU |
41b7a347 | 106 | select KASAN_VMALLOC if KASAN |
5b7c3c91 | 107 | |
2d27cfd3 BH |
108 | config PPC_BOOK3E_64 |
109 | bool "Embedded processors" | |
688de017 | 110 | select PPC_E500 |
0069f3d1 | 111 | select PPC_E500MC |
2d27cfd3 | 112 | select PPC_FPU # Make it a choice ? |
1ece355b | 113 | select PPC_SMP_MUXED_IPI |
440bc685 | 114 | select PPC_DOORBELL |
63703f37 | 115 | select ZONE_DMA |
2d27cfd3 BH |
116 | |
117 | endchoice | |
118 | ||
d23c6fb4 AB |
119 | choice |
120 | prompt "CPU selection" | |
d23c6fb4 AB |
121 | help |
122 | This will create a kernel which is optimised for a particular CPU. | |
123 | The resulting kernel may not run on other CPUs, so use this with care. | |
124 | ||
125 | If unsure, select Generic. | |
126 | ||
45f7091a | 127 | config POWERPC64_CPU |
7fd123e5 | 128 | bool "Generic (POWER5 and PowerPC 970 and above)" |
d6b551b8 CL |
129 | depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN |
130 | select PPC_64S_HASH_MMU | |
d23c6fb4 | 131 | |
45f7091a | 132 | config POWERPC64_CPU |
a73657ea | 133 | bool "Generic (POWER8 and above)" |
d6b551b8 | 134 | depends on PPC_BOOK3S_64 && CPU_LITTLE_ENDIAN |
a73657ea | 135 | select ARCH_HAS_FAST_MULTIPLIER |
c2857374 | 136 | select PPC_64S_HASH_MMU |
b86cf14f | 137 | select PPC_HAS_LBARX_LHARX |
a73657ea | 138 | |
446cda1b | 139 | config POWERPC_CPU |
0e00a8c9 | 140 | bool "Generic 32 bits powerpc" |
2255411d | 141 | depends on PPC_BOOK3S_32 |
0e00a8c9 | 142 | |
d23c6fb4 AB |
143 | config CELL_CPU |
144 | bool "Cell Broadband Engine" | |
686245be | 145 | depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN |
4b10306e | 146 | depends on !CC_IS_CLANG |
c2857374 | 147 | select PPC_64S_HASH_MMU |
d23c6fb4 | 148 | |
7fd123e5 NP |
149 | config PPC_970_CPU |
150 | bool "PowerPC 970 (including PowerPC G5)" | |
686245be | 151 | depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN |
c2857374 | 152 | select PPC_64S_HASH_MMU |
d23c6fb4 AB |
153 | |
154 | config POWER6_CPU | |
155 | bool "POWER6" | |
686245be | 156 | depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN |
c2857374 | 157 | select PPC_64S_HASH_MMU |
d23c6fb4 AB |
158 | |
159 | config POWER7_CPU | |
160 | bool "POWER7" | |
01718ba6 | 161 | depends on PPC_BOOK3S_64 |
423216ed | 162 | select ARCH_HAS_FAST_MULTIPLIER |
c2857374 | 163 | select PPC_64S_HASH_MMU |
b86cf14f | 164 | select PPC_HAS_LBARX_LHARX |
01718ba6 | 165 | |
ff2e466a AB |
166 | config POWER8_CPU |
167 | bool "POWER8" | |
168 | depends on PPC_BOOK3S_64 | |
423216ed | 169 | select ARCH_HAS_FAST_MULTIPLIER |
c2857374 | 170 | select PPC_64S_HASH_MMU |
b86cf14f | 171 | select PPC_HAS_LBARX_LHARX |
01718ba6 | 172 | |
4b7e5532 NP |
173 | config POWER9_CPU |
174 | bool "POWER9" | |
175 | depends on PPC_BOOK3S_64 | |
176 | select ARCH_HAS_FAST_MULTIPLIER | |
b86cf14f | 177 | select PPC_HAS_LBARX_LHARX |
4b7e5532 | 178 | |
4b2a9315 NP |
179 | config POWER10_CPU |
180 | bool "POWER10" | |
181 | depends on PPC_BOOK3S_64 | |
182 | select ARCH_HAS_FAST_MULTIPLIER | |
dc5dac74 | 183 | select PPC_HAVE_PREFIXED_SUPPORT |
7e3a68be | 184 | select PPC_HAVE_PCREL_SUPPORT |
4b2a9315 | 185 | |
01718ba6 SW |
186 | config E5500_CPU |
187 | bool "Freescale e5500" | |
688de017 | 188 | depends on PPC64 && PPC_E500 |
01718ba6 SW |
189 | |
190 | config E6500_CPU | |
191 | bool "Freescale e6500" | |
688de017 | 192 | depends on PPC64 && PPC_E500 |
4b10306e | 193 | depends on !CC_IS_CLANG |
b86cf14f | 194 | select PPC_HAS_LBARX_LHARX |
d23c6fb4 | 195 | |
ff27d920 CL |
196 | config 405_CPU |
197 | bool "40x family" | |
198 | depends on 40x | |
4b10306e | 199 | depends on !CC_IS_CLANG |
ff27d920 | 200 | |
2255411d CL |
201 | config 440_CPU |
202 | bool "440 (44x family)" | |
203 | depends on 44x | |
204 | ||
205 | config 464_CPU | |
206 | bool "464 (44x family)" | |
207 | depends on 44x | |
4b10306e | 208 | depends on !CC_IS_CLANG |
2255411d CL |
209 | |
210 | config 476_CPU | |
211 | bool "476 (47x family)" | |
212 | depends on PPC_47x | |
4b10306e | 213 | depends on !CC_IS_CLANG |
2255411d | 214 | |
0e00a8c9 CL |
215 | config 860_CPU |
216 | bool "8xx family" | |
217 | depends on PPC_8xx | |
4b10306e | 218 | depends on !CC_IS_CLANG |
0e00a8c9 | 219 | |
d6690b1a CL |
220 | config E300C2_CPU |
221 | bool "e300c2 (832x)" | |
222 | depends on PPC_BOOK3S_32 | |
4b10306e | 223 | depends on !CC_IS_CLANG |
d6690b1a CL |
224 | |
225 | config E300C3_CPU | |
226 | bool "e300c3 (831x)" | |
227 | depends on PPC_BOOK3S_32 | |
4b10306e | 228 | depends on !CC_IS_CLANG |
d6690b1a | 229 | |
9bd10b64 MM |
230 | config G4_CPU |
231 | bool "G4 (74xx)" | |
232 | depends on PPC_BOOK3S_32 | |
233 | select ALTIVEC | |
234 | ||
446cda1b CL |
235 | config E500_CPU |
236 | bool "e500 (8540)" | |
237 | depends on PPC_85xx && !PPC_E500MC | |
238 | ||
239 | config E500MC_CPU | |
240 | bool "e500mc" | |
241 | depends on PPC_85xx && PPC_E500MC | |
242 | ||
243 | config TOOLCHAIN_DEFAULT_CPU | |
244 | bool "Rely on the toolchain's implicit default CPU" | |
446cda1b | 245 | |
d23c6fb4 AB |
246 | endchoice |
247 | ||
cc62d20c CL |
248 | config TARGET_CPU_BOOL |
249 | bool | |
45f7091a | 250 | default !TOOLCHAIN_DEFAULT_CPU |
cc62d20c CL |
251 | |
252 | config TARGET_CPU | |
253 | string | |
254 | depends on TARGET_CPU_BOOL | |
255 | default "cell" if CELL_CPU | |
7fd123e5 | 256 | default "970" if PPC_970_CPU |
cc62d20c CL |
257 | default "power6" if POWER6_CPU |
258 | default "power7" if POWER7_CPU | |
259 | default "power8" if POWER8_CPU | |
260 | default "power9" if POWER9_CPU | |
4b2a9315 | 261 | default "power10" if POWER10_CPU |
77e82fa1 | 262 | default "e5500" if E5500_CPU |
45f7091a CL |
263 | default "e6500" if E6500_CPU |
264 | default "power4" if POWERPC64_CPU && !CPU_LITTLE_ENDIAN | |
265 | default "power8" if POWERPC64_CPU && CPU_LITTLE_ENDIAN | |
ff27d920 | 266 | default "405" if 405_CPU |
2255411d CL |
267 | default "440" if 440_CPU |
268 | default "464" if 464_CPU | |
269 | default "476" if 476_CPU | |
0e00a8c9 | 270 | default "860" if 860_CPU |
d6690b1a CL |
271 | default "e300c2" if E300C2_CPU |
272 | default "e300c3" if E300C3_CPU | |
9bd10b64 | 273 | default "G4" if G4_CPU |
446cda1b CL |
274 | default "8540" if E500_CPU |
275 | default "e500mc" if E500MC_CPU | |
276 | default "powerpc" if POWERPC_CPU | |
cc62d20c | 277 | |
48c93112 BH |
278 | config PPC_BOOK3S |
279 | def_bool y | |
280 | depends on PPC_BOOK3S_32 || PPC_BOOK3S_64 | |
28794d34 | 281 | |
688de017 | 282 | config PPC_E500 |
39aef685 | 283 | select FSL_EMB_PERFMON |
a0ae9c7c | 284 | bool |
3e731858 CL |
285 | select ARCH_SUPPORTS_HUGETLBFS if PHYS_64BIT || PPC64 |
286 | select PPC_SMP_MUXED_IPI | |
287 | select PPC_DOORBELL | |
288 | select PPC_KUEP | |
a0ae9c7c | 289 | |
3dfa8773 KG |
290 | config PPC_E500MC |
291 | bool "e500mc Support" | |
292 | select PPC_FPU | |
555eae97 | 293 | select COMMON_CLK |
688de017 | 294 | depends on PPC_E500 |
9653018b SW |
295 | help |
296 | This must be enabled for running on e500mc (and derivatives | |
297 | such as e5500/e6500), and must be disabled for running on | |
298 | e500v1 or e500v2. | |
3dfa8773 | 299 | |
b6254ced CL |
300 | config PPC_FPU_REGS |
301 | bool | |
302 | ||
a0ae9c7c | 303 | config PPC_FPU |
7d68c891 | 304 | bool "Support for Floating Point Unit (FPU)" if PPC_MPC832x |
a0ae9c7c | 305 | default y if PPC64 |
b6254ced | 306 | select PPC_FPU_REGS |
7d68c891 CL |
307 | help |
308 | This must be enabled to support the Floating Point Unit | |
309 | Most 6xx have an FPU but e300c2 core (mpc832x) don't have | |
310 | an FPU, so when building an embedded kernel for that target | |
311 | you can disable FPU support. | |
312 | ||
313 | If unsure say Y. | |
a0ae9c7c | 314 | |
5753c082 KG |
315 | config FSL_EMB_PERFMON |
316 | bool "Freescale Embedded Perfmon" | |
688de017 | 317 | depends on PPC_E500 || PPC_83xx |
5753c082 KG |
318 | help |
319 | This is the Performance Monitor support found on the e500 core | |
320 | and some e300 cores (c3 and c4). Select this only if your | |
321 | core supports the Embedded Performance Monitor APU | |
322 | ||
a1110654 SW |
323 | config FSL_EMB_PERF_EVENT |
324 | bool | |
325 | depends on FSL_EMB_PERFMON && PERF_EVENTS && !PPC_PERF_CTRS | |
326 | default y | |
327 | ||
328 | config FSL_EMB_PERF_EVENT_E500 | |
329 | bool | |
688de017 | 330 | depends on FSL_EMB_PERF_EVENT && PPC_E500 |
a1110654 SW |
331 | default y |
332 | ||
a0ae9c7c AB |
333 | config 4xx |
334 | bool | |
335 | depends on 40x || 44x | |
336 | default y | |
337 | ||
338 | config BOOKE | |
339 | bool | |
73d11498 | 340 | depends on PPC_E500 || 44x |
a0ae9c7c AB |
341 | default y |
342 | ||
047a6fd4 CL |
343 | config BOOKE_OR_40x |
344 | bool | |
345 | depends on BOOKE || 40x | |
346 | default y | |
347 | ||
a0ae9c7c AB |
348 | config PTE_64BIT |
349 | bool | |
688de017 | 350 | depends on 44x || PPC_E500 || PPC_86xx |
4ee7084e | 351 | default y if PHYS_64BIT |
a0ae9c7c AB |
352 | |
353 | config PHYS_64BIT | |
688de017 CL |
354 | bool 'Large physical address support' if PPC_E500 || PPC_86xx |
355 | depends on (44x || PPC_E500 || PPC_86xx) && !PPC_83xx && !PPC_82xx | |
d4a451d5 | 356 | select PHYS_ADDR_T_64BIT |
a7f7f624 | 357 | help |
a0ae9c7c | 358 | This option enables kernel support for larger than 32-bit physical |
4ee7084e BB |
359 | addresses. This feature may not be available on all cores. |
360 | ||
361 | If you have more than 3.5GB of RAM or so, you also need to enable | |
362 | SWIOTLB under Kernel Options for this to work. The actual number | |
363 | is platform-dependent. | |
a0ae9c7c AB |
364 | |
365 | If in doubt, say N here. | |
366 | ||
367 | config ALTIVEC | |
368 | bool "AltiVec Support" | |
d6b551b8 | 369 | depends on PPC_BOOK3S || (PPC_E500MC && PPC64 && !E5500_CPU) |
38958633 | 370 | select PPC_FPU |
a7f7f624 | 371 | help |
a0ae9c7c AB |
372 | This option enables kernel support for the Altivec extensions to the |
373 | PowerPC processor. The kernel currently supports saving and restoring | |
374 | altivec registers, and turning on the 'altivec enable' bit so user | |
375 | processes can execute altivec instructions. | |
376 | ||
377 | This option is only usefully if you have a processor that supports | |
378 | altivec (G4, otherwise known as 74xx series), but does not have | |
379 | any affect on a non-altivec cpu (it does, however add code to the | |
380 | kernel). | |
381 | ||
382 | If in doubt, say Y here. | |
383 | ||
96d5b52c MN |
384 | config VSX |
385 | bool "VSX Support" | |
804ece07 | 386 | depends on PPC_BOOK3S_64 && ALTIVEC && PPC_FPU |
a7f7f624 | 387 | help |
96d5b52c MN |
388 | |
389 | This option enables kernel support for the Vector Scaler extensions | |
390 | to the PowerPC processor. The kernel currently supports saving and | |
391 | restoring VSX registers, and turning on the 'VSX enable' bit so user | |
392 | processes can execute VSX instructions. | |
393 | ||
394 | This option is only useful if you have a processor that supports | |
395 | VSX (P7 and above), but does not have any affect on a non-VSX | |
396 | CPUs (it does, however add code to the kernel). | |
397 | ||
398 | If in doubt, say Y here. | |
399 | ||
3477e71d MC |
400 | config SPE_POSSIBLE |
401 | def_bool y | |
688de017 | 402 | depends on PPC_E500 && !PPC_E500MC |
3477e71d | 403 | |
a0ae9c7c AB |
404 | config SPE |
405 | bool "SPE Support" | |
3477e71d | 406 | depends on SPE_POSSIBLE |
a0ae9c7c | 407 | default y |
a7f7f624 | 408 | help |
a0ae9c7c AB |
409 | This option enables kernel support for the Signal Processing |
410 | Extensions (SPE) to the PowerPC processor. The kernel currently | |
411 | supports saving and restoring SPE registers, and turning on the | |
412 | 'spe enable' bit so user processes can execute SPE instructions. | |
413 | ||
414 | This option is only useful if you have a processor that supports | |
415 | SPE (e500, otherwise known as 85xx series), but does not have any | |
416 | effect on a non-spe cpu (it does, however add code to the kernel). | |
417 | ||
418 | If in doubt, say Y here. | |
419 | ||
c2857374 NP |
420 | config PPC_64S_HASH_MMU |
421 | bool "Hash MMU Support" | |
422 | depends on PPC_BOOK3S_64 | |
c2857374 NP |
423 | default y |
424 | help | |
425 | Enable support for the Power ISA Hash style MMU. This is implemented | |
426 | by all IBM Power and other 64-bit Book3S CPUs before ISA v3.0. The | |
427 | OpenPOWER ISA does not mandate the hash MMU and some CPUs do not | |
428 | implement it (e.g., Microwatt). | |
429 | ||
430 | Note that POWER9 PowerVM platforms only support the hash | |
431 | MMU. From POWER10 radix is also supported by PowerVM. | |
432 | ||
433 | If you're unsure, say Y. | |
434 | ||
566ca99a AK |
435 | config PPC_RADIX_MMU |
436 | bool "Radix MMU Support" | |
57caddae | 437 | depends on PPC_BOOK3S_64 |
4eb0716e | 438 | select ARCH_HAS_GIGANTIC_PAGE |
566ca99a AK |
439 | default y |
440 | help | |
441 | Enable support for the Power ISA 3.0 Radix style MMU. Currently this | |
442 | is only implemented by IBM Power9 CPUs, if you don't have one of them | |
443 | you can probably disable this. | |
444 | ||
1fd6c022 | 445 | config PPC_RADIX_MMU_DEFAULT |
c2857374 NP |
446 | bool "Default to using the Radix MMU when possible" if PPC_64S_HASH_MMU |
447 | depends on PPC_BOOK3S_64 | |
1fd6c022 ME |
448 | depends on PPC_RADIX_MMU |
449 | default y | |
450 | help | |
451 | When the hardware supports the Radix MMU, default to using it unless | |
452 | "disable_radix[=yes]" is specified on the kernel command line. | |
453 | ||
454 | If this option is disabled, the Hash MMU will be used by default, | |
455 | unless "disable_radix=no" is specified on the kernel command line. | |
456 | ||
457 | If you're unsure, say Y. | |
458 | ||
dc5dac74 NP |
459 | config PPC_KERNEL_PREFIXED |
460 | depends on PPC_HAVE_PREFIXED_SUPPORT | |
461 | depends on CC_HAS_PREFIXED | |
462 | default n | |
463 | bool "Build Kernel with Prefixed Instructions" | |
464 | help | |
465 | POWER10 and later CPUs support prefixed instructions, 8 byte | |
466 | instructions that include large immediate, pc relative addressing, | |
467 | and various floating point, vector, MMA. | |
468 | ||
469 | This option builds the kernel with prefixed instructions, and | |
470 | allows a pc relative addressing option to be selected. | |
471 | ||
472 | Kernel support for prefixed instructions in applications and guests | |
473 | is not affected by this option. | |
474 | ||
7e3a68be NP |
475 | config PPC_KERNEL_PCREL |
476 | depends on PPC_HAVE_PCREL_SUPPORT | |
477 | depends on PPC_HAVE_PREFIXED_SUPPORT | |
478 | depends on CC_HAS_PCREL | |
479 | default n | |
480 | select PPC_KERNEL_PREFIXED | |
481 | bool "Build Kernel with PC-Relative addressing model" | |
482 | help | |
483 | POWER10 and later CPUs support pc relative addressing. Recent | |
484 | compilers have support for an ELF ABI extension for a pc relative | |
485 | ABI. | |
486 | ||
487 | This option builds the kernel with the pc relative ABI model. | |
488 | ||
0fb1c25a | 489 | config PPC_KUEP |
fcf9bb6d | 490 | bool "Kernel Userspace Execution Prevention" if !40x |
fcf9bb6d | 491 | default y if !40x |
0fb1c25a CL |
492 | help |
493 | Enable support for Kernel Userspace Execution Prevention (KUEP) | |
494 | ||
495 | If you're unsure, say Y. | |
496 | ||
de78a9c4 CL |
497 | config PPC_KUAP |
498 | bool "Kernel Userspace Access Protection" | |
9f5bd8f1 | 499 | default y |
de78a9c4 CL |
500 | help |
501 | Enable support for Kernel Userspace Access Protection (KUAP) | |
502 | ||
503 | If you're unsure, say Y. | |
504 | ||
890274c2 ME |
505 | config PPC_KUAP_DEBUG |
506 | bool "Extra debugging for Kernel Userspace Access Protection" | |
e3c02f25 | 507 | depends on PPC_KUAP |
890274c2 ME |
508 | help |
509 | Add extra debugging for Kernel Userspace Access Protection (KUAP) | |
510 | If you're unsure, say N. | |
511 | ||
227ae625 AK |
512 | config PPC_PKEY |
513 | def_bool y | |
514 | depends on PPC_BOOK3S_64 | |
515 | depends on PPC_MEM_KEYS || PPC_KUAP || PPC_KUEP | |
516 | ||
f7fb506f | 517 | |
5e696617 BH |
518 | config PPC_MMU_NOHASH |
519 | def_bool y | |
26598f28 | 520 | depends on !PPC_BOOK3S |
5e696617 | 521 | |
105988c0 | 522 | config PPC_HAVE_PMU_SUPPORT |
5f017a56 | 523 | bool |
105988c0 | 524 | |
dc5dac74 NP |
525 | config PPC_HAVE_PREFIXED_SUPPORT |
526 | bool | |
527 | ||
7e3a68be NP |
528 | config PPC_HAVE_PCREL_SUPPORT |
529 | bool | |
530 | ||
22697da3 KJ |
531 | config PMU_SYSFS |
532 | bool "Create PMU SPRs sysfs file" | |
533 | default n | |
534 | help | |
535 | This option enables sysfs file creation for PMU SPRs like MMCR* and PMC*. | |
536 | ||
105988c0 | 537 | config PPC_PERF_CTRS |
5f017a56 KK |
538 | def_bool y |
539 | depends on PERF_EVENTS && PPC_HAVE_PMU_SUPPORT | |
540 | help | |
541 | This enables the powerpc-specific perf_event back-end. | |
105988c0 | 542 | |
ebbe9d7d ME |
543 | config FORCE_SMP |
544 | # Allow platforms to force SMP=y by selecting this | |
545 | bool | |
ebbe9d7d ME |
546 | select SMP |
547 | ||
a0ae9c7c | 548 | config SMP |
772fd56d | 549 | depends on PPC_BOOK3S || PPC_E500 || PPC_47x |
a978e139 | 550 | select GENERIC_IRQ_MIGRATION |
ebbe9d7d | 551 | bool "Symmetric multi-processing support" if !FORCE_SMP |
a7f7f624 | 552 | help |
a0ae9c7c AB |
553 | This enables support for systems with more than one CPU. If you have |
554 | a system with only one CPU, say N. If you have a system with more | |
555 | than one CPU, say Y. Note that the kernel does not currently | |
556 | support SMP machines with 603/603e/603ev or PPC750 ("G3") processors | |
557 | since they have inadequate hardware support for multiprocessor | |
558 | operation. | |
559 | ||
560 | If you say N here, the kernel will run on single and multiprocessor | |
561 | machines, but will use only one CPU of a multiprocessor machine. If | |
562 | you say Y here, the kernel will run on single-processor machines. | |
563 | On a single-processor machine, the kernel will run faster if you say | |
564 | N here. | |
565 | ||
566 | If you don't know what to do here, say N. | |
567 | ||
568 | config NR_CPUS | |
c176c3d5 CL |
569 | int "Maximum number of CPUs (2-8192)" if SMP |
570 | range 2 8192 if SMP | |
571 | default "1" if !SMP | |
a0ae9c7c AB |
572 | default "32" if PPC64 |
573 | default "4" | |
574 | ||
575 | config NOT_COHERENT_CACHE | |
576 | bool | |
39c8bf2b | 577 | depends on 4xx || PPC_8xx || PPC_MPC512x || \ |
92863569 | 578 | GAMECUBE_COMMON || AMIGAONE |
f2902a2f | 579 | select ARCH_HAS_DMA_PREP_COHERENT |
461db2bd CH |
580 | select ARCH_HAS_SYNC_DMA_FOR_DEVICE |
581 | select ARCH_HAS_SYNC_DMA_FOR_CPU | |
f2902a2f | 582 | select DMA_DIRECT_REMAP |
e7f75ad0 | 583 | default n if PPC_47x |
a0ae9c7c AB |
584 | default y |
585 | ||
f8eb77d6 | 586 | config CHECK_CACHE_COHERENCY |
a0ae9c7c AB |
587 | bool |
588 | ||
440bc685 IM |
589 | config PPC_DOORBELL |
590 | bool | |
440bc685 | 591 | |
a0ae9c7c | 592 | endmenu |
7c105b63 | 593 | |
e0d00591 ME |
594 | config VDSO32 |
595 | def_bool y | |
231b232d | 596 | depends on PPC32 || COMPAT |
e0d00591 ME |
597 | help |
598 | This symbol controls whether we build the 32-bit VDSO. We obviously | |
599 | want to do that if we're building a 32-bit kernel. If we're building | |
231b232d ME |
600 | a 64-bit kernel then we only want a 32-bit VDSO if we're also enabling |
601 | COMPAT. | |
e0d00591 | 602 | |
962bc221 AB |
603 | choice |
604 | prompt "Endianness selection" | |
605 | default CPU_BIG_ENDIAN | |
7c105b63 AB |
606 | help |
607 | This option selects whether a big endian or little endian kernel will | |
608 | be built. | |
609 | ||
962bc221 AB |
610 | config CPU_BIG_ENDIAN |
611 | bool "Build big endian kernel" | |
612 | help | |
613 | Build a big endian kernel. | |
614 | ||
615 | If unsure, select this option. | |
616 | ||
617 | config CPU_LITTLE_ENDIAN | |
618 | bool "Build little endian kernel" | |
d4d4add9 | 619 | depends on PPC_BOOK3S_64 |
147c0516 | 620 | select PPC64_BOOT_WRAPPER |
962bc221 AB |
621 | help |
622 | Build a little endian kernel. | |
623 | ||
7c105b63 AB |
624 | Note that if cross compiling a little endian kernel, |
625 | CROSS_COMPILE must point to a toolchain capable of targeting | |
626 | little endian powerpc. | |
962bc221 AB |
627 | |
628 | endchoice | |
147c0516 | 629 | |
661aa880 | 630 | config PPC64_ELF_ABI_V1 |
5017b459 | 631 | def_bool PPC64 && (CPU_BIG_ENDIAN && !PPC64_BIG_ENDIAN_ELF_ABI_V2) |
661aa880 CL |
632 | |
633 | config PPC64_ELF_ABI_V2 | |
5017b459 | 634 | def_bool PPC64 && !PPC64_ELF_ABI_V1 |
661aa880 | 635 | |
147c0516 CLG |
636 | config PPC64_BOOT_WRAPPER |
637 | def_bool n | |
638 | depends on CPU_LITTLE_ENDIAN |