]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - bfd/cpu-powerpc.c
Update copyright notices
[thirdparty/binutils-gdb.git] / bfd / cpu-powerpc.c
1 /* BFD PowerPC CPU definition
2 Copyright 1994, 1995, 1996, 2000 Free Software Foundation, Inc.
3 Contributed by Ian Lance Taylor, Cygnus Support.
4
5 This file is part of BFD, the Binary File Descriptor library.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
20
21 #include "bfd.h"
22 #include "sysdep.h"
23 #include "libbfd.h"
24
25 /* The common PowerPC architecture is compatible with the RS/6000. */
26
27 static const bfd_arch_info_type *powerpc_compatible
28 PARAMS ((const bfd_arch_info_type *, const bfd_arch_info_type *));
29
30 static const bfd_arch_info_type *
31 powerpc_compatible (a,b)
32 const bfd_arch_info_type *a;
33 const bfd_arch_info_type *b;
34 {
35 BFD_ASSERT (a->arch == bfd_arch_powerpc);
36 switch (b->arch)
37 {
38 default:
39 return NULL;
40 case bfd_arch_powerpc:
41 return bfd_default_compatible (a, b);
42 case bfd_arch_rs6000:
43 if (a->mach == 0)
44 return a;
45 return NULL;
46 }
47 /*NOTREACHED*/
48 }
49
50 static const bfd_arch_info_type arch_info_struct[] =
51 {
52 {
53 32, /* 32 bits in a word */
54 32, /* 32 bits in an address */
55 8, /* 8 bits in a byte */
56 bfd_arch_powerpc,
57 bfd_mach_ppc_603,
58 "powerpc",
59 "powerpc:603",
60 3,
61 false, /* not the default */
62 powerpc_compatible,
63 bfd_default_scan,
64 &arch_info_struct[1]
65 },
66 {
67 32, /* 32 bits in a word */
68 32, /* 32 bits in an address */
69 8, /* 8 bits in a byte */
70 bfd_arch_powerpc,
71 bfd_mach_ppc_ec603e,
72 "powerpc",
73 "powerpc:EC603e",
74 3,
75 false, /* not the default */
76 powerpc_compatible,
77 bfd_default_scan,
78 &arch_info_struct[2]
79 },
80 {
81 32, /* 32 bits in a word */
82 32, /* 32 bits in an address */
83 8, /* 8 bits in a byte */
84 bfd_arch_powerpc,
85 bfd_mach_ppc_604,
86 "powerpc",
87 "powerpc:604",
88 3,
89 false, /* not the default */
90 powerpc_compatible,
91 bfd_default_scan,
92 &arch_info_struct[3]
93 },
94 {
95 32, /* 32 bits in a word */
96 32, /* 32 bits in an address */
97 8, /* 8 bits in a byte */
98 bfd_arch_powerpc,
99 bfd_mach_ppc_403,
100 "powerpc",
101 "powerpc:403",
102 3,
103 false, /* not the default */
104 powerpc_compatible,
105 bfd_default_scan,
106 &arch_info_struct[4]
107 },
108 {
109 32, /* 32 bits in a word */
110 32, /* 32 bits in an address */
111 8, /* 8 bits in a byte */
112 bfd_arch_powerpc,
113 bfd_mach_ppc_601,
114 "powerpc",
115 "powerpc:601",
116 3,
117 false, /* not the default */
118 powerpc_compatible,
119 bfd_default_scan,
120 &arch_info_struct[5]
121 },
122 {
123 64, /* 64 bits in a word */
124 64, /* 64 bits in an address */
125 8, /* 8 bits in a byte */
126 bfd_arch_powerpc,
127 bfd_mach_ppc_620,
128 "powerpc",
129 "powerpc:620",
130 3,
131 false, /* not the default */
132 powerpc_compatible,
133 bfd_default_scan,
134 &arch_info_struct[6]
135 },
136 {
137 64, /* 64 bits in a word */
138 64, /* 64 bits in an address */
139 8, /* 8 bits in a byte */
140 bfd_arch_powerpc,
141 bfd_mach_ppc_630,
142 "powerpc",
143 "powerpc:630",
144 3,
145 false, /* not the default */
146 powerpc_compatible,
147 bfd_default_scan,
148 &arch_info_struct[7]
149 },
150 {
151 64, /* 64 bits in a word */
152 64, /* 64 bits in an address */
153 8, /* 8 bits in a byte */
154 bfd_arch_powerpc,
155 bfd_mach_ppc_a35,
156 "powerpc",
157 "powerpc:a35",
158 3,
159 false, /* not the default */
160 powerpc_compatible,
161 bfd_default_scan,
162 &arch_info_struct[8]
163 },
164 {
165 64, /* 64 bits in a word */
166 64, /* 64 bits in an address */
167 8, /* 8 bits in a byte */
168 bfd_arch_powerpc,
169 bfd_mach_ppc_rs64ii,
170 "powerpc",
171 "powerpc:rs64ii",
172 3,
173 false, /* not the default */
174 powerpc_compatible,
175 bfd_default_scan,
176 &arch_info_struct[9]
177 },
178 {
179 64, /* 64 bits in a word */
180 64, /* 64 bits in an address */
181 8, /* 8 bits in a byte */
182 bfd_arch_powerpc,
183 bfd_mach_ppc_rs64iii,
184 "powerpc",
185 "powerpc:rs64iii",
186 3,
187 false, /* not the default */
188 powerpc_compatible,
189 bfd_default_scan,
190 &arch_info_struct[10]
191 },
192 {
193 32, /* 32 bits in a word */
194 32, /* 32 bits in an address */
195 8, /* 8 bits in a byte */
196 bfd_arch_powerpc,
197 bfd_mach_ppc_7400,
198 "powerpc",
199 "powerpc:7400",
200 3,
201 false, /* not the default */
202 powerpc_compatible,
203 bfd_default_scan,
204 &arch_info_struct[11]
205 },
206 {
207 32, /* 32 bits in a word */
208 32, /* 32 bits in an address */
209 8, /* 8 bits in a byte */
210 bfd_arch_powerpc,
211 bfd_mach_ppc_860,
212 "powerpc",
213 "powerpc:MPC8XX",
214 3,
215 false, /* not the default */
216 powerpc_compatible,
217 bfd_default_scan,
218 0
219 }
220 };
221
222 const bfd_arch_info_type bfd_powerpc_arch =
223 {
224 32, /* 32 bits in a word */
225 32, /* 32 bits in an address */
226 8, /* 8 bits in a byte */
227 bfd_arch_powerpc,
228 bfd_mach_ppc, /* for the POWER/PowerPC common architecture */
229 "powerpc",
230 "powerpc:common",
231 3,
232 true, /* the default */
233 powerpc_compatible,
234 bfd_default_scan,
235 &arch_info_struct[0]
236 };