1 /* AMDGPU ELF support for BFD. 2 3 Copyright (C) 2019-2024 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, see <http://www.gnu.org/licenses/>. */ 19 20 #ifndef _ELF_AMDGPU_H 21 #define _ELF_AMDGPU_H 22 23 #include "elf/reloc-macros.h" 24 25 /* e_ident[EI_ABIVERSION] values, when e_ident[EI_OSABI] is 26 ELFOSABI_AMDGPU_HSA. */ 27 28 #define ELFABIVERSION_AMDGPU_HSA_V2 0 29 #define ELFABIVERSION_AMDGPU_HSA_V3 1 30 #define ELFABIVERSION_AMDGPU_HSA_V4 2 31 #define ELFABIVERSION_AMDGPU_HSA_V5 3 32 33 /* Processor selection mask for EF_AMDGPU_MACH_* values. */ 34 35 #define EF_AMDGPU_MACH 0x0ff 36 #define EF_AMDGPU_MACH_AMDGCN_MIN 0x020 37 38 #define EF_AMDGPU_MACH_AMDGCN_GFX600 0x020 39 #define EF_AMDGPU_MACH_AMDGCN_GFX601 0x021 40 #define EF_AMDGPU_MACH_AMDGCN_GFX700 0x022 41 #define EF_AMDGPU_MACH_AMDGCN_GFX701 0x023 42 #define EF_AMDGPU_MACH_AMDGCN_GFX702 0x024 43 #define EF_AMDGPU_MACH_AMDGCN_GFX703 0x025 44 #define EF_AMDGPU_MACH_AMDGCN_GFX704 0x026 45 #define EF_AMDGPU_MACH_AMDGCN_GFX801 0x028 46 #define EF_AMDGPU_MACH_AMDGCN_GFX802 0x029 47 #define EF_AMDGPU_MACH_AMDGCN_GFX803 0x02a 48 #define EF_AMDGPU_MACH_AMDGCN_GFX810 0x02b 49 #define EF_AMDGPU_MACH_AMDGCN_GFX900 0x02c 50 #define EF_AMDGPU_MACH_AMDGCN_GFX902 0x02d 51 #define EF_AMDGPU_MACH_AMDGCN_GFX904 0x02e 52 #define EF_AMDGPU_MACH_AMDGCN_GFX906 0x02f 53 #define EF_AMDGPU_MACH_AMDGCN_GFX908 0x030 54 #define EF_AMDGPU_MACH_AMDGCN_GFX909 0x031 55 #define EF_AMDGPU_MACH_AMDGCN_GFX90C 0x032 56 #define EF_AMDGPU_MACH_AMDGCN_GFX1010 0x033 57 #define EF_AMDGPU_MACH_AMDGCN_GFX1011 0x034 58 #define EF_AMDGPU_MACH_AMDGCN_GFX1012 0x035 59 #define EF_AMDGPU_MACH_AMDGCN_GFX1030 0x036 60 #define EF_AMDGPU_MACH_AMDGCN_GFX1031 0x037 61 #define EF_AMDGPU_MACH_AMDGCN_GFX1032 0x038 62 #define EF_AMDGPU_MACH_AMDGCN_GFX1033 0x039 63 #define EF_AMDGPU_MACH_AMDGCN_GFX602 0x03a 64 #define EF_AMDGPU_MACH_AMDGCN_GFX705 0x03b 65 #define EF_AMDGPU_MACH_AMDGCN_GFX805 0x03c 66 #define EF_AMDGPU_MACH_AMDGCN_GFX1035 0x03d 67 #define EF_AMDGPU_MACH_AMDGCN_GFX1034 0x03e 68 #define EF_AMDGPU_MACH_AMDGCN_GFX90A 0x03f 69 #define EF_AMDGPU_MACH_AMDGCN_GFX940 0x040 70 #define EF_AMDGPU_MACH_AMDGCN_GFX1100 0x041 71 #define EF_AMDGPU_MACH_AMDGCN_GFX1013 0x042 72 #define EF_AMDGPU_MACH_AMDGCN_GFX1036 0x045 73 #define EF_AMDGPU_MACH_AMDGCN_GFX1101 0x046 74 #define EF_AMDGPU_MACH_AMDGCN_GFX1102 0x047 75 76 /* Code object v3 machine flags. */ 77 78 #define EF_AMDGPU_FEATURE_XNACK_V3 0x100 79 #define EF_AMDGPU_FEATURE_SRAMECC_V3 0x200 80 81 /* Code object v4 (and later) machine flags. */ 82 83 #define EF_AMDGPU_FEATURE_XNACK_V4 0x300 84 #define EF_AMDGPU_FEATURE_XNACK_UNSUPPORTED_V4 0x000 85 #define EF_AMDGPU_FEATURE_XNACK_ANY_V4 0x100 86 #define EF_AMDGPU_FEATURE_XNACK_OFF_V4 0x200 87 #define EF_AMDGPU_FEATURE_XNACK_ON_V4 0x300 88 89 #define EF_AMDGPU_FEATURE_SRAMECC_V4 0xc00 90 #define EF_AMDGPU_FEATURE_SRAMECC_UNSUPPORTED_V4 0x000 91 #define EF_AMDGPU_FEATURE_SRAMECC_ANY_V4 0x400 92 #define EF_AMDGPU_FEATURE_SRAMECC_OFF_V4 0x800 93 #define EF_AMDGPU_FEATURE_SRAMECC_ON_V4 0xc00 94 95 /* Notes. */ 96 97 #define NT_AMDGPU_METADATA 32 98 99 /* Relocations. */ 100 101 START_RELOC_NUMBERS (elf_amdgpu_reloc_type) 102 RELOC_NUMBER (R_AMDGPU_NONE, 0) 103 RELOC_NUMBER (R_AMDGPU_ABS32_LO, 1) 104 RELOC_NUMBER (R_AMDGPU_ABS32_HI, 2) 105 RELOC_NUMBER (R_AMDGPU_ABS64, 3) 106 RELOC_NUMBER (R_AMDGPU_REL32, 4) 107 RELOC_NUMBER (R_AMDGPU_REL64, 5) 108 RELOC_NUMBER (R_AMDGPU_ABS32, 6) 109 RELOC_NUMBER (R_AMDGPU_GOTPCREL, 7) 110 RELOC_NUMBER (R_AMDGPU_GOTPCREL32_LO, 8) 111 RELOC_NUMBER (R_AMDGPU_GOTPCREL32_HI, 9) 112 RELOC_NUMBER (R_AMDGPU_REL32_LO, 10) 113 RELOC_NUMBER (R_AMDGPU_REL32_HI, 11) 114 RELOC_NUMBER (R_AMDGPU_RELATIVE64, 13) 115 RELOC_NUMBER (R_AMDGPU_REL16, 16) 116 END_RELOC_NUMBERS (R_AMDGPU_max) 117 118 #endif /* _ELF_AMDGPU_H */ 119