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

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
...@@ -475,6 +475,7 @@ config MIPS_MALTA ...@@ -475,6 +475,7 @@ config MIPS_MALTA
select SYS_SUPPORTS_MULTITHREADING select SYS_SUPPORTS_MULTITHREADING
select SYS_SUPPORTS_SMARTMIPS select SYS_SUPPORTS_SMARTMIPS
select SYS_SUPPORTS_ZBOOT select SYS_SUPPORTS_ZBOOT
select SYS_SUPPORTS_RELOCATABLE
select USE_OF select USE_OF
select ZONE_DMA32 if 64BIT select ZONE_DMA32 if 64BIT
select BUILTIN_DTB select BUILTIN_DTB
...@@ -519,6 +520,7 @@ config MIPS_SEAD3 ...@@ -519,6 +520,7 @@ config MIPS_SEAD3
select SYS_SUPPORTS_SMARTMIPS select SYS_SUPPORTS_SMARTMIPS
select SYS_SUPPORTS_MICROMIPS select SYS_SUPPORTS_MICROMIPS
select SYS_SUPPORTS_MIPS16 select SYS_SUPPORTS_MIPS16
select SYS_SUPPORTS_RELOCATABLE
select USB_EHCI_BIG_ENDIAN_DESC select USB_EHCI_BIG_ENDIAN_DESC
select USB_EHCI_BIG_ENDIAN_MMIO select USB_EHCI_BIG_ENDIAN_MMIO
select USE_OF select USE_OF
...@@ -1158,6 +1160,13 @@ config ISA_DMA_API ...@@ -1158,6 +1160,13 @@ config ISA_DMA_API
config HOLES_IN_ZONE config HOLES_IN_ZONE
bool 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 # 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 # answer,so we try hard to limit the available choices. Also the use of a
...@@ -2473,6 +2482,15 @@ config NUMA ...@@ -2473,6 +2482,15 @@ config NUMA
config SYS_SUPPORTS_NUMA config SYS_SUPPORTS_NUMA
bool 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 config RELOCATION_TABLE_SIZE
hex "Relocation table size" hex "Relocation table size"
depends on RELOCATABLE depends on RELOCATABLE
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment