Home | History | Annotate | Line # | Download | only in elf
      1      1.1  christos /* AMDGPU ELF support for BFD.
      2      1.1  christos 
      3  1.1.1.2  christos    Copyright (C) 2019-2024 Free Software Foundation, Inc.
      4      1.1  christos 
      5      1.1  christos    This file is part of BFD, the Binary File Descriptor library.
      6      1.1  christos 
      7      1.1  christos    This program is free software; you can redistribute it and/or modify
      8      1.1  christos    it under the terms of the GNU General Public License as published by
      9      1.1  christos    the Free Software Foundation; either version 3 of the License, or
     10      1.1  christos    (at your option) any later version.
     11      1.1  christos 
     12      1.1  christos    This program is distributed in the hope that it will be useful,
     13      1.1  christos    but WITHOUT ANY WARRANTY; without even the implied warranty of
     14      1.1  christos    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15      1.1  christos    GNU General Public License for more details.
     16      1.1  christos 
     17      1.1  christos    You should have received a copy of the GNU General Public License
     18      1.1  christos    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     19      1.1  christos 
     20      1.1  christos #ifndef _ELF_AMDGPU_H
     21      1.1  christos #define _ELF_AMDGPU_H
     22      1.1  christos 
     23      1.1  christos #include "elf/reloc-macros.h"
     24      1.1  christos 
     25      1.1  christos /* e_ident[EI_ABIVERSION] values, when e_ident[EI_OSABI] is
     26      1.1  christos    ELFOSABI_AMDGPU_HSA.  */
     27      1.1  christos 
     28      1.1  christos #define ELFABIVERSION_AMDGPU_HSA_V2 0
     29      1.1  christos #define ELFABIVERSION_AMDGPU_HSA_V3 1
     30      1.1  christos #define ELFABIVERSION_AMDGPU_HSA_V4 2
     31      1.1  christos #define ELFABIVERSION_AMDGPU_HSA_V5 3
     32      1.1  christos 
     33      1.1  christos /* Processor selection mask for EF_AMDGPU_MACH_* values.  */
     34      1.1  christos 
     35      1.1  christos #define EF_AMDGPU_MACH 0x0ff
     36      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_MIN 0x020
     37      1.1  christos 
     38      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX600  0x020
     39      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX601  0x021
     40      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX700  0x022
     41      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX701  0x023
     42      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX702  0x024
     43      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX703  0x025
     44      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX704  0x026
     45      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX801  0x028
     46      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX802  0x029
     47      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX803  0x02a
     48      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX810  0x02b
     49      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX900  0x02c
     50      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX902  0x02d
     51      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX904  0x02e
     52      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX906  0x02f
     53      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX908  0x030
     54      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX909  0x031
     55      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX90C  0x032
     56      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX1010 0x033
     57      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX1011 0x034
     58      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX1012 0x035
     59      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX1030 0x036
     60      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX1031 0x037
     61      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX1032 0x038
     62      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX1033 0x039
     63      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX602  0x03a
     64      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX705  0x03b
     65      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX805  0x03c
     66      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX1035 0x03d
     67      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX1034 0x03e
     68      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX90A  0x03f
     69      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX940  0x040
     70  1.1.1.2  christos #define EF_AMDGPU_MACH_AMDGCN_GFX1100 0x041
     71      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX1013 0x042
     72      1.1  christos #define EF_AMDGPU_MACH_AMDGCN_GFX1036 0x045
     73  1.1.1.2  christos #define EF_AMDGPU_MACH_AMDGCN_GFX1101 0x046
     74  1.1.1.2  christos #define EF_AMDGPU_MACH_AMDGCN_GFX1102 0x047
     75      1.1  christos 
     76      1.1  christos /* Code object v3 machine flags.  */
     77      1.1  christos 
     78      1.1  christos #define EF_AMDGPU_FEATURE_XNACK_V3   0x100
     79      1.1  christos #define EF_AMDGPU_FEATURE_SRAMECC_V3 0x200
     80      1.1  christos 
     81      1.1  christos /* Code object v4 (and later) machine flags.  */
     82      1.1  christos 
     83      1.1  christos #define EF_AMDGPU_FEATURE_XNACK_V4             0x300
     84      1.1  christos #define EF_AMDGPU_FEATURE_XNACK_UNSUPPORTED_V4 0x000
     85      1.1  christos #define EF_AMDGPU_FEATURE_XNACK_ANY_V4         0x100
     86      1.1  christos #define EF_AMDGPU_FEATURE_XNACK_OFF_V4         0x200
     87      1.1  christos #define EF_AMDGPU_FEATURE_XNACK_ON_V4          0x300
     88      1.1  christos 
     89      1.1  christos #define EF_AMDGPU_FEATURE_SRAMECC_V4             0xc00
     90      1.1  christos #define EF_AMDGPU_FEATURE_SRAMECC_UNSUPPORTED_V4 0x000
     91      1.1  christos #define EF_AMDGPU_FEATURE_SRAMECC_ANY_V4         0x400
     92      1.1  christos #define EF_AMDGPU_FEATURE_SRAMECC_OFF_V4         0x800
     93      1.1  christos #define EF_AMDGPU_FEATURE_SRAMECC_ON_V4          0xc00
     94      1.1  christos 
     95      1.1  christos /* Notes. */
     96      1.1  christos 
     97      1.1  christos #define NT_AMDGPU_METADATA                32
     98      1.1  christos 
     99      1.1  christos /* Relocations.  */
    100      1.1  christos 
    101      1.1  christos START_RELOC_NUMBERS (elf_amdgpu_reloc_type)
    102      1.1  christos  RELOC_NUMBER (R_AMDGPU_NONE,           0)
    103      1.1  christos  RELOC_NUMBER (R_AMDGPU_ABS32_LO,       1)
    104      1.1  christos  RELOC_NUMBER (R_AMDGPU_ABS32_HI,       2)
    105      1.1  christos  RELOC_NUMBER (R_AMDGPU_ABS64,          3)
    106      1.1  christos  RELOC_NUMBER (R_AMDGPU_REL32,          4)
    107      1.1  christos  RELOC_NUMBER (R_AMDGPU_REL64,          5)
    108      1.1  christos  RELOC_NUMBER (R_AMDGPU_ABS32,          6)
    109      1.1  christos  RELOC_NUMBER (R_AMDGPU_GOTPCREL,       7)
    110      1.1  christos  RELOC_NUMBER (R_AMDGPU_GOTPCREL32_LO,  8)
    111      1.1  christos  RELOC_NUMBER (R_AMDGPU_GOTPCREL32_HI,  9)
    112      1.1  christos  RELOC_NUMBER (R_AMDGPU_REL32_LO,      10)
    113      1.1  christos  RELOC_NUMBER (R_AMDGPU_REL32_HI,      11)
    114      1.1  christos  RELOC_NUMBER (R_AMDGPU_RELATIVE64,    13)
    115      1.1  christos  RELOC_NUMBER (R_AMDGPU_REL16,         16)
    116      1.1  christos END_RELOC_NUMBERS (R_AMDGPU_max)
    117      1.1  christos 
    118      1.1  christos #endif /* _ELF_AMDGPU_H */
    119