Touches most files in bfd/, so likely will be blamed for everything..
[deliverable/binutils-gdb.git] / bfd / cpu-sh.c
CommitLineData
252b5132 1/* BFD library support routines for the Hitachi-SH architecture.
dc810e39
AM
2 Copyright 1993, 1994, 1997, 1998, 2000, 2001
3 Free Software Foundation, Inc.
252b5132
RH
4 Hacked by Steve Chamberlain of Cygnus Support.
5
6This file is part of BFD, the Binary File Descriptor library.
7
8This program is free software; you can redistribute it and/or modify
9it under the terms of the GNU General Public License as published by
10the Free Software Foundation; either version 2 of the License, or
11(at your option) any later version.
12
13This program is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
19along with this program; if not, write to the Free Software
20Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
21
22#include "bfd.h"
23#include "sysdep.h"
24#include "libbfd.h"
25
dc810e39
AM
26static boolean scan_mach
27 PARAMS ((const struct bfd_arch_info *, const char *));
28
71f6b586 29static boolean
252b5132
RH
30scan_mach (info, string)
31 const struct bfd_arch_info *info;
32 const char *string;
33{
34 if (strcasecmp (info->printable_name, string) == 0)
35 return true;
36 return false;
37}
38
252b5132
RH
39#if 0
40/* This routine is provided two arch_infos and returns whether
41 they'd be compatible */
42
43static const bfd_arch_info_type *
44compatible (a,b)
45 const bfd_arch_info_type *a;
46 const bfd_arch_info_type *b;
47{
48 if (a->arch != b->arch || a->mach != b->mach)
49 return NULL;
50 return a;
51}
52#endif
53
38b1a46c
NC
54#define SH_NEXT &arch_info_struct[0]
55#define SH2_NEXT &arch_info_struct[1]
56#define SH_DSP_NEXT &arch_info_struct[2]
57#define SH3_NEXT &arch_info_struct[3]
d4845d57 58#define SH3_DSP_NEXT &arch_info_struct[4]
38b1a46c
NC
59#define SH3E_NEXT &arch_info_struct[5]
60#define SH4_NEXT NULL
252b5132 61
71f6b586 62static const bfd_arch_info_type arch_info_struct[] =
252b5132 63{
d4845d57
JR
64 {
65 32, /* 32 bits in a word */
66 32, /* 32 bits in an address */
67 8, /* 8 bits in a byte */
68 bfd_arch_sh,
69 bfd_mach_sh2,
70 "sh", /* arch_name */
71 "sh2", /* printable name */
72 1,
73 false, /* not the default */
74 bfd_default_compatible,
75 scan_mach,
76 SH2_NEXT
77 },
78 {
79 32, /* 32 bits in a word */
80 32, /* 32 bits in an address */
81 8, /* 8 bits in a byte */
82 bfd_arch_sh,
83 bfd_mach_sh_dsp,
84 "sh", /* arch_name */
85 "sh-dsp", /* printable name */
86 1,
87 false, /* not the default */
88 bfd_default_compatible,
89 scan_mach,
90 SH_DSP_NEXT
91 },
252b5132
RH
92 {
93 32, /* 32 bits in a word */
94 32, /* 32 bits in an address */
95 8, /* 8 bits in a byte */
96 bfd_arch_sh,
97 bfd_mach_sh3,
98 "sh", /* arch_name */
99 "sh3", /* printable name */
100 1,
101 false, /* not the default */
102 bfd_default_compatible,
103 scan_mach,
104 SH3_NEXT
105 },
d4845d57
JR
106 {
107 32, /* 32 bits in a word */
108 32, /* 32 bits in an address */
109 8, /* 8 bits in a byte */
110 bfd_arch_sh,
111 bfd_mach_sh3_dsp,
112 "sh", /* arch_name */
113 "sh3-dsp", /* printable name */
114 1,
115 false, /* not the default */
116 bfd_default_compatible,
117 scan_mach,
118 SH3_DSP_NEXT
119 },
252b5132
RH
120 {
121 32, /* 32 bits in a word */
122 32, /* 32 bits in an address */
123 8, /* 8 bits in a byte */
124 bfd_arch_sh,
125 bfd_mach_sh3e,
126 "sh", /* arch_name */
127 "sh3e", /* printable name */
128 1,
129 false, /* not the default */
130 bfd_default_compatible,
131 scan_mach,
132 SH3E_NEXT
133 },
d4845d57
JR
134 {
135 32, /* 32 bits in a word */
136 32, /* 32 bits in an address */
137 8, /* 8 bits in a byte */
138 bfd_arch_sh,
139 bfd_mach_sh4,
140 "sh", /* arch_name */
141 "sh4", /* printable name */
142 1,
143 false, /* not the default */
144 bfd_default_compatible,
145 scan_mach,
146 SH4_NEXT
147 },
252b5132
RH
148};
149
150const bfd_arch_info_type bfd_sh_arch =
151{
152 32, /* 32 bits in a word */
153 32, /* 32 bits in an address */
154 8, /* 8 bits in a byte */
155 bfd_arch_sh,
156 bfd_mach_sh,
157 "sh", /* arch_name */
158 "sh", /* printable name */
159 1,
160 true, /* the default machine */
161 bfd_default_compatible,
162 scan_mach,
163 SH_NEXT
164};
This page took 0.099414 seconds and 4 git commands to generate.