arch/powerpc/Kconfig

Source file repositories/reference/linux-study-clean/arch/powerpc/Kconfig

File Facts

System
Linux kernel
Corpus path
arch/powerpc/Kconfig
Extension
[no extension]
Size
43254 bytes
Lines
1347
Domain
Architecture Layer
Bucket
arch/powerpc
Inferred role
Architecture Layer: build/configuration rule
Status
atlas-only

Why This File Exists

CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.

Dependency Surface

Detected Declarations

Annotated Snippet

# SPDX-License-Identifier: GPL-2.0
source "arch/powerpc/platforms/Kconfig.cputype"

config CC_HAS_ELFV2
	def_bool PPC64 && $(cc-option, -mabi=elfv2)

config CC_HAS_PREFIXED
	def_bool PPC64 && $(cc-option, -mcpu=power10 -mprefixed)

config CC_HAS_PCREL
	# Clang has a bug (https://github.com/llvm/llvm-project/issues/62372)
	# where pcrel code is not generated if -msoft-float, -mno-altivec, or
	# -mno-vsx options are also given. Without these options, fp/vec
	# instructions are generated from regular kernel code. So Clang can't
	# do pcrel yet.
	def_bool PPC64 && CC_IS_GCC && $(cc-option, -mcpu=power10 -mpcrel)

config 32BIT
	bool
	default y if PPC32

config 64BIT
	bool
	default y if PPC64

config LIVEPATCH_64
	def_bool PPC64
	depends on LIVEPATCH

config MMU
	bool
	default y

config ARCH_MMAP_RND_BITS_MAX
	# On Book3S 64, the default virtual address space for 64-bit processes
	# is 2^47 (128TB). As a maximum, allow randomisation to consume up to
	# 32T of address space (2^45), which should ensure a reasonable gap
	# between bottom-up and top-down allocations for applications that
	# consume "normal" amounts of address space. Book3S 64 only supports 64K
	# and 4K page sizes.
	default 29 if PPC_BOOK3S_64 && PPC_64K_PAGES # 29 = 45 (32T) - 16 (64K)
	default 33 if PPC_BOOK3S_64		     # 33 = 45 (32T) - 12 (4K)
	#
	# On all other 64-bit platforms (currently only Book3E), the virtual
	# address space is 2^46 (64TB). Allow randomisation to consume up to 16T
	# of address space (2^44). Only 4K page sizes are supported.
	default 32 if 64BIT	# 32 = 44 (16T) - 12 (4K)
	#
	# For 32-bit, use the compat values, as they're the same.
	default ARCH_MMAP_RND_COMPAT_BITS_MAX

config ARCH_MMAP_RND_BITS_MIN
	# Allow randomisation to consume up to 1GB of address space (2^30).
	default 14 if 64BIT && PPC_64K_PAGES	# 14 = 30 (1GB) - 16 (64K)
	default 18 if 64BIT			# 18 = 30 (1GB) - 12 (4K)
	#
	# For 32-bit, use the compat values, as they're the same.
	default ARCH_MMAP_RND_COMPAT_BITS_MIN

config ARCH_MMAP_RND_COMPAT_BITS_MAX
	# Total virtual address space for 32-bit processes is 2^31 (2GB).
	# Allow randomisation to consume up to 512MB of address space (2^29).
	default 11 if PPC_256K_PAGES	# 11 = 29 (512MB) - 18 (256K)
	default 13 if PPC_64K_PAGES	# 13 = 29 (512MB) - 16 (64K)
	default 15 if PPC_16K_PAGES	# 15 = 29 (512MB) - 14 (16K)
	default 17			# 17 = 29 (512MB) - 12 (4K)

config ARCH_MMAP_RND_COMPAT_BITS_MIN
	# Total virtual address space for 32-bit processes is 2^31 (2GB).
	# Allow randomisation to consume up to 8MB of address space (2^23).

Annotation

Implementation Notes