1 #ifndef _ASM_IA64_ELF_H
2 #define _ASM_IA64_ELF_H
3
4 /*
5 * ELF archtecture specific definitions.
6 *
7 * Copyright (C) 1998, 1999 Hewlett-Packard Co
8 * Copyright (C) 1998, 1999 David Mosberger-Tang <davidm@hpl.hp.com>
9 */
10
11 #include <asm/fpu.h>
12 #include <asm/page.h>
13
14 /*
15 * This is used to ensure we don't load something for the wrong architecture.
16 */
17 #define elf_check_arch(x) ((x)->e_machine == EM_IA_64)
18
19 /*
20 * These are used to set parameters in the core dumps.
21 */
22 #define ELF_CLASS ELFCLASS64
23 #define ELF_DATA ELFDATA2LSB
24 #define ELF_ARCH EM_IA_64
25
26 #define USE_ELF_CORE_DUMP
27
28 /* always align to 64KB to allow for future page sizes of up to 64KB: */
29 #define ELF_EXEC_PAGESIZE PAGE_SIZE
30
31 /*
32 * This is the location that an ET_DYN program is loaded if exec'ed.
33 * Typical use of this is to invoke "./ld.so someprog" to test out a
34 * new version of the loader. We need to make sure that it is out of
35 * the way of the program that it will "exec", and that there is
36 * sufficient room for the brk.
37 */
38 #define ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x1000000)
39
40
41 /*
42 * We use (abuse?) this macro to insert the (empty) vm_area that is
43 * used to map the register backing store. I don't see any better
44 * place to do this, but we should discuss this with Linus once we can
45 * talk to him...
46 */
47 extern void ia64_init_addr_space (void);
48 #define ELF_PLAT_INIT(_r) ia64_init_addr_space()
49
50 /* ELF register definitions. This is needed for core dump support. */
51
52 /*
53 * elf_gregset_t contains the application-level state in the following order:
54 * r0-r31
55 * NaT bits (for r0-r31; bit N == 1 iff rN is a NaT)
56 * predicate registers (p0-p63)
57 * b0-b7
58 * ip cfm psr
59 * ar.rsc ar.bsp ar.bspstore ar.rnat
60 * ar.ccv ar.unat ar.fpsr ar.pfs ar.lc ar.ec
61 */
62 #define ELF_NGREG 128 /* we really need just 72 but let's leave some headroom... */
63 #define ELF_NFPREG 128 /* f0 and f1 could be omitted, but so what... */
64
65 typedef unsigned long elf_greg_t;
66 typedef elf_greg_t elf_gregset_t[ELF_NGREG];
67
68 typedef struct ia64_fpreg elf_fpreg_t;
69 typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
70
71 struct pt_regs; /* forward declaration... */
72 extern void ia64_elf_core_copy_regs (struct pt_regs *src, elf_gregset_t dst);
73 #define ELF_CORE_COPY_REGS(_dest,_regs) ia64_elf_core_copy_regs(_regs, _dest);
74
75 /* This macro yields a bitmask that programs can use to figure out
76 what instruction set this CPU supports. */
77 #define ELF_HWCAP 0
78
79 /* This macro yields a string that ld.so will use to load
80 implementation specific libraries for optimization. Not terribly
81 relevant until we have real hardware to play with... */
82 #define ELF_PLATFORM 0
83
84 #ifdef __KERNEL__
85 #define SET_PERSONALITY(ex, ibcs2) set_personality((ibcs2)?PER_SVR4:PER_LINUX)
86 #endif
87
88 #endif /* _ASM_IA64_ELF_H */
89
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.