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 becc08e6a65c..279b80f3bb29 100644 --- a/arch/powerpc/include/asm/ptrace.h +++ b/arch/powerpc/include/asm/ptrace.h | |||
| @@ -28,11 +28,23 @@ | |||
| 28 | 28 | ||
| 29 | #ifdef __powerpc64__ | 29 | #ifdef __powerpc64__ |
| 30 | 30 | ||
| 31 | /* | ||
| 32 | * Size of redzone that userspace is allowed to use below the stack | ||
| 33 | * pointer. This is 288 in the 64-bit big-endian ELF ABI, and 512 in | ||
| 34 | * the new ELFv2 little-endian ABI, so we allow the larger amount. | ||
| 35 | * | ||
| 36 | * For kernel code we allow a 288-byte redzone, in order to conserve | ||
| 37 | * kernel stack space; gcc currently only uses 288 bytes, and will | ||
| 38 | * hopefully allow explicit control of the redzone size in future. | ||
| 39 | */ | ||
| 40 | #define USER_REDZONE_SIZE 512 | ||
| 41 | #define KERNEL_REDZONE_SIZE 288 | ||
| 42 | |||
| 31 | #define STACK_FRAME_OVERHEAD 112 /* size of minimum stack frame */ | 43 | #define STACK_FRAME_OVERHEAD 112 /* size of minimum stack frame */ |
| 32 | #define STACK_FRAME_LR_SAVE 2 /* Location of LR in stack frame */ | 44 | #define STACK_FRAME_LR_SAVE 2 /* Location of LR in stack frame */ |
| 33 | #define STACK_FRAME_REGS_MARKER ASM_CONST(0x7265677368657265) | 45 | #define STACK_FRAME_REGS_MARKER ASM_CONST(0x7265677368657265) |
| 34 | #define STACK_INT_FRAME_SIZE (sizeof(struct pt_regs) + \ | 46 | #define STACK_INT_FRAME_SIZE (sizeof(struct pt_regs) + \ |
| 35 | STACK_FRAME_OVERHEAD + 288) | 47 | STACK_FRAME_OVERHEAD + KERNEL_REDZONE_SIZE) |
| 36 | #define STACK_FRAME_MARKER 12 | 48 | #define STACK_FRAME_MARKER 12 |
| 37 | 49 | ||
| 38 | /* Size of dummy stack frame allocated when calling signal handler. */ | 50 | /* Size of dummy stack frame allocated when calling signal handler. */ |
| @@ -41,6 +53,8 @@ | |||
| 41 | 53 | ||
| 42 | #else /* __powerpc64__ */ | 54 | #else /* __powerpc64__ */ |
| 43 | 55 | ||
| 56 | #define USER_REDZONE_SIZE 0 | ||
| 57 | #define KERNEL_REDZONE_SIZE 0 | ||
| 44 | #define STACK_FRAME_OVERHEAD 16 /* size of minimum stack frame */ | 58 | #define STACK_FRAME_OVERHEAD 16 /* size of minimum stack frame */ |
| 45 | #define STACK_FRAME_LR_SAVE 1 /* Location of LR in stack frame */ | 59 | #define STACK_FRAME_LR_SAVE 1 /* Location of LR in stack frame */ |
| 46 | #define STACK_FRAME_REGS_MARKER ASM_CONST(0x72656773) | 60 | #define STACK_FRAME_REGS_MARKER ASM_CONST(0x72656773) |
