diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2008-08-02 05:55:55 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-08-02 16:32:35 -0400 |
commit | 4baa9922430662431231ac637adedddbb0cfb2d7 (patch) | |
tree | e8fb765ce3e41c01f33de34a0bc9494f0ae19818 /include/asm-arm/elf.h | |
parent | ff4db0a043a5dee7180bdffd178e61cd02812c68 (diff) |
[ARM] move include/asm-arm to arch/arm/include/asm
Move platform independent header files to arch/arm/include/asm, leaving
those in asm/arch* and asm/plat* alone.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'include/asm-arm/elf.h')
-rw-r--r-- | include/asm-arm/elf.h | 116 |
1 files changed, 0 insertions, 116 deletions
diff --git a/include/asm-arm/elf.h b/include/asm-arm/elf.h deleted file mode 100644 index 4ca751627489..000000000000 --- a/include/asm-arm/elf.h +++ /dev/null | |||
@@ -1,116 +0,0 @@ | |||
1 | #ifndef __ASMARM_ELF_H | ||
2 | #define __ASMARM_ELF_H | ||
3 | |||
4 | #include <asm/hwcap.h> | ||
5 | |||
6 | #ifndef __ASSEMBLY__ | ||
7 | /* | ||
8 | * ELF register definitions.. | ||
9 | */ | ||
10 | #include <asm/ptrace.h> | ||
11 | #include <asm/user.h> | ||
12 | |||
13 | typedef unsigned long elf_greg_t; | ||
14 | typedef unsigned long elf_freg_t[3]; | ||
15 | |||
16 | #define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t)) | ||
17 | typedef elf_greg_t elf_gregset_t[ELF_NGREG]; | ||
18 | |||
19 | typedef struct user_fp elf_fpregset_t; | ||
20 | #endif | ||
21 | |||
22 | #define EM_ARM 40 | ||
23 | #define EF_ARM_APCS26 0x08 | ||
24 | #define EF_ARM_SOFT_FLOAT 0x200 | ||
25 | #define EF_ARM_EABI_MASK 0xFF000000 | ||
26 | |||
27 | #define R_ARM_NONE 0 | ||
28 | #define R_ARM_PC24 1 | ||
29 | #define R_ARM_ABS32 2 | ||
30 | #define R_ARM_CALL 28 | ||
31 | #define R_ARM_JUMP24 29 | ||
32 | |||
33 | /* | ||
34 | * These are used to set parameters in the core dumps. | ||
35 | */ | ||
36 | #define ELF_CLASS ELFCLASS32 | ||
37 | #ifdef __ARMEB__ | ||
38 | #define ELF_DATA ELFDATA2MSB | ||
39 | #else | ||
40 | #define ELF_DATA ELFDATA2LSB | ||
41 | #endif | ||
42 | #define ELF_ARCH EM_ARM | ||
43 | |||
44 | #ifndef __ASSEMBLY__ | ||
45 | /* | ||
46 | * This yields a string that ld.so will use to load implementation | ||
47 | * specific libraries for optimization. This is more specific in | ||
48 | * intent than poking at uname or /proc/cpuinfo. | ||
49 | * | ||
50 | * For now we just provide a fairly general string that describes the | ||
51 | * processor family. This could be made more specific later if someone | ||
52 | * implemented optimisations that require it. 26-bit CPUs give you | ||
53 | * "v1l" for ARM2 (no SWP) and "v2l" for anything else (ARM1 isn't | ||
54 | * supported). 32-bit CPUs give you "v3[lb]" for anything based on an | ||
55 | * ARM6 or ARM7 core and "armv4[lb]" for anything based on a StrongARM-1 | ||
56 | * core. | ||
57 | */ | ||
58 | #define ELF_PLATFORM_SIZE 8 | ||
59 | #define ELF_PLATFORM (elf_platform) | ||
60 | |||
61 | extern char elf_platform[]; | ||
62 | #endif | ||
63 | |||
64 | /* | ||
65 | * This is used to ensure we don't load something for the wrong architecture. | ||
66 | */ | ||
67 | #define elf_check_arch(x) ((x)->e_machine == EM_ARM && ELF_PROC_OK(x)) | ||
68 | |||
69 | /* | ||
70 | * 32-bit code is always OK. Some cpus can do 26-bit, some can't. | ||
71 | */ | ||
72 | #define ELF_PROC_OK(x) (ELF_THUMB_OK(x) && ELF_26BIT_OK(x)) | ||
73 | |||
74 | #define ELF_THUMB_OK(x) \ | ||
75 | ((elf_hwcap & HWCAP_THUMB && ((x)->e_entry & 1) == 1) || \ | ||
76 | ((x)->e_entry & 3) == 0) | ||
77 | |||
78 | #define ELF_26BIT_OK(x) \ | ||
79 | ((elf_hwcap & HWCAP_26BIT && (x)->e_flags & EF_ARM_APCS26) || \ | ||
80 | ((x)->e_flags & EF_ARM_APCS26) == 0) | ||
81 | |||
82 | #define USE_ELF_CORE_DUMP | ||
83 | #define ELF_EXEC_PAGESIZE 4096 | ||
84 | |||
85 | /* This is the location that an ET_DYN program is loaded if exec'ed. Typical | ||
86 | use of this is to invoke "./ld.so someprog" to test out a new version of | ||
87 | the loader. We need to make sure that it is out of the way of the program | ||
88 | that it will "exec", and that there is sufficient room for the brk. */ | ||
89 | |||
90 | #define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3) | ||
91 | |||
92 | /* When the program starts, a1 contains a pointer to a function to be | ||
93 | registered with atexit, as per the SVR4 ABI. A value of 0 means we | ||
94 | have no such handler. */ | ||
95 | #define ELF_PLAT_INIT(_r, load_addr) (_r)->ARM_r0 = 0 | ||
96 | |||
97 | /* | ||
98 | * Since the FPA coprocessor uses CP1 and CP2, and iWMMXt uses CP0 | ||
99 | * and CP1, we only enable access to the iWMMXt coprocessor if the | ||
100 | * binary is EABI or softfloat (and thus, guaranteed not to use | ||
101 | * FPA instructions.) | ||
102 | */ | ||
103 | #define SET_PERSONALITY(ex, ibcs2) \ | ||
104 | do { \ | ||
105 | if ((ex).e_flags & EF_ARM_APCS26) { \ | ||
106 | set_personality(PER_LINUX); \ | ||
107 | } else { \ | ||
108 | set_personality(PER_LINUX_32BIT); \ | ||
109 | if (elf_hwcap & HWCAP_IWMMXT && (ex).e_flags & (EF_ARM_EABI_MASK | EF_ARM_SOFT_FLOAT)) \ | ||
110 | set_thread_flag(TIF_USING_IWMMXT); \ | ||
111 | else \ | ||
112 | clear_thread_flag(TIF_USING_IWMMXT); \ | ||
113 | } \ | ||
114 | } while (0) | ||
115 | |||
116 | #endif | ||