/[gcl]/gcl/binutils/bfd/cpu-cris.c
ViewVC logotype

Diff of /gcl/binutils/bfd/cpu-cris.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1.1.1 by camm, Fri Aug 9 05:35:01 2002 UTC revision 1.2 by camm, Fri Sep 9 23:32:08 2005 UTC
# Line 1  Line 1 
1  /* BFD support for the Axis CRIS architecture.  /* BFD support for the Axis CRIS architecture.
2     Copyright 2000 Free Software Foundation, Inc.     Copyright 2000, 2002, 2004, 2005 Free Software Foundation, Inc.
3     Contributed by Axis Communications AB.     Contributed by Axis Communications AB.
4     Written by Hans-Peter Nilsson.     Written by Hans-Peter Nilsson.
5    
# Line 23  Foundation, Inc., 59 Temple Place - Suit Line 23  Foundation, Inc., 59 Temple Place - Suit
23  #include "sysdep.h"  #include "sysdep.h"
24  #include "libbfd.h"  #include "libbfd.h"
25    
26  const bfd_arch_info_type  /* This routine is provided two arch_infos and returns the lowest common
27  bfd_cris_arch =     denominator.  CRIS v0..v10 vs. v32 are not compatible in general, but
28       there's a compatible subset for which we provide an arch_info.  */
29    
30    static const bfd_arch_info_type * get_compatible
31      PARAMS ((const bfd_arch_info_type *, const bfd_arch_info_type *));
32    
33    static const bfd_arch_info_type *
34    get_compatible (a,b)
35         const bfd_arch_info_type *a;
36         const bfd_arch_info_type *b;
37    {
38      /* Arches must match.  */
39      if (a->arch != b->arch)
40       return NULL;
41    
42      /* If either is the compatible mach, return the other.  */
43      if (a->mach == bfd_mach_cris_v10_v32)
44        return b;
45      if (b->mach == bfd_mach_cris_v10_v32)
46        return a;
47    
48    #if 0
49      /* The code below is disabled but kept as a warning.
50         See ldlang.c:lang_check.  Quite illogically, incompatible arches
51         (as signalled by this function) are only *warned* about, while with
52         this function signalling compatible ones, we can have the
53         cris_elf_merge_private_bfd_data function return an error.  This is
54         undoubtedly a FIXME: in general.  Also, the
55         command_line.warn_mismatch flag and the --no-warn-mismatch option
56         are misnamed for the multitude of ports that signal compatibility:
57         it is there an error, not a warning.  We work around it by
58         pretending matching machs here.  */
59    
60      /* Except for the compatible mach, machs must match.  */
61      if (a->mach != b->mach)
62        return NULL;
63    #endif
64    
65      return a;
66    }
67    
68    #define N(NUMBER, PRINT, NEXT)  \
69     { 32, 32, 8, bfd_arch_cris, NUMBER, "cris", PRINT, 1, FALSE, \
70       get_compatible, bfd_default_scan, NEXT }
71    
72    static const bfd_arch_info_type bfd_cris_arch_compat_v10_v32 =
73     N (bfd_mach_cris_v10_v32, "cris:common_v10_v32", NULL);
74    
75    static const bfd_arch_info_type bfd_cris_arch_v32 =
76     N (bfd_mach_cris_v32, "crisv32", &bfd_cris_arch_compat_v10_v32);
77    
78    const bfd_arch_info_type bfd_cris_arch =
79  {  {
80    32,                           /* There's 32 bits_per_word.  */    32,                           /* There's 32 bits_per_word.  */
81    32,                           /* There's 32 bits_per_address.  */    32,                           /* There's 32 bits_per_address.  */
# Line 32  bfd_cris_arch = Line 83  bfd_cris_arch =
83    bfd_arch_cris,                /* One of enum bfd_architecture, defined    bfd_arch_cris,                /* One of enum bfd_architecture, defined
84                                     in archures.c and provided in                                     in archures.c and provided in
85                                     generated header files.  */                                     generated header files.  */
86    0xff,                         /* Only 1 machine, but #255 for    bfd_mach_cris_v0_v10,         /* Random BFD-internal number for this
87                                     historical reasons.  */                                     machine, similarly listed in
88                                       archures.c.  Not emitted in output.  */
89    "cris",                       /* The arch_name.  */    "cris",                       /* The arch_name.  */
90    "cris",                       /* The printable name is the same.  */    "cris",                       /* The printable name is the same.  */
91    1,                            /* Section alignment power; each section    1,                            /* Section alignment power; each section
92                                     is aligned to (only) 2^1 bytes.  */                                     is aligned to (only) 2^1 bytes.  */
93    true,                         /* This is the default "machine", since    TRUE,                         /* This is the default "machine".  */
94                                     there's only one.  */    get_compatible,               /* A function for testing
   bfd_default_compatible,       /* A default function for testing  
95                                     "machine" compatibility of two                                     "machine" compatibility of two
96                                     bfd_arch_info_type.  */                                     bfd_arch_info_type.  */
97    bfd_default_scan,             /* Check if an bfd_arch_info_type is a    bfd_default_scan,             /* Check if a bfd_arch_info_type is a
98                                     match.  */                                     match.  */
99    NULL                          /* Pointer to next bfd_arch_info_type in    &bfd_cris_arch_v32            /* Pointer to next bfd_arch_info_type in
100                                     the same family.  */                                     the same family.  */
101  };  };
102    

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26