Commit | Line | Data |
---|---|---|
886a2506 NC |
1 | /* Replace functions for the ARC relocs. |
2 | Copyright 2015 | |
3 | Free Software Foundation, Inc. | |
4 | ||
5 | This file is part of GAS, the GNU Assembler, GDB, the GNU debugger, and | |
6 | the GNU Binutils. | |
7 | ||
8 | GAS/GDB is free software; you can redistribute it and/or modify | |
9 | it under the terms of the GNU General Public License as published by | |
10 | the Free Software Foundation; either version 3, or (at your option) | |
11 | any later version. | |
12 | ||
13 | GAS/GDB is distributed in the hope that it will be useful, | |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | GNU General Public License for more details. | |
17 | ||
18 | You should have received a copy of the GNU General Public License | |
19 | along with GAS or GDB; see the file COPYING3. If not, write to | |
20 | the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, | |
21 | MA 02110-1301, USA. */ | |
22 | ||
23 | /* mask = 00000000000000000000000000000000. */ | |
24 | #ifndef REPLACE_none | |
25 | #define REPLACE_none | |
26 | ATTRIBUTE_UNUSED static unsigned | |
27 | replace_none (unsigned insn, int value ATTRIBUTE_UNUSED) | |
28 | { | |
29 | ||
30 | return insn; | |
31 | } | |
32 | ||
33 | #endif /* REPLACE_none */ | |
34 | ||
35 | /* mask = 11111111. */ | |
36 | #ifndef REPLACE_bits8 | |
37 | #define REPLACE_bits8 | |
38 | ATTRIBUTE_UNUSED static unsigned | |
39 | replace_bits8 (unsigned insn, int value ATTRIBUTE_UNUSED) | |
40 | { | |
41 | insn |= ((value >> 0) & 0x00ff) << 0; | |
42 | ||
43 | return insn; | |
44 | } | |
45 | ||
46 | #endif /* REPLACE_bits8 */ | |
47 | ||
48 | /* mask = 1111111111111111. */ | |
49 | #ifndef REPLACE_bits16 | |
50 | #define REPLACE_bits16 | |
51 | ATTRIBUTE_UNUSED static unsigned | |
52 | replace_bits16 (unsigned insn, int value ATTRIBUTE_UNUSED) | |
53 | { | |
54 | insn |= ((value >> 0) & 0xffff) << 0; | |
55 | ||
56 | return insn; | |
57 | } | |
58 | ||
59 | #endif /* REPLACE_bits16 */ | |
60 | ||
61 | /* mask = 111111111111111111111111. */ | |
62 | #ifndef REPLACE_bits24 | |
63 | #define REPLACE_bits24 | |
64 | ATTRIBUTE_UNUSED static unsigned | |
65 | replace_bits24 (unsigned insn, int value ATTRIBUTE_UNUSED) | |
66 | { | |
67 | insn |= ((value >> 0) & 0xffffff) << 0; | |
68 | ||
69 | return insn; | |
70 | } | |
71 | ||
72 | #endif /* REPLACE_bits24 */ | |
73 | ||
74 | /* mask = 11111111111111111111111111111111. */ | |
75 | #ifndef REPLACE_word32 | |
76 | #define REPLACE_word32 | |
77 | ATTRIBUTE_UNUSED static unsigned | |
78 | replace_word32 (unsigned insn, int value ATTRIBUTE_UNUSED) | |
79 | { | |
80 | insn |= ((value >> 0) & 0xffffffff) << 0; | |
81 | ||
82 | return insn; | |
83 | } | |
84 | ||
85 | #endif /* REPLACE_word32 */ | |
86 | ||
87 | /* mask = 0000000000000000000000000000000011111111111111111111111111111111. */ | |
88 | #ifndef REPLACE_limm | |
89 | #define REPLACE_limm | |
90 | ATTRIBUTE_UNUSED static unsigned | |
91 | replace_limm (unsigned insn, int value ATTRIBUTE_UNUSED) | |
92 | { | |
93 | insn |= ((value >> 0) & 0xffffffff) << 0; | |
94 | ||
95 | return insn; | |
96 | } | |
97 | ||
98 | #endif /* REPLACE_limm */ | |
99 | ||
100 | /* mask = 000000000000000011111111111111111111111111111111. */ | |
101 | #ifndef REPLACE_limms | |
102 | #define REPLACE_limms | |
103 | ATTRIBUTE_UNUSED static unsigned | |
104 | replace_limms (unsigned insn, int value ATTRIBUTE_UNUSED) | |
105 | { | |
106 | insn |= ((value >> 0) & 0xffffffff) << 0; | |
107 | ||
108 | return insn; | |
109 | } | |
110 | ||
111 | #endif /* REPLACE_limms */ | |
112 | ||
113 | /* mask = 00000111111111102222222222000000. */ | |
114 | #ifndef REPLACE_disp21h | |
115 | #define REPLACE_disp21h | |
116 | ATTRIBUTE_UNUSED static unsigned | |
117 | replace_disp21h (unsigned insn, int value ATTRIBUTE_UNUSED) | |
118 | { | |
119 | insn |= ((value >> 0) & 0x03ff) << 17; | |
120 | insn |= ((value >> 10) & 0x03ff) << 6; | |
121 | ||
122 | return insn; | |
123 | } | |
124 | ||
125 | #endif /* REPLACE_disp21h */ | |
126 | ||
127 | /* mask = 00000111111111002222222222000000. */ | |
128 | #ifndef REPLACE_disp21w | |
129 | #define REPLACE_disp21w | |
130 | ATTRIBUTE_UNUSED static unsigned | |
131 | replace_disp21w (unsigned insn, int value ATTRIBUTE_UNUSED) | |
132 | { | |
133 | insn |= ((value >> 0) & 0x01ff) << 18; | |
134 | insn |= ((value >> 9) & 0x03ff) << 6; | |
135 | ||
136 | return insn; | |
137 | } | |
138 | ||
139 | #endif /* REPLACE_disp21w */ | |
140 | ||
141 | /* mask = 00000111111111102222222222003333. */ | |
142 | #ifndef REPLACE_disp25h | |
143 | #define REPLACE_disp25h | |
144 | ATTRIBUTE_UNUSED static unsigned | |
145 | replace_disp25h (unsigned insn, int value ATTRIBUTE_UNUSED) | |
146 | { | |
147 | insn |= ((value >> 0) & 0x03ff) << 17; | |
148 | insn |= ((value >> 10) & 0x03ff) << 6; | |
149 | insn |= ((value >> 20) & 0x000f) << 0; | |
150 | ||
151 | return insn; | |
152 | } | |
153 | ||
154 | #endif /* REPLACE_disp25h */ | |
155 | ||
156 | /* mask = 00000111111111002222222222003333. */ | |
157 | #ifndef REPLACE_disp25w | |
158 | #define REPLACE_disp25w | |
159 | ATTRIBUTE_UNUSED static unsigned | |
160 | replace_disp25w (unsigned insn, int value ATTRIBUTE_UNUSED) | |
161 | { | |
162 | insn |= ((value >> 0) & 0x01ff) << 18; | |
163 | insn |= ((value >> 9) & 0x03ff) << 6; | |
164 | insn |= ((value >> 19) & 0x000f) << 0; | |
165 | ||
166 | return insn; | |
167 | } | |
168 | ||
169 | #endif /* REPLACE_disp25w */ | |
170 | ||
171 | /* mask = 00000000000000000000000111111111. */ | |
172 | #ifndef REPLACE_disp9 | |
173 | #define REPLACE_disp9 | |
174 | ATTRIBUTE_UNUSED static unsigned | |
175 | replace_disp9 (unsigned insn, int value ATTRIBUTE_UNUSED) | |
176 | { | |
177 | insn |= ((value >> 0) & 0x01ff) << 0; | |
178 | ||
179 | return insn; | |
180 | } | |
181 | ||
182 | #endif /* REPLACE_disp9 */ | |
183 | ||
184 | /* mask = 00000000111111112000000000000000. */ | |
185 | #ifndef REPLACE_disp9ls | |
186 | #define REPLACE_disp9ls | |
187 | ATTRIBUTE_UNUSED static unsigned | |
188 | replace_disp9ls (unsigned insn, int value ATTRIBUTE_UNUSED) | |
189 | { | |
190 | insn |= ((value >> 0) & 0x00ff) << 16; | |
191 | insn |= ((value >> 8) & 0x0001) << 15; | |
192 | ||
193 | return insn; | |
194 | } | |
195 | ||
196 | #endif /* REPLACE_disp9ls */ | |
197 | ||
198 | /* mask = 0000000111111111. */ | |
199 | #ifndef REPLACE_disp9s | |
200 | #define REPLACE_disp9s | |
201 | ATTRIBUTE_UNUSED static unsigned | |
202 | replace_disp9s (unsigned insn, int value ATTRIBUTE_UNUSED) | |
203 | { | |
204 | insn |= ((value >> 0) & 0x01ff) << 0; | |
205 | ||
206 | return insn; | |
207 | } | |
208 | ||
209 | #endif /* REPLACE_disp9s */ | |
210 | ||
211 | /* mask = 0000011111111111. */ | |
212 | #ifndef REPLACE_disp13s | |
213 | #define REPLACE_disp13s | |
214 | ATTRIBUTE_UNUSED static unsigned | |
215 | replace_disp13s (unsigned insn, int value ATTRIBUTE_UNUSED) | |
216 | { | |
217 | insn |= ((value >> 0) & 0x07ff) << 0; | |
218 | ||
219 | return insn; | |
220 | } | |
221 | ||
222 | #endif /* REPLACE_disp13s */ | |
223 | ||
224 | /* mask = 0000022222200111. */ | |
225 | #ifndef REPLACE_disp9s1 | |
226 | #define REPLACE_disp9s1 | |
227 | ATTRIBUTE_UNUSED static unsigned | |
228 | replace_disp9s1 (unsigned insn, int value ATTRIBUTE_UNUSED) | |
229 | { | |
230 | insn |= ((value >> 0) & 0x0007) << 0; | |
231 | insn |= ((value >> 3) & 0x003f) << 5; | |
232 | ||
233 | return insn; | |
234 | } | |
235 | ||
236 | #endif /* REPLACE_disp9s1 */ |