1#ifndef __PPC64_A_OUT_H__
2#define __PPC64_A_OUT_H__
3
4#include <asm/ppcdebug.h>
5
6/*
7 * c 2001 PPC 64 Team, IBM Corp
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation; either version
12 * 2 of the License, or (at your option) any later version.
13 */
14
15struct exec
16{
17	unsigned long a_info;	/* Use macros N_MAGIC, etc for access */
18	unsigned a_text;	/* length of text, in bytes */
19	unsigned a_data;	/* length of data, in bytes */
20	unsigned a_bss;		/* length of uninitialized data area for file, in bytes */
21	unsigned a_syms;	/* length of symbol table data in file, in bytes */
22	unsigned a_entry;	/* start address */
23	unsigned a_trsize;	/* length of relocation info for text, in bytes */
24	unsigned a_drsize;	/* length of relocation info for data, in bytes */
25};
26
27#define N_TRSIZE(a)	((a).a_trsize)
28#define N_DRSIZE(a)	((a).a_drsize)
29#define N_SYMSIZE(a)	((a).a_syms)
30
31#ifdef __KERNEL__
32
33/* 64-bit user address space is less PGDIR_SIZE due to pgd_index() bug. */
34#define STACK_TOP_USER64 (TASK_SIZE_USER64 - PGDIR_SIZE)
35
36/* Give 32-bit user space a full 4G address space to live in. */
37#define STACK_TOP_USER32 (TASK_SIZE_USER32)
38
39#define STACK_TOP (((current->thread.flags & PPC_FLAG_32BIT)||(ppcdebugset(PPCDBG_BINFMT_32ADDR))) ? \
40		STACK_TOP_USER32 : STACK_TOP_USER64)
41
42#endif /* __KERNEL__ */
43
44#endif /* __PPC64_A_OUT_H__ */
45