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

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

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

revision 1.1.1.1 by camm, Fri Aug 9 05:35:03 2002 UTC revision 1.1.1.1.20.1 by camm, Fri Sep 30 02:08:56 2005 UTC
# Line 1  Line 1 
1  /* BFD library support routines for the Z800n architecture.  /* BFD library support routines for the Z800n architecture.
2     Copyright 1992, 1993, 1994, 2000, 2001 Free Software Foundation, Inc.     Copyright 1992, 1993, 1994, 2000, 2001, 2002, 2003
3       Free Software Foundation, Inc.
4     Hacked by Steve Chamberlain of Cygnus Support.     Hacked by Steve Chamberlain of Cygnus Support.
5    
6  This file is part of BFD, the Binary File Descriptor library.  This file is part of BFD, the Binary File Descriptor library.
# Line 22  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    
 static boolean scan_mach  
   PARAMS ((const struct bfd_arch_info *, const char *));  
 static const bfd_arch_info_type *compatible  
   PARAMS ((const bfd_arch_info_type *, const bfd_arch_info_type *));  
   
 #if 0                           /* not used currently */  
 /*  
 Relocations for the Z8K  
   
 */  
 static bfd_reloc_status_type  
 howto16_callback (abfd, reloc_entry, symbol_in, data,  
                   ignore_input_section, ignore_bfd)  
      bfd *abfd;  
      arelent *reloc_entry;  
      struct symbol_cache_entry *symbol_in;  
      PTR data;  
      asection *ignore_input_section;  
      bfd *ignore_bfd;  
 {  
   long relocation = 0;  
   bfd_vma addr = reloc_entry->address;  
   long x = bfd_get_16 (abfd, (bfd_byte *) data + addr);  
   
   HOWTO_PREPARE (relocation, symbol_in);  
   
   x = (x + relocation + reloc_entry->addend);  
   
   bfd_put_16 (abfd, x, (bfd_byte *) data + addr);  
   return bfd_reloc_ok;  
 }  
   
 static bfd_reloc_status_type  
 howto8_callback (abfd, reloc_entry, symbol_in, data,  
                  ignore_input_section, ignore_bfd)  
      bfd *abfd;  
      arelent *reloc_entry;  
      struct symbol_cache_entry *symbol_in;  
      PTR data;  
      asection *ignore_input_section;  
      bfd *ignore_bfd;  
 {  
   long relocation = 0;  
   bfd_vma addr = reloc_entry->address;  
   long x = bfd_get_8 (abfd, (bfd_byte *) data + addr);  
   
   HOWTO_PREPARE (relocation, symbol_in);  
   
   x = (x + relocation + reloc_entry->addend);  
   
   bfd_put_8 (abfd, x, (bfd_byte *) data + addr);  
   return bfd_reloc_ok;  
 }  
   
 static bfd_reloc_status_type  
 howto8_FFnn_callback (abfd, reloc_entry, symbol_in, data,  
                       ignore_input_section, ignore_bfd)  
      bfd *abfd;  
      arelent *reloc_entry;  
      struct symbol_cache_entry *symbol_in;  
      PTR data;  
      asection *ignore_input_section;  
      bfd *ignore_bfd;  
 {  
   long relocation = 0;  
   bfd_vma addr = reloc_entry->address;  
   
   long x = bfd_get_8 (abfd, (bfd_byte *) data + addr);  
   abort ();  
   HOWTO_PREPARE (relocation, symbol_in);  
   
   x = (x + relocation + reloc_entry->addend);  
   
   bfd_put_8 (abfd, x, (bfd_byte *) data + addr);  
   return bfd_reloc_ok;  
 }  
   
 static bfd_reloc_status_type  
 howto8_pcrel_callback (abfd, reloc_entry, symbol_in, data,  
                        ignore_input_section, ignore_bfd)  
      bfd *abfd;  
      arelent *reloc_entry;  
      struct symbol_cache_entry *symbol_in;  
      PTR data;  
      asection *ignore_input_section;  
      bfd *ignore_bfd;  
 {  
   long relocation = 0;  
   bfd_vma addr = reloc_entry->address;  
   long x = bfd_get_8 (abfd, (bfd_byte *) data + addr);  
   abort ();  
   HOWTO_PREPARE (relocation, symbol_in);  
   
   x = (x + relocation + reloc_entry->addend);  
   
   bfd_put_8 (abfd, x, (bfd_byte *) data + addr);  
   return bfd_reloc_ok;  
 }  
   
 static reloc_howto_type howto_16  
 = NEWHOWTO (howto16_callback, "abs16", 1, false, false);  
 static reloc_howto_type howto_8  
 = NEWHOWTO (howto8_callback, "abs8", 0, false, false);  
   
 static reloc_howto_type howto_8_FFnn  
 = NEWHOWTO (howto8_FFnn_callback, "ff00+abs8", 0, false, false);  
   
 static reloc_howto_type howto_8_pcrel  
 = NEWHOWTO (howto8_pcrel_callback, "pcrel8", 0, false, true);  
   
 static reloc_howto_type *  
 local_bfd_reloc_type_lookup (arch, code)  
      const struct bfd_arch_info *arch;  
      bfd_reloc_code_real_type code;  
 {  
   switch (code)  
     {  
     case BFD_RELOC_16:  
       return &howto_16;  
     case BFD_RELOC_8_FFnn:  
       return &howto_8_FFnn;  
     case BFD_RELOC_8:  
       return &howto_8;  
     case BFD_RELOC_8_PCREL:  
       return &howto_8_pcrel;  
     default:  
       return (reloc_howto_type *) NULL;  
     }  
 }  
 #endif  
   
 static boolean  
 scan_mach (info, string)  
      const struct bfd_arch_info *info;  
      const char *string;  
 {  
   if (strcmp (string, "z8001") == 0 || strcmp (string, "z8k") == 0)  
     {  
       return bfd_mach_z8001 == info->mach;  
     }  
   if (strcmp (string, "z8002") == 0)  
     {  
       return bfd_mach_z8002 == info->mach;  
     }  
   return false;  
 }  
   
26  /* This routine is provided two arch_infos and returns whether  /* This routine is provided two arch_infos and returns whether
27     they'd be compatible */     they'd be compatible */
28    
29  static const bfd_arch_info_type *  static const bfd_arch_info_type *
30  compatible (a, b)  compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)
      const bfd_arch_info_type *a;  
      const bfd_arch_info_type *b;  
31  {  {
32    if (a->arch != b->arch || a->mach != b->mach)    if (a->arch != b->arch || a->mach != b->mach)
33      return NULL;      return NULL;
# Line 184  compatible (a, b) Line 36  compatible (a, b)
36    
37  static const bfd_arch_info_type arch_info_struct[] =  static const bfd_arch_info_type arch_info_struct[] =
38  {  {
39    {32, 32, 8, bfd_arch_z8k, bfd_mach_z8001, "z8k", "z8001", 1, false, compatible, scan_mach, 0,},    { 32, 16, 8, bfd_arch_z8k, bfd_mach_z8002, "z8k", "z8002", 1, FALSE,
40        compatible, bfd_default_scan, 0 }
41  };  };
42    
43  const bfd_arch_info_type bfd_z8k_arch =  const bfd_arch_info_type bfd_z8k_arch =
44  {  {
45    32, 16, 8, bfd_arch_z8k, bfd_mach_z8002, "z8k", "z8002", 1, true, compatible, scan_mach, &arch_info_struct[0],    32, 32, 8, bfd_arch_z8k, bfd_mach_z8001, "z8k", "z8001", 1, TRUE,
46      compatible, bfd_default_scan, &arch_info_struct[0]
47  };  };

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

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