OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [binutils-2.20.1/] [bfd/] [cpu-cris.c] - Blame information for rev 846

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 205 julius
/* BFD support for the Axis CRIS architecture.
2
   Copyright 2000, 2002, 2004, 2005, 2007
3
   Free Software Foundation, Inc.
4
   Contributed by Axis Communications AB.
5
   Written by Hans-Peter Nilsson.
6
 
7
   This file is part of BFD, the Binary File Descriptor library.
8
 
9
   This program is free software; you can redistribute it and/or modify
10
   it under the terms of the GNU General Public License as published by
11
   the Free Software Foundation; either version 3 of the License, or
12
   (at your option) any later version.
13
 
14
   This program is distributed in the hope that it will be useful,
15
   but WITHOUT ANY WARRANTY; without even the implied warranty of
16
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
   GNU General Public License for more details.
18
 
19
   You should have received a copy of the GNU General Public License
20
   along with this program; if not, write to the Free Software
21
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
22
   MA 02110-1301, USA.  */
23
 
24
#include "sysdep.h"
25
#include "bfd.h"
26
#include "libbfd.h"
27
 
28
/* This routine is provided two arch_infos and returns the lowest common
29
   denominator.  CRIS v0..v10 vs. v32 are not compatible in general, but
30
   there's a compatible subset for which we provide an arch_info.  */
31
 
32
static const bfd_arch_info_type * get_compatible
33
  PARAMS ((const bfd_arch_info_type *, const bfd_arch_info_type *));
34
 
35
static const bfd_arch_info_type *
36
get_compatible (a,b)
37
     const bfd_arch_info_type *a;
38
     const bfd_arch_info_type *b;
39
{
40
  /* Arches must match.  */
41
  if (a->arch != b->arch)
42
   return NULL;
43
 
44
  /* If either is the compatible mach, return the other.  */
45
  if (a->mach == bfd_mach_cris_v10_v32)
46
    return b;
47
  if (b->mach == bfd_mach_cris_v10_v32)
48
    return a;
49
 
50
#if 0
51
  /* The code below is disabled but kept as a warning.
52
     See ldlang.c:lang_check.  Quite illogically, incompatible arches
53
     (as signalled by this function) are only *warned* about, while with
54
     this function signalling compatible ones, we can have the
55
     cris_elf_merge_private_bfd_data function return an error.  This is
56
     undoubtedly a FIXME: in general.  Also, the
57
     command_line.warn_mismatch flag and the --no-warn-mismatch option
58
     are misnamed for the multitude of ports that signal compatibility:
59
     it is there an error, not a warning.  We work around it by
60
     pretending matching machs here.  */
61
 
62
  /* Except for the compatible mach, machs must match.  */
63
  if (a->mach != b->mach)
64
    return NULL;
65
#endif
66
 
67
  return a;
68
}
69
 
70
#define N(NUMBER, PRINT, NEXT)  \
71
 { 32, 32, 8, bfd_arch_cris, NUMBER, "cris", PRINT, 1, FALSE, \
72
   get_compatible, bfd_default_scan, NEXT }
73
 
74
static const bfd_arch_info_type bfd_cris_arch_compat_v10_v32 =
75
 N (bfd_mach_cris_v10_v32, "cris:common_v10_v32", NULL);
76
 
77
static const bfd_arch_info_type bfd_cris_arch_v32 =
78
 N (bfd_mach_cris_v32, "crisv32", &bfd_cris_arch_compat_v10_v32);
79
 
80
const bfd_arch_info_type bfd_cris_arch =
81
{
82
  32,                           /* There's 32 bits_per_word.  */
83
  32,                           /* There's 32 bits_per_address.  */
84
  8,                            /* There's 8 bits_per_byte.  */
85
  bfd_arch_cris,                /* One of enum bfd_architecture, defined
86
                                   in archures.c and provided in
87
                                   generated header files.  */
88
  bfd_mach_cris_v0_v10,         /* Random BFD-internal number for this
89
                                   machine, similarly listed in
90
                                   archures.c.  Not emitted in output.  */
91
  "cris",                       /* The arch_name.  */
92
  "cris",                       /* The printable name is the same.  */
93
  1,                            /* Section alignment power; each section
94
                                   is aligned to (only) 2^1 bytes.  */
95
  TRUE,                         /* This is the default "machine".  */
96
  get_compatible,               /* A function for testing
97
                                   "machine" compatibility of two
98
                                   bfd_arch_info_type.  */
99
  bfd_default_scan,             /* Check if a bfd_arch_info_type is a
100
                                   match.  */
101
  &bfd_cris_arch_v32            /* Pointer to next bfd_arch_info_type in
102
                                   the same family.  */
103
};
104
 
105
/*
106
 * Local variables:
107
 * eval: (c-set-style "gnu")
108
 * indent-tabs-mode: t
109
 * End:
110
 */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.