OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-ia64/] [elf.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
#ifndef _ASM_IA64_ELF_H
2
#define _ASM_IA64_ELF_H
3
 
4
/*
5
 * ELF archtecture specific definitions.
6
 *
7
 * Copyright (C) 1998, 1999, 2002 Hewlett-Packard Co
8
 *      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
/* Least-significant four bits of ELF header's e_flags are OS-specific.  The bits are
29
   interpreted as follows by Linux: */
30
#define EF_IA_64_LINUX_EXECUTABLE_STACK 0x1     /* is stack (& heap) executable by default? */
31
 
32
/* always align to 64KB to allow for future page sizes of up to 64KB: */
33
#define ELF_EXEC_PAGESIZE       PAGE_SIZE
34
 
35
/*
36
 * This is the location that an ET_DYN program is loaded if exec'ed.
37
 * Typical use of this is to invoke "./ld.so someprog" to test out a
38
 * new version of the loader.  We need to make sure that it is out of
39
 * the way of the program that it will "exec", and that there is
40
 * sufficient room for the brk.
41
 */
42
#define ELF_ET_DYN_BASE         (TASK_UNMAPPED_BASE + 0x800000000)
43
 
44
 
45
/*
46
 * We use (abuse?) this macro to insert the (empty) vm_area that is
47
 * used to map the register backing store.  I don't see any better
48
 * place to do this, but we should discuss this with Linus once we can
49
 * talk to him...
50
 */
51
extern void ia64_init_addr_space (void);
52
#define ELF_PLAT_INIT(_r, load_addr)    ia64_init_addr_space()
53
 
54
/* ELF register definitions.  This is needed for core dump support.  */
55
 
56
/*
57
 * elf_gregset_t contains the application-level state in the following order:
58
 *      r0-r31
59
 *      NaT bits (for r0-r31; bit N == 1 iff rN is a NaT)
60
 *      predicate registers (p0-p63)
61
 *      b0-b7
62
 *      ip cfm psr
63
 *      ar.rsc ar.bsp ar.bspstore ar.rnat
64
 *      ar.ccv ar.unat ar.fpsr ar.pfs ar.lc ar.ec ar.csd ar.ssd
65
 */
66
#define ELF_NGREG       128     /* we really need just 72 but let's leave some headroom... */
67
#define ELF_NFPREG      128     /* f0 and f1 could be omitted, but so what... */
68
 
69
typedef unsigned long elf_greg_t;
70
typedef elf_greg_t elf_gregset_t[ELF_NGREG];
71
 
72
typedef struct ia64_fpreg elf_fpreg_t;
73
typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
74
 
75
struct pt_regs; /* forward declaration... */
76
extern void ia64_elf_core_copy_regs (struct pt_regs *src, elf_gregset_t dst);
77
#define ELF_CORE_COPY_REGS(_dest,_regs) ia64_elf_core_copy_regs(_regs, _dest);
78
 
79
/* This macro yields a bitmask that programs can use to figure out
80
   what instruction set this CPU supports.  */
81
#define ELF_HWCAP       0
82
 
83
/* This macro yields a string that ld.so will use to load
84
   implementation specific libraries for optimization.  Not terribly
85
   relevant until we have real hardware to play with... */
86
#define ELF_PLATFORM    0
87
 
88
#ifdef __KERNEL__
89
struct elf64_hdr;
90
extern void ia64_set_personality (struct elf64_hdr *elf_ex, int ibcs2_interpreter);
91
#define SET_PERSONALITY(ex, ibcs2)      ia64_set_personality(&(ex), ibcs2)
92
#endif
93
 
94
#endif /* _ASM_IA64_ELF_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.