OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [bfd/] [cpu-powerpc.c] - Blame information for rev 97

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 14 khays
/* BFD PowerPC CPU definition
2
   Copyright 1994, 1995, 1996, 2000, 2001, 2002, 2003, 2005, 2007, 2008, 2010
3
   Free Software Foundation, Inc.
4
   Contributed by Ian Lance Taylor, Cygnus Support.
5
 
6
   This file is part of BFD, the Binary File Descriptor library.
7
 
8
   This program 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 of the License, or
11
   (at your option) any later version.
12
 
13
   This program 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 this program; if not, write to the Free Software
20
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
21
   MA 02110-1301, USA.  */
22
 
23
#include "sysdep.h"
24
#include "bfd.h"
25
#include "libbfd.h"
26
 
27
/* The common PowerPC architecture is compatible with the RS/6000.  */
28
 
29
static const bfd_arch_info_type *powerpc_compatible
30
  PARAMS ((const bfd_arch_info_type *, const bfd_arch_info_type *));
31
 
32
static const bfd_arch_info_type *
33
powerpc_compatible (a,b)
34
     const bfd_arch_info_type *a;
35
     const bfd_arch_info_type *b;
36
{
37
  BFD_ASSERT (a->arch == bfd_arch_powerpc);
38
  switch (b->arch)
39
    {
40
    default:
41
      return NULL;
42
    case bfd_arch_powerpc:
43
      return bfd_default_compatible (a, b);
44
    case bfd_arch_rs6000:
45
      if (b->mach == bfd_mach_rs6k)
46
        return a;
47
      return NULL;
48
    }
49
  /*NOTREACHED*/
50
}
51
 
52
const bfd_arch_info_type bfd_powerpc_archs[] =
53
{
54
#if BFD_DEFAULT_TARGET_SIZE == 64
55
  /* Default arch must come first.  */
56
  {
57
    64, /* 64 bits in a word */
58
    64, /* 64 bits in an address */
59
    8,  /* 8 bits in a byte */
60
    bfd_arch_powerpc,
61
    bfd_mach_ppc64,
62
    "powerpc",
63
    "powerpc:common64",
64
    3,
65
    TRUE, /* default for 64 bit target */
66
    powerpc_compatible,
67
    bfd_default_scan,
68
    &bfd_powerpc_archs[1]
69
  },
70
  /* elf32-ppc:ppc_elf_object_p relies on the default 32 bit arch
71
     being immediately after the 64 bit default.  */
72
  {
73
    32, /* 32 bits in a word */
74
    32, /* 32 bits in an address */
75
    8,  /* 8 bits in a byte */
76
    bfd_arch_powerpc,
77
    bfd_mach_ppc, /* for the POWER/PowerPC common architecture */
78
    "powerpc",
79
    "powerpc:common",
80
    3,
81
    FALSE,
82
    powerpc_compatible,
83
    bfd_default_scan,
84
    &bfd_powerpc_archs[2],
85
  },
86
#else
87
  /* Default arch must come first.  */
88
  {
89
    32, /* 32 bits in a word */
90
    32, /* 32 bits in an address */
91
    8,  /* 8 bits in a byte */
92
    bfd_arch_powerpc,
93
    bfd_mach_ppc, /* for the POWER/PowerPC common architecture */
94
    "powerpc",
95
    "powerpc:common",
96
    3,
97
    TRUE, /* default for 32 bit target */
98
    powerpc_compatible,
99
    bfd_default_scan,
100
    &bfd_powerpc_archs[1],
101
  },
102
  /* elf64-ppc:ppc64_elf_object_p relies on the default 64 bit arch
103
     being immediately after the 32 bit default.  */
104
  {
105
    64, /* 64 bits in a word */
106
    64, /* 64 bits in an address */
107
    8,  /* 8 bits in a byte */
108
    bfd_arch_powerpc,
109
    bfd_mach_ppc64,
110
    "powerpc",
111
    "powerpc:common64",
112
    3,
113
    FALSE,
114
    powerpc_compatible,
115
    bfd_default_scan,
116
    &bfd_powerpc_archs[2]
117
  },
118
#endif
119
  {
120
    32, /* 32 bits in a word */
121
    32, /* 32 bits in an address */
122
    8,  /* 8 bits in a byte */
123
    bfd_arch_powerpc,
124
    bfd_mach_ppc_603,
125
    "powerpc",
126
    "powerpc:603",
127
    3,
128
    FALSE, /* not the default */
129
    powerpc_compatible,
130
    bfd_default_scan,
131
    &bfd_powerpc_archs[3]
132
  },
133
  {
134
    32, /* 32 bits in a word */
135
    32, /* 32 bits in an address */
136
    8,  /* 8 bits in a byte */
137
    bfd_arch_powerpc,
138
    bfd_mach_ppc_ec603e,
139
    "powerpc",
140
    "powerpc:EC603e",
141
    3,
142
    FALSE, /* not the default */
143
    powerpc_compatible,
144
    bfd_default_scan,
145
    &bfd_powerpc_archs[4]
146
  },
147
  {
148
    32, /* 32 bits in a word */
149
    32, /* 32 bits in an address */
150
    8,  /* 8 bits in a byte */
151
    bfd_arch_powerpc,
152
    bfd_mach_ppc_604,
153
    "powerpc",
154
    "powerpc:604",
155
    3,
156
    FALSE, /* not the default */
157
    powerpc_compatible,
158
    bfd_default_scan,
159
    &bfd_powerpc_archs[5]
160
  },
161
  {
162
    32, /* 32 bits in a word */
163
    32, /* 32 bits in an address */
164
    8,  /* 8 bits in a byte */
165
    bfd_arch_powerpc,
166
    bfd_mach_ppc_403,
167
    "powerpc",
168
    "powerpc:403",
169
    3,
170
    FALSE, /* not the default */
171
    powerpc_compatible,
172
    bfd_default_scan,
173
    &bfd_powerpc_archs[6]
174
  },
175
  {
176
    32, /* 32 bits in a word */
177
    32, /* 32 bits in an address */
178
    8,  /* 8 bits in a byte */
179
    bfd_arch_powerpc,
180
    bfd_mach_ppc_601,
181
    "powerpc",
182
    "powerpc:601",
183
    3,
184
    FALSE, /* not the default */
185
    powerpc_compatible,
186
    bfd_default_scan,
187
    &bfd_powerpc_archs[7]
188
  },
189
  {
190
    64, /* 64 bits in a word */
191
    64, /* 64 bits in an address */
192
    8,  /* 8 bits in a byte */
193
    bfd_arch_powerpc,
194
    bfd_mach_ppc_620,
195
    "powerpc",
196
    "powerpc:620",
197
    3,
198
    FALSE, /* not the default */
199
    powerpc_compatible,
200
    bfd_default_scan,
201
    &bfd_powerpc_archs[8]
202
  },
203
  {
204
    64, /* 64 bits in a word */
205
    64, /* 64 bits in an address */
206
    8,  /* 8 bits in a byte */
207
    bfd_arch_powerpc,
208
    bfd_mach_ppc_630,
209
    "powerpc",
210
    "powerpc:630",
211
    3,
212
    FALSE, /* not the default */
213
    powerpc_compatible,
214
    bfd_default_scan,
215
    &bfd_powerpc_archs[9]
216
  },
217
  {
218
    64, /* 64 bits in a word */
219
    64, /* 64 bits in an address */
220
    8,  /* 8 bits in a byte */
221
    bfd_arch_powerpc,
222
    bfd_mach_ppc_a35,
223
    "powerpc",
224
    "powerpc:a35",
225
    3,
226
    FALSE, /* not the default */
227
    powerpc_compatible,
228
    bfd_default_scan,
229
    &bfd_powerpc_archs[10]
230
  },
231
  {
232
    64, /* 64 bits in a word */
233
    64, /* 64 bits in an address */
234
    8,  /* 8 bits in a byte */
235
    bfd_arch_powerpc,
236
    bfd_mach_ppc_rs64ii,
237
    "powerpc",
238
    "powerpc:rs64ii",
239
    3,
240
    FALSE, /* not the default */
241
    powerpc_compatible,
242
    bfd_default_scan,
243
    &bfd_powerpc_archs[11]
244
  },
245
  {
246
    64, /* 64 bits in a word */
247
    64, /* 64 bits in an address */
248
    8,  /* 8 bits in a byte */
249
    bfd_arch_powerpc,
250
    bfd_mach_ppc_rs64iii,
251
    "powerpc",
252
    "powerpc:rs64iii",
253
    3,
254
    FALSE, /* not the default */
255
    powerpc_compatible,
256
    bfd_default_scan,
257
    &bfd_powerpc_archs[12]
258
  },
259
  {
260
    32, /* 32 bits in a word */
261
    32, /* 32 bits in an address */
262
    8,  /* 8 bits in a byte */
263
    bfd_arch_powerpc,
264
    bfd_mach_ppc_7400,
265
    "powerpc",
266
    "powerpc:7400",
267
    3,
268
    FALSE, /* not the default */
269
    powerpc_compatible,
270
    bfd_default_scan,
271
    &bfd_powerpc_archs[13]
272
  },
273
  {
274
    32, /* 32 bits in a word */
275
    32, /* 32 bits in an address */
276
    8,  /* 8 bits in a byte */
277
    bfd_arch_powerpc,
278
    bfd_mach_ppc_e500,
279
    "powerpc",
280
    "powerpc:e500",
281
    3,
282
    FALSE,
283
    powerpc_compatible,
284
    bfd_default_scan,
285
    &bfd_powerpc_archs[14]
286
  },
287
  {
288
    32,        /* 32 bits in a word */
289
    32,        /* 32 bits in an address */
290
    8, /* 8 bits in a byte */
291
    bfd_arch_powerpc,
292
    bfd_mach_ppc_e500mc,
293
    "powerpc",
294
    "powerpc:e500mc",
295
    3,
296
    FALSE, /* not the default */
297
    powerpc_compatible,
298
    bfd_default_scan,
299
    &bfd_powerpc_archs[15]
300
  },
301
  {
302
    64, /* 64 bits in a word */
303
    64, /* 64 bits in an address */
304
    8,  /* 8 bits in a byte */
305
    bfd_arch_powerpc,
306
    bfd_mach_ppc_e500mc64,
307
    "powerpc",
308
    "powerpc:e500mc64",
309
    3,
310
    FALSE, /* not the default */
311
    powerpc_compatible,
312
    bfd_default_scan,
313
    &bfd_powerpc_archs[16]
314
  },
315
  {
316
    32,       /* 32 bits in a word */
317
    32,       /* 32 bits in an address */
318
    8,        /* 8 bits in a byte */
319
    bfd_arch_powerpc,
320
    bfd_mach_ppc_860,
321
    "powerpc",
322
    "powerpc:MPC8XX",
323
    3,
324
    FALSE, /* not the default */
325
    powerpc_compatible,
326
    bfd_default_scan,
327
    &bfd_powerpc_archs[17]
328
  },
329
  {
330
    32, /* 32 bits in a word */
331
    32, /* 32 bits in an address */
332
    8,  /* 8 bits in a byte */
333
    bfd_arch_powerpc,
334
    bfd_mach_ppc_750,
335
    "powerpc",
336
    "powerpc:750",
337
    3,
338
    FALSE, /* not the default */
339
    powerpc_compatible,
340
    bfd_default_scan,
341
    &bfd_powerpc_archs[18]
342
  },
343
  {
344
    32, /* 32 bits in a word */
345
    32, /* 32 bits in an address */
346
    8,  /* 8 bits in a byte */
347
    bfd_arch_powerpc,
348
    bfd_mach_ppc_titan,
349
    "powerpc",
350
    "powerpc:titan",
351
    3,
352
    FALSE, /* not the default */
353
    powerpc_compatible,
354
    bfd_default_scan,
355
 
356
  }
357
};

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.