diff options
Diffstat (limited to 'arch/microblaze/include/asm/elf.h')
-rw-r--r-- | arch/microblaze/include/asm/elf.h | 97 |
1 files changed, 1 insertions, 96 deletions
diff --git a/arch/microblaze/include/asm/elf.h b/arch/microblaze/include/asm/elf.h index 640ddd4b6a9b..659024449064 100644 --- a/arch/microblaze/include/asm/elf.h +++ b/arch/microblaze/include/asm/elf.h | |||
@@ -7,119 +7,24 @@ | |||
7 | * License. See the file "COPYING" in the main directory of this archive | 7 | * License. See the file "COPYING" in the main directory of this archive |
8 | * for more details. | 8 | * for more details. |
9 | */ | 9 | */ |
10 | |||
11 | #ifndef _ASM_MICROBLAZE_ELF_H | 10 | #ifndef _ASM_MICROBLAZE_ELF_H |
12 | #define _ASM_MICROBLAZE_ELF_H | 11 | #define _ASM_MICROBLAZE_ELF_H |
13 | 12 | ||
14 | /* | 13 | #include <uapi/asm/elf.h> |
15 | * Note there is no "official" ELF designation for Microblaze. | ||
16 | * I've snaffled the value from the microblaze binutils source code | ||
17 | * /binutils/microblaze/include/elf/microblaze.h | ||
18 | */ | ||
19 | #define EM_MICROBLAZE 189 | ||
20 | #define EM_MICROBLAZE_OLD 0xbaab | ||
21 | #define ELF_ARCH EM_MICROBLAZE | ||
22 | |||
23 | /* | ||
24 | * This is used to ensure we don't load something for the wrong architecture. | ||
25 | */ | ||
26 | #define elf_check_arch(x) ((x)->e_machine == EM_MICROBLAZE \ | ||
27 | || (x)->e_machine == EM_MICROBLAZE_OLD) | ||
28 | |||
29 | /* | ||
30 | * These are used to set parameters in the core dumps. | ||
31 | */ | ||
32 | #define ELF_CLASS ELFCLASS32 | ||
33 | 14 | ||
34 | #ifndef __uClinux__ | 15 | #ifndef __uClinux__ |
35 | |||
36 | /* | ||
37 | * ELF register definitions.. | ||
38 | */ | ||
39 | |||
40 | #include <asm/ptrace.h> | ||
41 | #include <asm/byteorder.h> | ||
42 | |||
43 | #ifndef ELF_GREG_T | 16 | #ifndef ELF_GREG_T |
44 | #define ELF_GREG_T | ||
45 | typedef unsigned long elf_greg_t; | ||
46 | #endif | 17 | #endif |
47 | |||
48 | #ifndef ELF_NGREG | 18 | #ifndef ELF_NGREG |
49 | #define ELF_NGREG (sizeof(struct pt_regs) / sizeof(elf_greg_t)) | ||
50 | #endif | 19 | #endif |
51 | |||
52 | #ifndef ELF_GREGSET_T | 20 | #ifndef ELF_GREGSET_T |
53 | #define ELF_GREGSET_T | ||
54 | typedef elf_greg_t elf_gregset_t[ELF_NGREG]; | ||
55 | #endif | 21 | #endif |
56 | |||
57 | #ifndef ELF_FPREGSET_T | 22 | #ifndef ELF_FPREGSET_T |
58 | #define ELF_FPREGSET_T | ||
59 | |||
60 | /* TBD */ | ||
61 | #define ELF_NFPREG 33 /* includes fsr */ | ||
62 | typedef unsigned long elf_fpreg_t; | ||
63 | typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; | ||
64 | |||
65 | /* typedef struct user_fpu_struct elf_fpregset_t; */ | ||
66 | #endif | 23 | #endif |
67 | |||
68 | /* This is the location that an ET_DYN program is loaded if exec'ed. Typical | ||
69 | * use of this is to invoke "./ld.so someprog" to test out a new version of | ||
70 | * the loader. We need to make sure that it is out of the way of the program | ||
71 | * that it will "exec", and that there is sufficient room for the brk. | ||
72 | */ | ||
73 | |||
74 | #define ELF_ET_DYN_BASE (0x08000000) | ||
75 | |||
76 | #ifdef __MICROBLAZEEL__ | 24 | #ifdef __MICROBLAZEEL__ |
77 | #define ELF_DATA ELFDATA2LSB | ||
78 | #else | 25 | #else |
79 | #define ELF_DATA ELFDATA2MSB | ||
80 | #endif | 26 | #endif |
81 | |||
82 | #define ELF_EXEC_PAGESIZE PAGE_SIZE | ||
83 | |||
84 | |||
85 | #define ELF_CORE_COPY_REGS(_dest, _regs) \ | ||
86 | memcpy((char *) &_dest, (char *) _regs, \ | ||
87 | sizeof(struct pt_regs)); | ||
88 | |||
89 | /* This yields a mask that user programs can use to figure out what | ||
90 | * instruction set this CPU supports. This could be done in user space, | ||
91 | * but it's not easy, and we've already done it here. | ||
92 | */ | ||
93 | #define ELF_HWCAP (0) | ||
94 | |||
95 | /* This yields a string that ld.so will use to load implementation | ||
96 | * specific libraries for optimization. This is more specific in | ||
97 | * intent than poking at uname or /proc/cpuinfo. | ||
98 | |||
99 | * For the moment, we have only optimizations for the Intel generations, | ||
100 | * but that could change... | ||
101 | */ | ||
102 | #define ELF_PLATFORM (NULL) | ||
103 | |||
104 | /* Added _f parameter. Is this definition correct: TBD */ | ||
105 | #define ELF_PLAT_INIT(_r, _f) \ | ||
106 | do { \ | ||
107 | _r->r1 = _r->r1 = _r->r2 = _r->r3 = \ | ||
108 | _r->r4 = _r->r5 = _r->r6 = _r->r7 = \ | ||
109 | _r->r8 = _r->r9 = _r->r10 = _r->r11 = \ | ||
110 | _r->r12 = _r->r13 = _r->r14 = _r->r15 = \ | ||
111 | _r->r16 = _r->r17 = _r->r18 = _r->r19 = \ | ||
112 | _r->r20 = _r->r21 = _r->r22 = _r->r23 = \ | ||
113 | _r->r24 = _r->r25 = _r->r26 = _r->r27 = \ | ||
114 | _r->r28 = _r->r29 = _r->r30 = _r->r31 = \ | ||
115 | 0; \ | ||
116 | } while (0) | ||
117 | |||
118 | #ifdef __KERNEL__ | ||
119 | #define SET_PERSONALITY(ex) \ | 27 | #define SET_PERSONALITY(ex) \ |
120 | set_personality(PER_LINUX_32BIT | (current->personality & (~PER_MASK))) | 28 | set_personality(PER_LINUX_32BIT | (current->personality & (~PER_MASK))) |
121 | #endif | ||
122 | |||
123 | #endif /* __uClinux__ */ | 29 | #endif /* __uClinux__ */ |
124 | |||
125 | #endif /* _ASM_MICROBLAZE_ELF_H */ | 30 | #endif /* _ASM_MICROBLAZE_ELF_H */ |