diff options
author | Paul Mundt <lethal@linux-sh.org> | 2007-11-20 01:14:31 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2008-01-27 23:18:49 -0500 |
commit | b542ad1161d3b1771ea6fa3e7cedd311a49f91c9 (patch) | |
tree | 987c102dbbee61f05546b3f0e55f26b2379b43f3 /include/asm-sh/elf.h | |
parent | 99432700cf2f28976191ab546deffc0007ef4eb7 (diff) |
sh: Plug in the SHmedia ELF relocations.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'include/asm-sh/elf.h')
-rw-r--r-- | include/asm-sh/elf.h | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/include/asm-sh/elf.h b/include/asm-sh/elf.h index 12cc4b392bf0..5a1e920f0598 100644 --- a/include/asm-sh/elf.h +++ b/include/asm-sh/elf.h | |||
@@ -5,7 +5,7 @@ | |||
5 | #include <asm/ptrace.h> | 5 | #include <asm/ptrace.h> |
6 | #include <asm/user.h> | 6 | #include <asm/user.h> |
7 | 7 | ||
8 | /* SH relocation types */ | 8 | /* SH (particularly SHcompact) relocation types */ |
9 | #define R_SH_NONE 0 | 9 | #define R_SH_NONE 0 |
10 | #define R_SH_DIR32 1 | 10 | #define R_SH_DIR32 1 |
11 | #define R_SH_REL32 2 | 11 | #define R_SH_REL32 2 |
@@ -43,6 +43,11 @@ | |||
43 | #define R_SH_RELATIVE 165 | 43 | #define R_SH_RELATIVE 165 |
44 | #define R_SH_GOTOFF 166 | 44 | #define R_SH_GOTOFF 166 |
45 | #define R_SH_GOTPC 167 | 45 | #define R_SH_GOTPC 167 |
46 | /* SHmedia relocs */ | ||
47 | #define R_SH_IMM_LOW16 246 | ||
48 | #define R_SH_IMM_LOW16_PCREL 247 | ||
49 | #define R_SH_IMM_MEDLOW16 248 | ||
50 | #define R_SH_IMM_MEDLOW16_PCREL 249 | ||
46 | /* Keep this the last entry. */ | 51 | /* Keep this the last entry. */ |
47 | #define R_SH_NUM 256 | 52 | #define R_SH_NUM 256 |
48 | 53 | ||
@@ -103,12 +108,35 @@ typedef struct user_fpu_struct elf_fpregset_t; | |||
103 | 108 | ||
104 | #define ELF_PLATFORM (NULL) | 109 | #define ELF_PLATFORM (NULL) |
105 | 110 | ||
111 | #ifdef __SH5__ | ||
112 | #define ELF_PLAT_INIT(_r, load_addr) \ | ||
113 | do { _r->regs[0]=0; _r->regs[1]=0; _r->regs[2]=0; _r->regs[3]=0; \ | ||
114 | _r->regs[4]=0; _r->regs[5]=0; _r->regs[6]=0; _r->regs[7]=0; \ | ||
115 | _r->regs[8]=0; _r->regs[9]=0; _r->regs[10]=0; _r->regs[11]=0; \ | ||
116 | _r->regs[12]=0; _r->regs[13]=0; _r->regs[14]=0; _r->regs[15]=0; \ | ||
117 | _r->regs[16]=0; _r->regs[17]=0; _r->regs[18]=0; _r->regs[19]=0; \ | ||
118 | _r->regs[20]=0; _r->regs[21]=0; _r->regs[22]=0; _r->regs[23]=0; \ | ||
119 | _r->regs[24]=0; _r->regs[25]=0; _r->regs[26]=0; _r->regs[27]=0; \ | ||
120 | _r->regs[28]=0; _r->regs[29]=0; _r->regs[30]=0; _r->regs[31]=0; \ | ||
121 | _r->regs[32]=0; _r->regs[33]=0; _r->regs[34]=0; _r->regs[35]=0; \ | ||
122 | _r->regs[36]=0; _r->regs[37]=0; _r->regs[38]=0; _r->regs[39]=0; \ | ||
123 | _r->regs[40]=0; _r->regs[41]=0; _r->regs[42]=0; _r->regs[43]=0; \ | ||
124 | _r->regs[44]=0; _r->regs[45]=0; _r->regs[46]=0; _r->regs[47]=0; \ | ||
125 | _r->regs[48]=0; _r->regs[49]=0; _r->regs[50]=0; _r->regs[51]=0; \ | ||
126 | _r->regs[52]=0; _r->regs[53]=0; _r->regs[54]=0; _r->regs[55]=0; \ | ||
127 | _r->regs[56]=0; _r->regs[57]=0; _r->regs[58]=0; _r->regs[59]=0; \ | ||
128 | _r->regs[60]=0; _r->regs[61]=0; _r->regs[62]=0; \ | ||
129 | _r->tregs[0]=0; _r->tregs[1]=0; _r->tregs[2]=0; _r->tregs[3]=0; \ | ||
130 | _r->tregs[4]=0; _r->tregs[5]=0; _r->tregs[6]=0; _r->tregs[7]=0; \ | ||
131 | _r->sr = SR_FD | SR_MMU; } while (0) | ||
132 | #else | ||
106 | #define ELF_PLAT_INIT(_r, load_addr) \ | 133 | #define ELF_PLAT_INIT(_r, load_addr) \ |
107 | do { _r->regs[0]=0; _r->regs[1]=0; _r->regs[2]=0; _r->regs[3]=0; \ | 134 | do { _r->regs[0]=0; _r->regs[1]=0; _r->regs[2]=0; _r->regs[3]=0; \ |
108 | _r->regs[4]=0; _r->regs[5]=0; _r->regs[6]=0; _r->regs[7]=0; \ | 135 | _r->regs[4]=0; _r->regs[5]=0; _r->regs[6]=0; _r->regs[7]=0; \ |
109 | _r->regs[8]=0; _r->regs[9]=0; _r->regs[10]=0; _r->regs[11]=0; \ | 136 | _r->regs[8]=0; _r->regs[9]=0; _r->regs[10]=0; _r->regs[11]=0; \ |
110 | _r->regs[12]=0; _r->regs[13]=0; _r->regs[14]=0; \ | 137 | _r->regs[12]=0; _r->regs[13]=0; _r->regs[14]=0; \ |
111 | _r->sr = SR_FD; } while (0) | 138 | _r->sr = SR_FD; } while (0) |
139 | #endif | ||
112 | 140 | ||
113 | #ifdef __KERNEL__ | 141 | #ifdef __KERNEL__ |
114 | #define SET_PERSONALITY(ex, ibcs2) set_personality(PER_LINUX_32BIT) | 142 | #define SET_PERSONALITY(ex, ibcs2) set_personality(PER_LINUX_32BIT) |