source: trunk/third/binutils/bfd/cpu-mips.c @ 16965

Revision 16965, 3.5 KB checked in by ghudson, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r16964, which included commits to RCS files with non-trunk default branches.
Line 
1/* bfd back-end for mips support
2   Copyright 1990, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 2000
3   Free Software Foundation, Inc.
4   Written 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
26#define N(BITS_WORD, BITS_ADDR, NUMBER, PRINT, DEFAULT, NEXT)           \
27  {                                                     \
28    BITS_WORD, /*  bits in a word */                    \
29    BITS_ADDR, /* bits in an address */                 \
30    8,  /* 8 bits in a byte */                          \
31    bfd_arch_mips,                                      \
32    NUMBER,                                             \
33    "mips",                                             \
34    PRINT,                                              \
35    3,                                                  \
36    DEFAULT,                                            \
37    bfd_default_compatible,                             \
38    bfd_default_scan,                                   \
39    NEXT,                                               \
40  }
41
42enum
43{
44  I_mips3000,
45  I_mips3900,
46  I_mips4000,
47  I_mips4010,
48  I_mips4100,
49  I_mips4111,
50  I_mips4300,
51  I_mips4400,
52  I_mips4600,
53  I_mips4650,
54  I_mips5000,
55  I_mips6000,
56  I_mips8000,
57  I_mips10000,
58  I_mips12000,
59  I_mips16,
60  I_mips32,
61  I_mips32_4k,
62  I_mips5,
63  I_mips64,
64  I_sb1,
65};
66
67#define NN(index) (&arch_info_struct[(index) + 1])
68
69static const bfd_arch_info_type arch_info_struct[] =
70{
71  N (32, 32, bfd_mach_mips3000, "mips:3000",      false, NN(I_mips3000)),
72  N (32, 32, bfd_mach_mips3900, "mips:3900",      false, NN(I_mips3900)),
73  N (64, 64, bfd_mach_mips4000, "mips:4000",      false, NN(I_mips4000)),
74  N (64, 64, bfd_mach_mips4010, "mips:4010",      false, NN(I_mips4010)),
75  N (64, 64, bfd_mach_mips4100, "mips:4100",      false, NN(I_mips4100)),
76  N (64, 64, bfd_mach_mips4111, "mips:4111",      false, NN(I_mips4111)),
77  N (64, 64, bfd_mach_mips4300, "mips:4300",      false, NN(I_mips4300)),
78  N (64, 64, bfd_mach_mips4400, "mips:4400",      false, NN(I_mips4400)),
79  N (64, 64, bfd_mach_mips4600, "mips:4600",      false, NN(I_mips4600)),
80  N (64, 64, bfd_mach_mips4650, "mips:4650",      false, NN(I_mips4650)),
81  N (64, 64, bfd_mach_mips5000, "mips:5000",      false, NN(I_mips5000)),
82  N (32, 32, bfd_mach_mips6000, "mips:6000",      false, NN(I_mips6000)),
83  N (64, 64, bfd_mach_mips8000, "mips:8000",      false, NN(I_mips8000)),
84  N (64, 64, bfd_mach_mips10000,"mips:10000",     false, NN(I_mips10000)),
85  N (64, 64, bfd_mach_mips12000,"mips:12000",     false, NN(I_mips12000)),
86  N (64, 64, bfd_mach_mips16,   "mips:16",        false, NN(I_mips16)),
87  N (32, 32, bfd_mach_mips32,   "mips:mips32",    false, NN(I_mips32)),
88  N (32, 32, bfd_mach_mips32_4k,"mips:mips32-4k", false, NN(I_mips32_4k)),
89  N (64, 64, bfd_mach_mips5,    "mips:mips5",     false, NN(I_mips5)),
90  N (64, 64, bfd_mach_mips64,   "mips:mips64",    false, NN(I_mips64)),
91  N (64, 64, bfd_mach_mips_sb1, "mips:sb1",       false, 0),
92};
93
94/* The default architecture is mips:3000, but with a machine number of
95   zero.  This lets the linker distinguish between a default setting
96   of mips, and an explicit setting of mips:3000.  */
97
98const bfd_arch_info_type bfd_mips_arch =
99N (32, 32, 0, "mips", true, &arch_info_struct[0]);
Note: See TracBrowser for help on using the repository browser.