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