diff options
Diffstat (limited to 'arch/powerpc/include/asm/ptrace.h')
| -rw-r--r-- | arch/powerpc/include/asm/ptrace.h | 16 | 
1 files changed, 15 insertions, 1 deletions
diff --git a/arch/powerpc/include/asm/ptrace.h b/arch/powerpc/include/asm/ptrace.h index becc08e6a65..279b80f3bb2 100644 --- a/arch/powerpc/include/asm/ptrace.h +++ b/arch/powerpc/include/asm/ptrace.h @@ -28,11 +28,23 @@  #ifdef __powerpc64__ +/* + * Size of redzone that userspace is allowed to use below the stack + * pointer.  This is 288 in the 64-bit big-endian ELF ABI, and 512 in + * the new ELFv2 little-endian ABI, so we allow the larger amount. + * + * For kernel code we allow a 288-byte redzone, in order to conserve + * kernel stack space; gcc currently only uses 288 bytes, and will + * hopefully allow explicit control of the redzone size in future. + */ +#define USER_REDZONE_SIZE	512 +#define KERNEL_REDZONE_SIZE	288 +  #define STACK_FRAME_OVERHEAD	112	/* size of minimum stack frame */  #define STACK_FRAME_LR_SAVE	2	/* Location of LR in stack frame */  #define STACK_FRAME_REGS_MARKER	ASM_CONST(0x7265677368657265)  #define STACK_INT_FRAME_SIZE	(sizeof(struct pt_regs) + \ -					STACK_FRAME_OVERHEAD + 288) +				 STACK_FRAME_OVERHEAD + KERNEL_REDZONE_SIZE)  #define STACK_FRAME_MARKER	12  /* Size of dummy stack frame allocated when calling signal handler. */ @@ -41,6 +53,8 @@  #else /* __powerpc64__ */ +#define USER_REDZONE_SIZE	0 +#define KERNEL_REDZONE_SIZE	0  #define STACK_FRAME_OVERHEAD	16	/* size of minimum stack frame */  #define STACK_FRAME_LR_SAVE	1	/* Location of LR in stack frame */  #define STACK_FRAME_REGS_MARKER	ASM_CONST(0x72656773)  | 
