Subversion Repositories Kolibri OS

Rev

Rev 5191 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /* FRV ELF support for BFD.
  2.    Copyright (C) 2002-2015 Free Software Foundation, Inc.
  3.  
  4.    This file is part of BFD, the Binary File Descriptor library.
  5.  
  6.    This program is free software; you can redistribute it and/or modify
  7.    it under the terms of the GNU General Public License as published by
  8.    the Free Software Foundation; either version 3 of the License, or
  9.    (at your option) any later version.
  10.  
  11.    This program is distributed in the hope that it will be useful,
  12.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.    GNU General Public License for more details.
  15.  
  16.    You should have received a copy of the GNU General Public License
  17.    along with this program; if not, write to the Free Software Foundation,
  18.    Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
  19.  
  20. #ifndef _ELF_FRV_H
  21. #define _ELF_FRV_H
  22.  
  23. #include "elf/reloc-macros.h"
  24.  
  25. /* Relocations.  */
  26. START_RELOC_NUMBERS (elf_frv_reloc_type)
  27.   RELOC_NUMBER (R_FRV_NONE, 0)
  28.   RELOC_NUMBER (R_FRV_32, 1)
  29.   RELOC_NUMBER (R_FRV_LABEL16, 2)
  30.   RELOC_NUMBER (R_FRV_LABEL24, 3)
  31.   RELOC_NUMBER (R_FRV_LO16, 4)
  32.   RELOC_NUMBER (R_FRV_HI16, 5)
  33.   RELOC_NUMBER (R_FRV_GPREL12, 6)
  34.   RELOC_NUMBER (R_FRV_GPRELU12, 7)
  35.   RELOC_NUMBER (R_FRV_GPREL32, 8)
  36.   RELOC_NUMBER (R_FRV_GPRELHI, 9)
  37.   RELOC_NUMBER (R_FRV_GPRELLO, 10)
  38.   RELOC_NUMBER (R_FRV_GOT12, 11)
  39.   RELOC_NUMBER (R_FRV_GOTHI, 12)
  40.   RELOC_NUMBER (R_FRV_GOTLO, 13)
  41.   RELOC_NUMBER (R_FRV_FUNCDESC, 14)
  42.   RELOC_NUMBER (R_FRV_FUNCDESC_GOT12, 15)
  43.   RELOC_NUMBER (R_FRV_FUNCDESC_GOTHI, 16)
  44.   RELOC_NUMBER (R_FRV_FUNCDESC_GOTLO, 17)
  45.   RELOC_NUMBER (R_FRV_FUNCDESC_VALUE, 18)
  46.   RELOC_NUMBER (R_FRV_FUNCDESC_GOTOFF12, 19)
  47.   RELOC_NUMBER (R_FRV_FUNCDESC_GOTOFFHI, 20)
  48.   RELOC_NUMBER (R_FRV_FUNCDESC_GOTOFFLO, 21)
  49.   RELOC_NUMBER (R_FRV_GOTOFF12, 22)
  50.   RELOC_NUMBER (R_FRV_GOTOFFHI, 23)
  51.   RELOC_NUMBER (R_FRV_GOTOFFLO, 24)
  52.   RELOC_NUMBER (R_FRV_GETTLSOFF, 25)
  53.   RELOC_NUMBER (R_FRV_TLSDESC_VALUE, 26)
  54.   RELOC_NUMBER (R_FRV_GOTTLSDESC12, 27)
  55.   RELOC_NUMBER (R_FRV_GOTTLSDESCHI, 28)
  56.   RELOC_NUMBER (R_FRV_GOTTLSDESCLO, 29)
  57.   RELOC_NUMBER (R_FRV_TLSMOFF12, 30)
  58.   RELOC_NUMBER (R_FRV_TLSMOFFHI, 31)
  59.   RELOC_NUMBER (R_FRV_TLSMOFFLO, 32)
  60.   RELOC_NUMBER (R_FRV_GOTTLSOFF12, 33)
  61.   RELOC_NUMBER (R_FRV_GOTTLSOFFHI, 34)
  62.   RELOC_NUMBER (R_FRV_GOTTLSOFFLO, 35)
  63.   RELOC_NUMBER (R_FRV_TLSOFF, 36)
  64.   RELOC_NUMBER (R_FRV_TLSDESC_RELAX, 37)
  65.   RELOC_NUMBER (R_FRV_GETTLSOFF_RELAX, 38)
  66.   RELOC_NUMBER (R_FRV_TLSOFF_RELAX, 39)
  67.   RELOC_NUMBER (R_FRV_TLSMOFF, 40)
  68.   RELOC_NUMBER (R_FRV_GNU_VTINHERIT, 200)
  69.   RELOC_NUMBER (R_FRV_GNU_VTENTRY, 201)
  70. END_RELOC_NUMBERS(R_FRV_max)
  71.  
  72. /* Processor specific flags for the ELF header e_flags field.  */
  73.                                                 /* gpr support */
  74. #define EF_FRV_GPR_MASK         0x00000003      /* mask for # of gprs */
  75. #define EF_FRV_GPR_32           0x00000001      /* -mgpr-32 */
  76. #define EF_FRV_GPR_64           0x00000002      /* -mgpr-64 */
  77.  
  78.                                                 /* fpr support */
  79. #define EF_FRV_FPR_MASK         0x0000000c      /* mask for # of fprs */
  80. #define EF_FRV_FPR_32           0x00000004      /* -mfpr-32 */
  81. #define EF_FRV_FPR_64           0x00000008      /* -mfpr-64 */
  82. #define EF_FRV_FPR_NONE         0x0000000c      /* -msoft-float */
  83.  
  84.                                                 /* double word support */
  85. #define EF_FRV_DWORD_MASK       0x00000030      /* mask for dword support */
  86. #define EF_FRV_DWORD_YES        0x00000010      /* use double word insns */
  87. #define EF_FRV_DWORD_NO         0x00000020      /* don't use double word insn*/
  88.  
  89. #define EF_FRV_DOUBLE           0x00000040      /* -mdouble */
  90. #define EF_FRV_MEDIA            0x00000080      /* -mmedia */
  91.  
  92. #define EF_FRV_PIC              0x00000100      /* -fpic */
  93. #define EF_FRV_NON_PIC_RELOCS   0x00000200      /* used non pic safe relocs */
  94.  
  95. #define EF_FRV_MULADD           0x00000400      /* -mmuladd */
  96. #define EF_FRV_BIGPIC           0x00000800      /* -fPIC */
  97. #define EF_FRV_LIBPIC           0x00001000      /* -mlibrary-pic */
  98. #define EF_FRV_G0               0x00002000      /* -G 0, no small data ptr */
  99. #define EF_FRV_NOPACK           0x00004000      /* -mnopack */
  100. #define EF_FRV_FDPIC            0x00008000      /* -mfdpic */
  101.  
  102. #define EF_FRV_CPU_MASK         0xff000000      /* specific cpu bits */
  103. #define EF_FRV_CPU_GENERIC      0x00000000      /* generic FRV */
  104. #define EF_FRV_CPU_FR500        0x01000000      /* FRV500 */
  105. #define EF_FRV_CPU_FR300        0x02000000      /* FRV300 */
  106. #define EF_FRV_CPU_SIMPLE       0x03000000      /* SIMPLE */
  107. #define EF_FRV_CPU_TOMCAT       0x04000000      /* Tomcat, FR500 prototype */
  108. #define EF_FRV_CPU_FR400        0x05000000      /* FRV400 */
  109. #define EF_FRV_CPU_FR550        0x06000000      /* FRV550 */
  110. #define EF_FRV_CPU_FR405        0x07000000
  111. #define EF_FRV_CPU_FR450        0x08000000
  112.  
  113.                                                 /* Mask of PIC related bits */
  114. #define EF_FRV_PIC_FLAGS        (EF_FRV_PIC | EF_FRV_LIBPIC | EF_FRV_BIGPIC \
  115.                                  | EF_FRV_FDPIC)
  116.  
  117.                                                 /* Mask of all flags */
  118. #define EF_FRV_ALL_FLAGS        (EF_FRV_GPR_MASK | \
  119.                                  EF_FRV_FPR_MASK | \
  120.                                  EF_FRV_DWORD_MASK | \
  121.                                  EF_FRV_DOUBLE | \
  122.                                  EF_FRV_MEDIA | \
  123.                                  EF_FRV_PIC_FLAGS | \
  124.                                  EF_FRV_NON_PIC_RELOCS | \
  125.                                  EF_FRV_MULADD | \
  126.                                  EF_FRV_G0 | \
  127.                                  EF_FRV_NOPACK | \
  128.                                  EF_FRV_CPU_MASK)
  129.  
  130. #endif /* _ELF_FRV_H */
  131.