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
parent
555f4fdb93
commit
166d97d961
|
@ -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
|
||||||
|
|
|
@ -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 = .);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue