OSDN Git Service

Update copyright notices
[pf3gnuchains/pf3gnuchains4x.git] / bfd / cpu-sh.c
1 /* BFD library support routines for the Hitachi-SH architecture.
2    Copyright 1993, 1994, 1997, 1998, 2000 Free Software Foundation, Inc.
3    Hacked by Steve Chamberlain of 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 static boolean
26 scan_mach (info, string)
27      const struct bfd_arch_info *info;
28      const char *string;
29 {
30   if (strcasecmp (info->printable_name, string) == 0)
31     return true;
32   return false;
33 }
34
35 #if 0
36 /* This routine is provided two arch_infos and returns whether
37    they'd be compatible */
38
39 static const bfd_arch_info_type *
40 compatible (a,b)
41      const bfd_arch_info_type *a;
42      const bfd_arch_info_type *b;
43 {
44   if (a->arch != b->arch || a->mach != b->mach)
45    return NULL;
46   return a;
47 }
48 #endif
49
50 #define SH_NEXT      &arch_info_struct[0]
51 #define SH2_NEXT     &arch_info_struct[1]
52 #define SH_DSP_NEXT  &arch_info_struct[2]
53 #define SH3_NEXT     &arch_info_struct[3]
54 #define SH3_DSP_NEXT &arch_info_struct[4]
55 #define SH3E_NEXT    &arch_info_struct[5]
56 #define SH4_NEXT     NULL
57
58 static const bfd_arch_info_type arch_info_struct[] =
59 {
60   {
61     32,                         /* 32 bits in a word */
62     32,                         /* 32 bits in an address */
63     8,                          /* 8 bits in a byte */
64     bfd_arch_sh,
65     bfd_mach_sh2,
66     "sh",                       /* arch_name  */
67     "sh2",                      /* printable name */
68     1,
69     false,                      /* not the default */
70     bfd_default_compatible,
71     scan_mach,
72     SH2_NEXT
73   },
74   {
75     32,                         /* 32 bits in a word */
76     32,                         /* 32 bits in an address */
77     8,                          /* 8 bits in a byte */
78     bfd_arch_sh,
79     bfd_mach_sh_dsp,
80     "sh",                       /* arch_name  */
81     "sh-dsp",                   /* printable name */
82     1,
83     false,                      /* not the default */
84     bfd_default_compatible,
85     scan_mach,
86     SH_DSP_NEXT
87   },
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_sh,
93     bfd_mach_sh3,
94     "sh",                       /* arch_name  */
95     "sh3",                      /* printable name */
96     1,
97     false,                      /* not the default */
98     bfd_default_compatible,
99     scan_mach,
100     SH3_NEXT
101   },
102   {
103     32,                         /* 32 bits in a word */
104     32,                         /* 32 bits in an address */
105     8,                          /* 8 bits in a byte */
106     bfd_arch_sh,
107     bfd_mach_sh3_dsp,
108     "sh",                       /* arch_name  */
109     "sh3-dsp",                  /* printable name */
110     1,
111     false,                      /* not the default */
112     bfd_default_compatible,
113     scan_mach,
114     SH3_DSP_NEXT
115   },
116   {
117     32,                         /* 32 bits in a word */
118     32,                         /* 32 bits in an address */
119     8,                          /* 8 bits in a byte */
120     bfd_arch_sh,
121     bfd_mach_sh3e,
122     "sh",                       /* arch_name  */
123     "sh3e",                     /* printable name */
124     1,
125     false,                      /* not the default */
126     bfd_default_compatible,
127     scan_mach,
128     SH3E_NEXT
129   },
130   {
131     32,                         /* 32 bits in a word */
132     32,                         /* 32 bits in an address */
133     8,                          /* 8 bits in a byte */
134     bfd_arch_sh,
135     bfd_mach_sh4,
136     "sh",                       /* arch_name  */
137     "sh4",                      /* printable name */
138     1,
139     false,                      /* not the default */
140     bfd_default_compatible,
141     scan_mach,
142     SH4_NEXT
143   },
144 };
145
146 const bfd_arch_info_type bfd_sh_arch =
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_sh,
152   bfd_mach_sh,
153   "sh",                         /* arch_name  */
154   "sh",                         /* printable name */
155   1,
156   true,                         /* the default machine */
157   bfd_default_compatible,
158   scan_mach,
159   SH_NEXT
160 };