1
2
3
4 #ifndef __ASMNDS32_ELF_H
5 #define __ASMNDS32_ELF_H
6
7
8
9
10
11 #include <asm/ptrace.h>
12 #include <asm/fpu.h>
13 #include <linux/elf-em.h>
14
15 typedef unsigned long elf_greg_t;
16 typedef unsigned long elf_freg_t[3];
17
18 extern unsigned int elf_hwcap;
19
20 #define R_NDS32_NONE 0
21 #define R_NDS32_16_RELA 19
22 #define R_NDS32_32_RELA 20
23 #define R_NDS32_9_PCREL_RELA 22
24 #define R_NDS32_15_PCREL_RELA 23
25 #define R_NDS32_17_PCREL_RELA 24
26 #define R_NDS32_25_PCREL_RELA 25
27 #define R_NDS32_HI20_RELA 26
28 #define R_NDS32_LO12S3_RELA 27
29 #define R_NDS32_LO12S2_RELA 28
30 #define R_NDS32_LO12S1_RELA 29
31 #define R_NDS32_LO12S0_RELA 30
32 #define R_NDS32_SDA15S3_RELA 31
33 #define R_NDS32_SDA15S2_RELA 32
34 #define R_NDS32_SDA15S1_RELA 33
35 #define R_NDS32_SDA15S0_RELA 34
36 #define R_NDS32_GOT20 37
37 #define R_NDS32_25_PLTREL 38
38 #define R_NDS32_COPY 39
39 #define R_NDS32_GLOB_DAT 40
40 #define R_NDS32_JMP_SLOT 41
41 #define R_NDS32_RELATIVE 42
42 #define R_NDS32_GOTOFF 43
43 #define R_NDS32_GOTPC20 44
44 #define R_NDS32_GOT_HI20 45
45 #define R_NDS32_GOT_LO12 46
46 #define R_NDS32_GOTPC_HI20 47
47 #define R_NDS32_GOTPC_LO12 48
48 #define R_NDS32_GOTOFF_HI20 49
49 #define R_NDS32_GOTOFF_LO12 50
50 #define R_NDS32_INSN16 51
51 #define R_NDS32_LABEL 52
52 #define R_NDS32_LONGCALL1 53
53 #define R_NDS32_LONGCALL2 54
54 #define R_NDS32_LONGCALL3 55
55 #define R_NDS32_LONGJUMP1 56
56 #define R_NDS32_LONGJUMP2 57
57 #define R_NDS32_LONGJUMP3 58
58 #define R_NDS32_LOADSTORE 59
59 #define R_NDS32_9_FIXED_RELA 60
60 #define R_NDS32_15_FIXED_RELA 61
61 #define R_NDS32_17_FIXED_RELA 62
62 #define R_NDS32_25_FIXED_RELA 63
63 #define R_NDS32_PLTREL_HI20 64
64 #define R_NDS32_PLTREL_LO12 65
65 #define R_NDS32_PLT_GOTREL_HI20 66
66 #define R_NDS32_PLT_GOTREL_LO12 67
67 #define R_NDS32_LO12S0_ORI_RELA 72
68 #define R_NDS32_DWARF2_OP1_RELA 77
69 #define R_NDS32_DWARF2_OP2_RELA 78
70 #define R_NDS32_DWARF2_LEB_RELA 79
71 #define R_NDS32_WORD_9_PCREL_RELA 94
72 #define R_NDS32_LONGCALL4 107
73 #define R_NDS32_RELA_NOP_MIX 192
74 #define R_NDS32_RELA_NOP_MAX 255
75
76 #define ELF_NGREG (sizeof (struct user_pt_regs) / sizeof(elf_greg_t))
77 #define ELF_CORE_COPY_REGS(dest, regs) \
78 *(struct user_pt_regs *)&(dest) = (regs)->user_regs;
79
80 typedef elf_greg_t elf_gregset_t[ELF_NGREG];
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109 struct user_fp {
110 unsigned long long fd_regs[32];
111 unsigned long fpcsr;
112 };
113
114 typedef struct user_fp elf_fpregset_t;
115
116 struct elf32_hdr;
117 #define elf_check_arch(x) ((x)->e_machine == EM_NDS32)
118
119
120
121
122 #define ELF_CLASS ELFCLASS32
123 #ifdef __NDS32_EB__
124 #define ELF_DATA ELFDATA2MSB
125 #else
126 #define ELF_DATA ELFDATA2LSB
127 #endif
128 #define ELF_ARCH EM_NDS32
129 #define USE_ELF_CORE_DUMP
130 #define ELF_EXEC_PAGESIZE PAGE_SIZE
131
132
133
134
135
136
137 #define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3)
138
139
140
141
142 #define ELF_PLAT_INIT(_r, load_addr) (_r)->uregs[0] = 0
143
144
145
146
147 #define ELF_HWCAP (elf_hwcap)
148
149 #ifdef __KERNEL__
150
151 #define ELF_PLATFORM (NULL)
152
153
154
155
156
157
158 #define SET_PERSONALITY(ex) set_personality(PER_LINUX)
159
160 #endif
161
162
163 #if IS_ENABLED(CONFIG_FPU)
164 #define FPU_AUX_ENT NEW_AUX_ENT(AT_FPUCW, FPCSR_INIT)
165 #else
166 #define FPU_AUX_ENT NEW_AUX_ENT(AT_IGNORE, 0)
167 #endif
168
169 #define ARCH_DLINFO \
170 do { \
171 \
172 FPU_AUX_ENT; \
173 \
174 NEW_AUX_ENT(AT_SYSINFO_EHDR, \
175 (elf_addr_t)current->mm->context.vdso); \
176 } while (0)
177 #define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1
178 struct linux_binprm;
179 int arch_setup_additional_pages(struct linux_binprm *, int);
180
181 #endif