diff options
Diffstat (limited to 'include/asm-arm26/elf.h')
-rw-r--r-- | include/asm-arm26/elf.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/include/asm-arm26/elf.h b/include/asm-arm26/elf.h new file mode 100644 index 000000000000..8b149474db24 --- /dev/null +++ b/include/asm-arm26/elf.h | |||
@@ -0,0 +1,77 @@ | |||
1 | #ifndef __ASMARM_ELF_H | ||
2 | #define __ASMARM_ELF_H | ||
3 | |||
4 | /* | ||
5 | * ELF register definitions.. | ||
6 | */ | ||
7 | |||
8 | #include <asm/ptrace.h> | ||
9 | #include <asm/procinfo.h> | ||
10 | |||
11 | //FIXME - is it always 32K ? | ||
12 | |||
13 | #define ELF_EXEC_PAGESIZE 32768 | ||
14 | #define SET_PERSONALITY(ex,ibcs2) set_personality(PER_LINUX) | ||
15 | |||
16 | typedef unsigned long elf_greg_t; | ||
17 | typedef unsigned long elf_freg_t[3]; | ||
18 | |||
19 | #define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t)) | ||
20 | typedef elf_greg_t elf_gregset_t[ELF_NGREG]; | ||
21 | |||
22 | typedef struct { void *null; } elf_fpregset_t; | ||
23 | |||
24 | /* | ||
25 | * This is used to ensure we don't load something for the wrong architecture. | ||
26 | * We can only execute 26-bit code. | ||
27 | */ | ||
28 | |||
29 | #define EM_ARM 40 | ||
30 | #define EF_ARM_APCS26 0x08 | ||
31 | |||
32 | //#define elf_check_arch(x) ( ((x)->e_machine == EM_ARM) && ((x)->e_flags & EF_ARM_APCS26) ) FIXME!!!!! - this looks OK, but the flags seem to be wrong. | ||
33 | #define elf_check_arch(x) (1) | ||
34 | |||
35 | /* | ||
36 | * These are used to set parameters in the core dumps. | ||
37 | */ | ||
38 | #define ELF_CLASS ELFCLASS32 | ||
39 | #define ELF_DATA ELFDATA2LSB; | ||
40 | #define ELF_ARCH EM_ARM | ||
41 | |||
42 | #define USE_ELF_CORE_DUMP | ||
43 | |||
44 | /* This is the location that an ET_DYN program is loaded if exec'ed. Typical | ||
45 | use of this is to invoke "./ld.so someprog" to test out a new version of | ||
46 | the loader. We need to make sure that it is out of the way of the program | ||
47 | that it will "exec", and that there is sufficient room for the brk. */ | ||
48 | |||
49 | #define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3) | ||
50 | |||
51 | /* When the program starts, a1 contains a pointer to a function to be | ||
52 | registered with atexit, as per the SVR4 ABI. A value of 0 means we | ||
53 | have no such handler. */ | ||
54 | #define ELF_PLAT_INIT(_r, load_addr) (_r)->ARM_r0 = 0 | ||
55 | |||
56 | /* This yields a mask that user programs can use to figure out what | ||
57 | instruction set this cpu supports. */ | ||
58 | |||
59 | extern unsigned int elf_hwcap; | ||
60 | #define ELF_HWCAP (elf_hwcap) | ||
61 | |||
62 | /* This yields a string that ld.so will use to load implementation | ||
63 | specific libraries for optimization. This is more specific in | ||
64 | intent than poking at uname or /proc/cpuinfo. */ | ||
65 | |||
66 | /* For now we just provide a fairly general string that describes the | ||
67 | processor family. This could be made more specific later if someone | ||
68 | implemented optimisations that require it. 26-bit CPUs give you | ||
69 | "v1l" for ARM2 (no SWP) and "v2l" for anything else (ARM1 isn't | ||
70 | supported). | ||
71 | */ | ||
72 | |||
73 | #define ELF_PLATFORM_SIZE 8 | ||
74 | extern char elf_platform[]; | ||
75 | #define ELF_PLATFORM (elf_platform) | ||
76 | |||
77 | #endif | ||