19990502 sourceware import
[external/binutils.git] / bfd / cpu-sh.c
1 /* BFD library support routines for the Hitachi-SH architecture.
2    Copyright (C) 1993 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
26 static boolean 
27 scan_mach (info, string)
28      const struct bfd_arch_info *info;
29      const char *string;
30 {
31   if (strcasecmp (info->printable_name, string) == 0)
32     return true;
33   return false;
34 }
35
36
37 #if 0
38 /* This routine is provided two arch_infos and returns whether
39    they'd be compatible */
40
41 static const bfd_arch_info_type *
42 compatible (a,b)
43      const bfd_arch_info_type *a;
44      const bfd_arch_info_type *b;
45 {
46   if (a->arch != b->arch || a->mach != b->mach)
47    return NULL;
48   return a;
49 }
50 #endif
51
52 #define SH_NEXT &arch_info_struct[0]
53 #define SH3_NEXT &arch_info_struct[1]
54 #define SH3E_NEXT NULL
55
56 static const bfd_arch_info_type arch_info_struct[] = 
57 {
58   {
59     32,                         /* 32 bits in a word */
60     32,                         /* 32 bits in an address */
61     8,                          /* 8 bits in a byte */
62     bfd_arch_sh,
63     bfd_mach_sh3,
64     "sh",                       /* arch_name  */
65     "sh3",                      /* printable name */
66     1,
67     false,                      /* not the default */
68     bfd_default_compatible,
69     scan_mach,
70     SH3_NEXT
71   },
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_sh,
77     bfd_mach_sh3e,
78     "sh",                       /* arch_name  */
79     "sh3e",                     /* printable name */
80     1,
81     false,                      /* not the default */
82     bfd_default_compatible,
83     scan_mach,
84     SH3E_NEXT
85   },
86 };
87
88 const bfd_arch_info_type bfd_sh_arch =
89 {
90   32,                           /* 32 bits in a word */
91   32,                           /* 32 bits in an address */
92   8,                            /* 8 bits in a byte */
93   bfd_arch_sh,
94   bfd_mach_sh,
95   "sh",                         /* arch_name  */
96   "sh",                         /* printable name */
97   1,
98   true,                         /* the default machine */
99   bfd_default_compatible,
100   scan_mach,
101   SH_NEXT
102 };