Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8c530ea3 authored by Matt Redfearn's avatar Matt Redfearn Committed by Ralf Baechle
Browse files

MIPS: Add CONFIG_RELOCATABLE Kconfig option



Add option to KConfig to enable the kernel to relocate itself at
runtime.

Relocation is supported R2 and later of the MIPS architecture, 32bit
and 64bit. The platform is also required to provide support through
plat_get_fdt() added in a later patch.

Signed-off-by: default avatarMatt Redfearn <matt.redfearn@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: kernel-hardening@lists.openwall.com
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/12987/


Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 61cd52d4
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -475,6 +475,7 @@ config MIPS_MALTA
	select SYS_SUPPORTS_MULTITHREADING
	select SYS_SUPPORTS_SMARTMIPS
	select SYS_SUPPORTS_ZBOOT
	select SYS_SUPPORTS_RELOCATABLE
	select USE_OF
	select ZONE_DMA32 if 64BIT
	select BUILTIN_DTB
@@ -519,6 +520,7 @@ config MIPS_SEAD3
	select SYS_SUPPORTS_SMARTMIPS
	select SYS_SUPPORTS_MICROMIPS
	select SYS_SUPPORTS_MIPS16
	select SYS_SUPPORTS_RELOCATABLE
	select USB_EHCI_BIG_ENDIAN_DESC
	select USB_EHCI_BIG_ENDIAN_MMIO
	select USE_OF
@@ -1158,6 +1160,13 @@ config ISA_DMA_API
config HOLES_IN_ZONE
	bool

config SYS_SUPPORTS_RELOCATABLE
	bool
	help
	 Selected if the platform supports relocating the kernel.
	 The platform must provide plat_get_fdt() if it selects CONFIG_USE_OF
	 to allow access to command line and entropy sources.

#
# Endianness selection.  Sufficiently obscure so many users don't know what to
# answer,so we try hard to limit the available choices.  Also the use of a
@@ -2473,6 +2482,15 @@ config NUMA
config SYS_SUPPORTS_NUMA
	bool

config RELOCATABLE
	bool "Relocatable kernel"
	depends on SYS_SUPPORTS_RELOCATABLE && (CPU_MIPS32_R2 || CPU_MIPS64_R2 || CPU_MIPS32_R6 || CPU_MIPS64_R6)
	help
	  This builds a kernel image that retains relocation information
	  so it can be loaded someplace besides the default 1MB.
	  The relocations make the kernel binary about 15% larger,
	  but are discarded at runtime

config RELOCATION_TABLE_SIZE
	hex "Relocation table size"
	depends on RELOCATABLE