* coffcode.h: Include libiberty.h.
[deliverable/binutils-gdb.git] / bfd / cpu-msp430.c
CommitLineData
2469cfa2 1/* BFD library support routines for the MSP architecture.
aa820537 2 Copyright (C) 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
2469cfa2
NC
3 Contributed by Dmitry Diky <diwil@mail.ru>
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
cd123cb7 9 the Free Software Foundation; either version 3 of the License, or
2469cfa2
NC
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
cd123cb7
NC
19 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
20 MA 02110-1301, USA. */
2469cfa2 21
2469cfa2 22#include "sysdep.h"
3db64b00 23#include "bfd.h"
2469cfa2
NC
24#include "libbfd.h"
25
26static const bfd_arch_info_type *compatible
27 PARAMS ((const bfd_arch_info_type *, const bfd_arch_info_type *));
28
29#define N(addr_bits, machine, print, default, next) \
30{ \
31 16, /* 16 bits in a word. */ \
32 addr_bits, /* Bits in an address. */ \
33 8, /* 8 bits in a byte. */ \
34 bfd_arch_msp430, \
35 machine, /* Machine number. */ \
36 "msp430", /* Architecture name. */ \
37 print, /* Printable name. */ \
38 1, /* Section align power. */ \
39 default, /* The default machine. */ \
40 compatible, \
41 bfd_default_scan, \
42 next \
43}
44
45static const bfd_arch_info_type arch_info_struct[] =
46{
47 /* msp430x11x. */
48 N (16, bfd_mach_msp11, "msp:11", FALSE, & arch_info_struct[1]),
49
3b260895
NC
50 /* msp430x11x1. */
51 N (16, bfd_mach_msp110, "msp:110", FALSE, & arch_info_struct[2]),
52
2469cfa2 53 /* msp430x12x. */
3b260895 54 N (16, bfd_mach_msp12, "msp:12", FALSE, & arch_info_struct[3]),
2469cfa2
NC
55
56 /* msp430x13x. */
3b260895 57 N (16, bfd_mach_msp13, "msp:13", FALSE, & arch_info_struct[4]),
2469cfa2
NC
58
59 /* msp430x14x. */
3b260895
NC
60 N (16, bfd_mach_msp14, "msp:14", FALSE, & arch_info_struct[5]),
61
62 /* msp430x15x. */
63 N (16, bfd_mach_msp15, "msp:15", FALSE, & arch_info_struct[6]),
64
65 /* msp430x16x. */
66 N (16, bfd_mach_msp16, "msp:16", FALSE, & arch_info_struct[7]),
2469cfa2 67
3260c64d
NC
68 /* msp430x21x. */
69 N (16, bfd_mach_msp21, "msp:21", FALSE, & arch_info_struct[8]),
70
2469cfa2 71 /* msp430x31x. */
3260c64d 72 N (16, bfd_mach_msp31, "msp:31", FALSE, & arch_info_struct[9]),
2469cfa2
NC
73
74 /* msp430x32x. */
3260c64d 75 N (16, bfd_mach_msp32, "msp:32", FALSE, & arch_info_struct[10]),
2469cfa2
NC
76
77 /* msp430x33x. */
3260c64d 78 N (16, bfd_mach_msp33, "msp:33", FALSE, & arch_info_struct[11]),
2469cfa2
NC
79
80 /* msp430x41x. */
3260c64d 81 N (16, bfd_mach_msp41, "msp:41", FALSE, & arch_info_struct[12]),
3b260895
NC
82
83 /* msp430x42x. */
3260c64d 84 N (16, bfd_mach_msp42, "msp:42", FALSE, & arch_info_struct[13]),
2469cfa2
NC
85
86 /* msp430x43x. */
3260c64d 87 N (16, bfd_mach_msp43, "msp:43", FALSE, & arch_info_struct[14]),
2469cfa2
NC
88
89 /* msp430x44x. */
3b260895 90 N (16, bfd_mach_msp43, "msp:44", FALSE, NULL)
2469cfa2
NC
91};
92
93const bfd_arch_info_type bfd_msp430_arch =
94 N (16, bfd_mach_msp14, "msp:14", TRUE, & arch_info_struct[0]);
95
96/* This routine is provided two arch_infos and works out which MSP
97 machine which would be compatible with both and returns a pointer
98 to its info structure. */
99
100static const bfd_arch_info_type *
101compatible (a,b)
102 const bfd_arch_info_type * a;
103 const bfd_arch_info_type * b;
104{
105 /* If a & b are for different architectures we can do nothing. */
106 if (a->arch != b->arch)
107 return NULL;
108
109 if (a->mach <= b->mach)
110 return b;
111
112 return a;
113}
This page took 0.426493 seconds and 4 git commands to generate.