Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /* Toshiba MeP ELF support for BFD.
  2.    Copyright (C) 2001, 2004, 2005, 2007, 2009, 2010
  3.    Free Software Foundation, Inc.
  4.  
  5.    This file is part of BFD, the Binary File Descriptor library.
  6.  
  7.    This program is free software; you can redistribute it and/or modify
  8.    it under the terms of the GNU General Public License as published by
  9.    the Free Software Foundation; either version 3 of the License, or
  10.    (at your option) any later version.
  11.  
  12.    This program is distributed in the hope that it will be useful,
  13.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.    GNU General Public License for more details.
  16.  
  17.    You should have received a copy of the GNU General Public License
  18.    along with this program; if not, write to the Free Software Foundation,
  19.    Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
  20.  
  21. #ifndef _ELF_MEP_H
  22. #define _ELF_MEP_H
  23.  
  24. /* Bits in the sh_flags field of Elf32_Shdr:  */
  25.  
  26. #define SHF_MEP_VLIW            0x10000000      /* contains vliw code */
  27.  
  28. /* This bit is reserved by BFD for processor specific stuff.  Name
  29.    it properly so that we can easily stay consistent elsewhere.  */
  30. #define SEC_MEP_VLIW            SEC_TIC54X_BLOCK
  31.  
  32. #include "elf/reloc-macros.h"
  33.  
  34. /* Note: The comments in this file are used by bfd/mep-relocs.pl to
  35.    build parts of bfd/elf32-mep.c.  */
  36.  
  37. /* Relocations.  */
  38. START_RELOC_NUMBERS (elf_mep_reloc_type)
  39.  
  40.   /* These two must appear first so that they are not processed by bfd/mep-relocs.pl.  */
  41.   RELOC_NUMBER (R_MEP_NONE, 0)
  42.   RELOC_NUMBER (R_RELC, 1)
  43.  
  44.   RELOC_NUMBER (R_MEP_8, 2)             /* 7654 3210                               U */
  45.   RELOC_NUMBER (R_MEP_16, 3)            /* fedc ba98 7654 3210                     U */
  46.   RELOC_NUMBER (R_MEP_32, 4)            /* vuts rqpo nmlk jihg fedc ba98 7654 3210 U */
  47.  
  48.   RELOC_NUMBER (R_MEP_PCREL8A2, 5)      /* ---- ---- 7654 321-                     S PC-REL */
  49.   RELOC_NUMBER (R_MEP_PCREL12A2, 6)     /* ---- ba98 7654 321-                     S PC-REL */
  50.   RELOC_NUMBER (R_MEP_PCREL17A2, 7)     /* ---- ---- ---- ---- gfed cba9 8765 4321 S PC-REL */
  51.   RELOC_NUMBER (R_MEP_PCREL24A2, 8)     /* ---- -765 4321 ---- nmlk jihg fedc ba98 S PC-REL */
  52.   RELOC_NUMBER (R_MEP_PCABS24A2, 9)     /* ---- -765 4321 ---- nmlk jihg fedc ba98 U */
  53.  
  54.   RELOC_NUMBER (R_MEP_LOW16, 10)        /* ---- ---- ---- ---- fedc ba98 7654 3210 U no-overflow */
  55.   RELOC_NUMBER (R_MEP_HI16U, 11)        /* ---- ---- ---- ---- vuts rqpo nmlk jihg U no-overflow */
  56.   RELOC_NUMBER (R_MEP_HI16S, 12)        /* ---- ---- ---- ---- vuts rqpo nmlk jihg S no-overflow */
  57.   RELOC_NUMBER (R_MEP_GPREL, 13)        /* ---- ---- ---- ---- fedc ba98 7654 3210 S GP-REL*/
  58.   RELOC_NUMBER (R_MEP_TPREL, 14)        /* ---- ---- ---- ---- fedc ba98 7654 3210 S TP-REL*/
  59.  
  60.   RELOC_NUMBER (R_MEP_TPREL7, 15)       /* ---- ---- -654 3210                     U TP-REL */
  61.   RELOC_NUMBER (R_MEP_TPREL7A2, 16)     /* ---- ---- -654 321-                     U TP-REL */
  62.   RELOC_NUMBER (R_MEP_TPREL7A4, 17)     /* ---- ---- -654 32--                     U TP-REL */
  63.  
  64.   RELOC_NUMBER (R_MEP_UIMM24, 18)       /* ---- ---- 7654 3210 nmlk jihg fedc ba98 U */
  65.   RELOC_NUMBER (R_MEP_ADDR24A4, 19)     /* ---- ---- 7654 32-- nmlk jihg fedc ba98 U */
  66.  
  67.   RELOC_NUMBER (R_MEP_GNU_VTINHERIT, 20) /* ---- ---- ---- ----                     U no-overflow */
  68.   RELOC_NUMBER (R_MEP_GNU_VTENTRY, 21)   /* ---- ---- ---- ----                     U no-overflow */
  69.  
  70. END_RELOC_NUMBERS(R_MEP_max)
  71.  
  72. #define EF_MEP_CPU_MASK         0xff000000      /* specific cpu bits */
  73. #define EF_MEP_CPU_MEP          0x00000000      /* generic MEP */
  74. #define EF_MEP_CPU_C2           0x01000000      /* MEP c2 */
  75. #define EF_MEP_CPU_C3           0x02000000      /* MEP c3 */
  76. #define EF_MEP_CPU_C4           0x04000000      /* MEP c4 */
  77. /* 5..7 are reseved */
  78. #define EF_MEP_CPU_C5           0x08000000      /* MEP c5 */
  79. #define EF_MEP_CPU_H1           0x10000000      /* MEP h1 */
  80.  
  81. #define EF_MEP_COP_MASK         0x00ff0000
  82. #define EF_MEP_COP_NONE         0x00000000
  83. #define EF_MEP_COP_AVC          0x00010000
  84. #define EF_MEP_COP_AVC2         0x00020000
  85. #define EF_MEP_COP_FMAX         0x00030000
  86. /* 4..5 are reserved.  */
  87. #define EF_MEP_COP_IVC2         0x00060000
  88.  
  89. #define EF_MEP_LIBRARY          0x00000100      /* Built as a library */
  90.  
  91. #define EF_MEP_INDEX_MASK       0x000000ff      /* Configuration index */
  92.  
  93. #define EF_MEP_ALL_FLAGS        0xffff01ff
  94.  
  95. #endif /* _ELF_MEP_H */
  96.