~ubuntu-branches/ubuntu/quantal/gclcvs/quantal

« back to all changes in this revision

Viewing changes to binutils/bfd/cpu-v850.c

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2004-06-24 15:13:46 UTC
  • Revision ID: james.westby@ubuntu.com-20040624151346-xh0xaaktyyp7aorc
Tags: 2.7.0-26
C_GC_OFFSET is 2 on m68k-linux

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* BFD support for the NEC V850 processor
 
2
   Copyright 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
 
3
 
 
4
This file is part of BFD, the Binary File Descriptor library.
 
5
 
 
6
This program is free software; you can redistribute it and/or modify
 
7
it under the terms of the GNU General Public License as published by
 
8
the Free Software Foundation; either version 2 of the License, or
 
9
(at your option) any later version.
 
10
 
 
11
This program is distributed in the hope that it will be useful,
 
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
GNU General Public License for more details.
 
15
 
 
16
You should have received a copy of the GNU General Public License
 
17
along with this program; if not, write to the Free Software
 
18
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
19
 
 
20
#include "bfd.h"
 
21
#include "sysdep.h"
 
22
#include "libbfd.h"
 
23
#include "safe-ctype.h"
 
24
 
 
25
static boolean scan PARAMS ((const struct bfd_arch_info *, const char *));
 
26
 
 
27
static boolean
 
28
scan (info, string)
 
29
     const struct bfd_arch_info * info;
 
30
     const char * string;
 
31
{
 
32
  const char *ptr_src;
 
33
  const char *ptr_tst;
 
34
  unsigned long number;
 
35
  enum bfd_architecture arch;
 
36
 
 
37
  /* First test for an exact match.  */
 
38
  if (strcasecmp (string, info->printable_name) == 0)
 
39
    return true;
 
40
 
 
41
  /* See how much of the supplied string matches with the
 
42
     architecture, eg the string m68k:68020 would match the m68k entry
 
43
     up to the :, then we get left with the machine number.  */
 
44
  for (ptr_src = string, ptr_tst = info->arch_name;
 
45
       *ptr_src && *ptr_tst;
 
46
       ptr_src++, ptr_tst++)
 
47
    if (*ptr_src != *ptr_tst)
 
48
      break;
 
49
 
 
50
  /* Chewed up as much of the architecture as will match;
 
51
     if there is a colon present skip it.  */
 
52
  if (*ptr_src == ':')
 
53
    ptr_src ++;
 
54
 
 
55
  if (*ptr_src == 0)
 
56
    /* Nothing more, then only keep this one if it is
 
57
       the default machine for this architecture.  */
 
58
    return info->the_default;
 
59
 
 
60
  number = 0;
 
61
  while (ISDIGIT (*ptr_src))
 
62
    {
 
63
      number = number * 10 + * ptr_src  - '0';
 
64
      ptr_src ++;
 
65
    }
 
66
 
 
67
  switch (number)
 
68
    {
 
69
    case bfd_mach_v850e:  arch = bfd_arch_v850; break;
 
70
    case bfd_mach_v850ea: arch = bfd_arch_v850; break;
 
71
    default:
 
72
      return false;
 
73
    }
 
74
 
 
75
  if (arch != info->arch)
 
76
    return false;
 
77
 
 
78
  if (number != info->mach)
 
79
    return false;
 
80
 
 
81
  return true;
 
82
}
 
83
 
 
84
#define N(number, print, default, next)  \
 
85
{  32, 32, 8, bfd_arch_v850, number, "v850", print, 2, default, \
 
86
     bfd_default_compatible, scan, next }
 
87
 
 
88
#define NEXT NULL
 
89
 
 
90
static const bfd_arch_info_type arch_info_struct[] =
 
91
{
 
92
  N (bfd_mach_v850e,  "v850e",  false, & arch_info_struct[1]),
 
93
  N (bfd_mach_v850ea, "v850ea", false, NULL)
 
94
};
 
95
 
 
96
#undef  NEXT
 
97
#define NEXT & arch_info_struct[0]
 
98
 
 
99
const bfd_arch_info_type bfd_v850_arch =
 
100
  N (bfd_mach_v850, "v850", true, NEXT);