1
0
Fork 0

powerpc/kconfig: define CONFIG_DATA_SHIFT and CONFIG_ETEXT_SHIFT

CONFIG_STRICT_KERNEL_RWX requires a special alignment
for DATA for some subarches. Today it is just defined
as an #ifdef in vmlinux.lds.S

In order to get more flexibility, this patch moves the
definition of this alignment in Kconfig

On some subarches, CONFIG_STRICT_KERNEL_RWX will
require a special alignment of _etext.

This patch also adds a configuration item for it in Kconfig

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
hifive-unleashed-5.1
Christophe Leroy 2019-02-21 19:08:47 +00:00 committed by Michael Ellerman
parent 555f4fdb93
commit 166d97d961
2 changed files with 12 additions and 6 deletions

View File

@ -721,6 +721,15 @@ config THREAD_SHIFT
Used to define the stack size. The default is almost always what you Used to define the stack size. The default is almost always what you
want. Only change this if you know what you are doing. want. Only change this if you know what you are doing.
config ETEXT_SHIFT
int
default PPC_PAGE_SHIFT
config DATA_SHIFT
int
default 24 if STRICT_KERNEL_RWX && PPC64
default PPC_PAGE_SHIFT
config FORCE_MAX_ZONEORDER config FORCE_MAX_ZONEORDER
int "Maximum zone order" int "Maximum zone order"
range 8 9 if PPC64 && PPC_64K_PAGES range 8 9 if PPC64 && PPC_64K_PAGES

View File

@ -12,11 +12,8 @@
#include <asm/cache.h> #include <asm/cache.h>
#include <asm/thread_info.h> #include <asm/thread_info.h>
#if defined(CONFIG_STRICT_KERNEL_RWX) && !defined(CONFIG_PPC32) #define STRICT_ALIGN_SIZE (1 << CONFIG_DATA_SHIFT)
#define STRICT_ALIGN_SIZE (1 << 24) #define ETEXT_ALIGN_SIZE (1 << CONFIG_ETEXT_SHIFT)
#else
#define STRICT_ALIGN_SIZE PAGE_SIZE
#endif
ENTRY(_stext) ENTRY(_stext)
@ -131,7 +128,7 @@ SECTIONS
} :kernel } :kernel
. = ALIGN(PAGE_SIZE); . = ALIGN(ETEXT_ALIGN_SIZE);
_etext = .; _etext = .;
PROVIDE32 (etext = .); PROVIDE32 (etext = .);