Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6324 serge 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 */