]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/C/GenFw/elf_common.h
BaseTools: Update GenFw/GenFv to support LoongArch platform.
[mirror_edk2.git] / BaseTools / Source / C / GenFw / elf_common.h
index b67f59e7a02fdb717c660a9e6be98e6aad0c38ad..7b7fdeb3290dfa8812d64fdb69aa179d2089d227 100644 (file)
@@ -4,6 +4,7 @@ Ported ELF include files from FreeBSD
 Copyright (c) 2009 - 2010, Apple Inc. All rights reserved.<BR>\r
 Portions Copyright (c) 2011 - 2013, ARM Ltd. All rights reserved.<BR>\r
 Portion Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>\r
+Portions Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>\r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 \r
@@ -181,6 +182,7 @@ typedef struct {
 #define EM_AARCH64  183  /* ARM 64bit Architecture */\r
 #define EM_RISCV64  243 /* 64bit RISC-V Architecture */\r
 #define EM_RISCV    244 /* 32bit RISC-V Architecture */\r
+#define EM_LOONGARCH 258 /* LoongArch Architecture */\r
 \r
 /* Non-standard or deprecated. */\r
 #define EM_486    6  /* Intel i486. */\r
@@ -1042,4 +1044,96 @@ typedef struct {
 #define R_RISCV_SET8            54\r
 #define R_RISCV_SET16           55\r
 #define R_RISCV_SET32           56\r
+\r
+/*\r
+ * LoongArch relocation types\r
+ */\r
+#define R_LARCH_NONE                       0\r
+#define R_LARCH_32                         1\r
+#define R_LARCH_64                         2\r
+#define R_LARCH_RELATIVE                   3\r
+#define R_LARCH_COPY                       4\r
+#define R_LARCH_JUMP_SLOT                  5\r
+#define R_LARCH_TLS_DTPMOD32               6\r
+#define R_LARCH_TLS_DTPMOD64               7\r
+#define R_LARCH_TLS_DTPREL32               8\r
+#define R_LARCH_TLS_DTPREL64               9\r
+#define R_LARCH_TLS_TPREL32                10\r
+#define R_LARCH_TLS_TPREL64                11\r
+#define R_LARCH_IRELATIVE                  12\r
+#define R_LARCH_MARK_LA                    20\r
+#define R_LARCH_MARK_PCREL                 21\r
+#define R_LARCH_SOP_PUSH_PCREL             22\r
+#define R_LARCH_SOP_PUSH_ABSOLUTE          23\r
+#define R_LARCH_SOP_PUSH_DUP               24\r
+#define R_LARCH_SOP_PUSH_GPREL             25\r
+#define R_LARCH_SOP_PUSH_TLS_TPREL         26\r
+#define R_LARCH_SOP_PUSH_TLS_GOT           27\r
+#define R_LARCH_SOP_PUSH_TLS_GD            28\r
+#define R_LARCH_SOP_PUSH_PLT_PCREL         29\r
+#define R_LARCH_SOP_ASSERT                 30\r
+#define R_LARCH_SOP_NOT                    31\r
+#define R_LARCH_SOP_SUB                    32\r
+#define R_LARCH_SOP_SL                     33\r
+#define R_LARCH_SOP_SR                     34\r
+#define R_LARCH_SOP_ADD                    35\r
+#define R_LARCH_SOP_AND                    36\r
+#define R_LARCH_SOP_IF_ELSE                37\r
+#define R_LARCH_SOP_POP_32_S_10_5          38\r
+#define R_LARCH_SOP_POP_32_U_10_12         39\r
+#define R_LARCH_SOP_POP_32_S_10_12         40\r
+#define R_LARCH_SOP_POP_32_S_10_16         41\r
+#define R_LARCH_SOP_POP_32_S_10_16_S2      42\r
+#define R_LARCH_SOP_POP_32_S_5_20          43\r
+#define R_LARCH_SOP_POP_32_S_0_5_10_16_S2  44\r
+#define R_LARCH_SOP_POP_32_S_0_10_10_16_S2 45\r
+#define R_LARCH_SOP_POP_32_U               46\r
+#define R_LARCH_ADD8                       47\r
+#define R_LARCH_ADD16                      48\r
+#define R_LARCH_ADD24                      49\r
+#define R_LARCH_ADD32                      50\r
+#define R_LARCH_ADD64                      51\r
+#define R_LARCH_SUB8                       52\r
+#define R_LARCH_SUB16                      53\r
+#define R_LARCH_SUB24                      54\r
+#define R_LARCH_SUB32                      55\r
+#define R_LARCH_SUB64                      56\r
+#define R_LARCH_GNU_VTINHERIT              57\r
+#define R_LARCH_GNU_VTENTRY                58\r
+#define R_LARCH_B16                        64\r
+#define R_LARCH_B21                        65\r
+#define R_LARCH_B26                        66\r
+#define R_LARCH_ABS_HI20                   67\r
+#define R_LARCH_ABS_LO12                   68\r
+#define R_LARCH_ABS64_LO20                 69\r
+#define R_LARCH_ABS64_HI12                 70\r
+#define R_LARCH_PCALA_HI20                 71\r
+#define R_LARCH_PCALA_LO12                 72\r
+#define R_LARCH_PCALA64_LO20               73\r
+#define R_LARCH_PCALA64_HI12               74\r
+#define R_LARCH_GOT_PC_HI20                75\r
+#define R_LARCH_GOT_PC_LO12                76\r
+#define R_LARCH_GOT64_PC_LO20              77\r
+#define R_LARCH_GOT64_PC_HI12              78\r
+#define R_LARCH_GOT64_HI20                 79\r
+#define R_LARCH_GOT64_LO12                 80\r
+#define R_LARCH_GOT64_LO20                 81\r
+#define R_LARCH_GOT64_HI12                 82\r
+#define R_LARCH_TLS_LE_HI20                83\r
+#define R_LARCH_TLS_LE_LO12                84\r
+#define R_LARCH_TLS_LE64_LO20              85\r
+#define R_LARCH_TLS_LE64_HI12              86\r
+#define R_LARCH_TLS_IE_PC_HI20             87\r
+#define R_LARCH_TLS_IE_PC_LO12             88\r
+#define R_LARCH_TLS_IE64_PC_LO20           89\r
+#define R_LARCH_TLS_IE64_PC_HI12           90\r
+#define R_LARCH_TLS_IE64_HI20              91\r
+#define R_LARCH_TLS_IE64_LO12              92\r
+#define R_LARCH_TLS_IE64_LO20              93\r
+#define R_LARCH_TLS_IE64_HI12              94\r
+#define R_LARCH_TLS_LD_PC_HI20             95\r
+#define R_LARCH_TLS_LD64_HI20              96\r
+#define R_LARCH_TLS_GD_PC_HI20             97\r
+#define R_LARCH_TLS_GD64_HI20              98\r
+#define R_LARCH_RELAX                      99\r
 #endif /* !_SYS_ELF_COMMON_H_ */\r