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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [bfd/] [cpu-cris.c] - Diff between revs 834 and 842

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 834 Rev 842
/* BFD support for the Axis CRIS architecture.
/* BFD support for the Axis CRIS architecture.
   Copyright 2000, 2002, 2004, 2005, 2007
   Copyright 2000, 2002, 2004, 2005, 2007
   Free Software Foundation, Inc.
   Free Software Foundation, Inc.
   Contributed by Axis Communications AB.
   Contributed by Axis Communications AB.
   Written by Hans-Peter Nilsson.
   Written by Hans-Peter Nilsson.
 
 
   This file is part of BFD, the Binary File Descriptor library.
   This file is part of BFD, the Binary File Descriptor library.
 
 
   This program is free software; you can redistribute it and/or modify
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.
   (at your option) any later version.
 
 
   This program is distributed in the hope that it will be useful,
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
   GNU General Public License for more details.
 
 
   You should have received a copy of the GNU General Public License
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
   MA 02110-1301, USA.  */
   MA 02110-1301, USA.  */
 
 
#include "sysdep.h"
#include "sysdep.h"
#include "bfd.h"
#include "bfd.h"
#include "libbfd.h"
#include "libbfd.h"
 
 
/* This routine is provided two arch_infos and returns the lowest common
/* This routine is provided two arch_infos and returns the lowest common
   denominator.  CRIS v0..v10 vs. v32 are not compatible in general, but
   denominator.  CRIS v0..v10 vs. v32 are not compatible in general, but
   there's a compatible subset for which we provide an arch_info.  */
   there's a compatible subset for which we provide an arch_info.  */
 
 
static const bfd_arch_info_type * get_compatible
static const bfd_arch_info_type * get_compatible
  PARAMS ((const bfd_arch_info_type *, const bfd_arch_info_type *));
  PARAMS ((const bfd_arch_info_type *, const bfd_arch_info_type *));
 
 
static const bfd_arch_info_type *
static const bfd_arch_info_type *
get_compatible (a,b)
get_compatible (a,b)
     const bfd_arch_info_type *a;
     const bfd_arch_info_type *a;
     const bfd_arch_info_type *b;
     const bfd_arch_info_type *b;
{
{
  /* Arches must match.  */
  /* Arches must match.  */
  if (a->arch != b->arch)
  if (a->arch != b->arch)
   return NULL;
   return NULL;
 
 
  /* If either is the compatible mach, return the other.  */
  /* If either is the compatible mach, return the other.  */
  if (a->mach == bfd_mach_cris_v10_v32)
  if (a->mach == bfd_mach_cris_v10_v32)
    return b;
    return b;
  if (b->mach == bfd_mach_cris_v10_v32)
  if (b->mach == bfd_mach_cris_v10_v32)
    return a;
    return a;
 
 
#if 0
#if 0
  /* The code below is disabled but kept as a warning.
  /* The code below is disabled but kept as a warning.
     See ldlang.c:lang_check.  Quite illogically, incompatible arches
     See ldlang.c:lang_check.  Quite illogically, incompatible arches
     (as signalled by this function) are only *warned* about, while with
     (as signalled by this function) are only *warned* about, while with
     this function signalling compatible ones, we can have the
     this function signalling compatible ones, we can have the
     cris_elf_merge_private_bfd_data function return an error.  This is
     cris_elf_merge_private_bfd_data function return an error.  This is
     undoubtedly a FIXME: in general.  Also, the
     undoubtedly a FIXME: in general.  Also, the
     command_line.warn_mismatch flag and the --no-warn-mismatch option
     command_line.warn_mismatch flag and the --no-warn-mismatch option
     are misnamed for the multitude of ports that signal compatibility:
     are misnamed for the multitude of ports that signal compatibility:
     it is there an error, not a warning.  We work around it by
     it is there an error, not a warning.  We work around it by
     pretending matching machs here.  */
     pretending matching machs here.  */
 
 
  /* Except for the compatible mach, machs must match.  */
  /* Except for the compatible mach, machs must match.  */
  if (a->mach != b->mach)
  if (a->mach != b->mach)
    return NULL;
    return NULL;
#endif
#endif
 
 
  return a;
  return a;
}
}
 
 
#define N(NUMBER, PRINT, NEXT)  \
#define N(NUMBER, PRINT, NEXT)  \
 { 32, 32, 8, bfd_arch_cris, NUMBER, "cris", PRINT, 1, FALSE, \
 { 32, 32, 8, bfd_arch_cris, NUMBER, "cris", PRINT, 1, FALSE, \
   get_compatible, bfd_default_scan, NEXT }
   get_compatible, bfd_default_scan, NEXT }
 
 
static const bfd_arch_info_type bfd_cris_arch_compat_v10_v32 =
static const bfd_arch_info_type bfd_cris_arch_compat_v10_v32 =
 N (bfd_mach_cris_v10_v32, "cris:common_v10_v32", NULL);
 N (bfd_mach_cris_v10_v32, "cris:common_v10_v32", NULL);
 
 
static const bfd_arch_info_type bfd_cris_arch_v32 =
static const bfd_arch_info_type bfd_cris_arch_v32 =
 N (bfd_mach_cris_v32, "crisv32", &bfd_cris_arch_compat_v10_v32);
 N (bfd_mach_cris_v32, "crisv32", &bfd_cris_arch_compat_v10_v32);
 
 
const bfd_arch_info_type bfd_cris_arch =
const bfd_arch_info_type bfd_cris_arch =
{
{
  32,                           /* There's 32 bits_per_word.  */
  32,                           /* There's 32 bits_per_word.  */
  32,                           /* There's 32 bits_per_address.  */
  32,                           /* There's 32 bits_per_address.  */
  8,                            /* There's 8 bits_per_byte.  */
  8,                            /* There's 8 bits_per_byte.  */
  bfd_arch_cris,                /* One of enum bfd_architecture, defined
  bfd_arch_cris,                /* One of enum bfd_architecture, defined
                                   in archures.c and provided in
                                   in archures.c and provided in
                                   generated header files.  */
                                   generated header files.  */
  bfd_mach_cris_v0_v10,         /* Random BFD-internal number for this
  bfd_mach_cris_v0_v10,         /* Random BFD-internal number for this
                                   machine, similarly listed in
                                   machine, similarly listed in
                                   archures.c.  Not emitted in output.  */
                                   archures.c.  Not emitted in output.  */
  "cris",                       /* The arch_name.  */
  "cris",                       /* The arch_name.  */
  "cris",                       /* The printable name is the same.  */
  "cris",                       /* The printable name is the same.  */
  1,                            /* Section alignment power; each section
  1,                            /* Section alignment power; each section
                                   is aligned to (only) 2^1 bytes.  */
                                   is aligned to (only) 2^1 bytes.  */
  TRUE,                         /* This is the default "machine".  */
  TRUE,                         /* This is the default "machine".  */
  get_compatible,               /* A function for testing
  get_compatible,               /* A function for testing
                                   "machine" compatibility of two
                                   "machine" compatibility of two
                                   bfd_arch_info_type.  */
                                   bfd_arch_info_type.  */
  bfd_default_scan,             /* Check if a bfd_arch_info_type is a
  bfd_default_scan,             /* Check if a bfd_arch_info_type is a
                                   match.  */
                                   match.  */
  &bfd_cris_arch_v32            /* Pointer to next bfd_arch_info_type in
  &bfd_cris_arch_v32            /* Pointer to next bfd_arch_info_type in
                                   the same family.  */
                                   the same family.  */
};
};
 
 
/*
/*
 * Local variables:
 * Local variables:
 * eval: (c-set-style "gnu")
 * eval: (c-set-style "gnu")
 * indent-tabs-mode: t
 * indent-tabs-mode: t
 * End:
 * End:
 */
 */
 
 

powered by: WebSVN 2.1.0

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