mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 08:19:28 +00:00
![Peter Zijlstra](/assets/img/avatar_default.png)
New arch macro STACK_TOP_MAX it gives the larges valid stack address for the architecture in question. It differs from STACK_TOP in that it will not distinguish between personalities but will always return the largest possible address. This is used to create the initial stack on execve, which we will move down to the proper location once the binfmt code has figured out where that is. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Ollie Wild <aaw@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
39 lines
1.1 KiB
C
39 lines
1.1 KiB
C
#ifndef _ASM_POWERPC_A_OUT_H
|
|
#define _ASM_POWERPC_A_OUT_H
|
|
|
|
struct exec
|
|
{
|
|
unsigned long a_info; /* Use macros N_MAGIC, etc for access */
|
|
unsigned a_text; /* length of text, in bytes */
|
|
unsigned a_data; /* length of data, in bytes */
|
|
unsigned a_bss; /* length of uninitialized data area for file, in bytes */
|
|
unsigned a_syms; /* length of symbol table data in file, in bytes */
|
|
unsigned a_entry; /* start address */
|
|
unsigned a_trsize; /* length of relocation info for text, in bytes */
|
|
unsigned a_drsize; /* length of relocation info for data, in bytes */
|
|
};
|
|
|
|
#define N_TRSIZE(a) ((a).a_trsize)
|
|
#define N_DRSIZE(a) ((a).a_drsize)
|
|
#define N_SYMSIZE(a) ((a).a_syms)
|
|
|
|
#ifdef __KERNEL__
|
|
#ifdef __powerpc64__
|
|
|
|
#define STACK_TOP_USER64 TASK_SIZE_USER64
|
|
#define STACK_TOP_USER32 TASK_SIZE_USER32
|
|
|
|
#define STACK_TOP (test_thread_flag(TIF_32BIT) ? \
|
|
STACK_TOP_USER32 : STACK_TOP_USER64)
|
|
|
|
#define STACK_TOP_MAX STACK_TOP_USER64
|
|
|
|
#else /* __powerpc64__ */
|
|
|
|
#define STACK_TOP TASK_SIZE
|
|
#define STACK_TOP_MAX STACK_TOP
|
|
|
|
#endif /* __powerpc64__ */
|
|
#endif /* __KERNEL__ */
|
|
|
|
#endif /* _ASM_POWERPC_A_OUT_H */
|