/*      $NetBSD: elf_machdep.h,v 1.4 2017/11/06 03:47:46 christos Exp $ */

#define ELF32_MACHDEP_ENDIANNESS        ELFDATA2MSB
#define ELF32_MACHDEP_ID_CASES                                          \
               case EM_PARISC:                                         \
                       break;

#define ELF64_MACHDEP_ENDIANNESS        XXX     /* break compilation */
#define ELF64_MACHDEP_ID_CASES                                          \
               /* no 64-bit ELF machine types supported */

#define ELF32_MACHDEP_ID        EM_PARISC

#define KERN_ELFSIZE            32
#define ARCH_ELFSIZE            32      /* MD native binary size */

/* hppa relocation types */
#define R_PARISC_NONE            0 /* No reloc */
#define R_PARISC_DIR32           1
#define R_PARISC_DIR21L          2
#define R_PARISC_DIR17R          3
#define R_PARISC_DIR17F          4
#define R_PARISC_DIR14R          6
#define R_PARISC_DIR14F          7
#define R_PARISC_PCREL12F        8
#define R_PARISC_PCREL32         9
#define R_PARISC_PCREL21L       10
#define R_PARISC_PCREL17R       11
#define R_PARISC_PCREL17F       12
#define R_PARISC_PCREL17C       13
#define R_PARISC_PCREL14R       14
#define R_PARISC_PCREL14F       15
#define R_PARISC_DPREL21L       18
#define R_PARISC_DPREL14WR      19
#define R_PARISC_DPREL14DR      20
#define R_PARISC_DPREL14R       22
#define R_PARISC_DPREL14F       23
#define R_PARISC_DLTREL21L      26
#define R_PARISC_DLTREL14R      30
#define R_PARISC_DLTREL14F      31
#define R_PARISC_DLTIND21L      34
#define R_PARISC_DLTIND14R      38
#define R_PARISC_DLTIND14F      39
#define R_PARISC_SETBASE        40
#define R_PARISC_SECREL32       41
#define R_PARISC_BASEREL21L     42
#define R_PARISC_BASEREL17R     43
#define R_PARISC_BASEREL17F     44
#define R_PARISC_BASEREL14R     46
#define R_PARISC_BASEREL14F     47
#define R_PARISC_SEGBASE        48
#define R_PARISC_SEGREL32       49
#define R_PARISC_PLTOFF21L      50
#define R_PARISC_PLTOFF14R      54
#define R_PARISC_PLTOFF14F      55
#define R_PARISC_LTOFF_FPTR32   57
#define R_PARISC_LTOFF_FPTR21L  58
#define R_PARISC_LTOFF_FPTR14R  62
#define R_PARISC_FPTR64         64
#define R_PARISC_PLABEL32       65
#define R_PARISC_PLABEL21L      66
#define R_PARISC_PLABEL14R      70
#define R_PARISC_PCREL64        72
#define R_PARISC_PCREL22C       73
#define R_PARISC_PCREL22F       74
#define R_PARISC_PCREL14WR      75
#define R_PARISC_PCREL14DR      76
#define R_PARISC_PCREL16F       77
#define R_PARISC_PCREL16WF      78
#define R_PARISC_PCREL16DF      79
#define R_PARISC_DIR64          80
#define R_PARISC_DIR64WR        81
#define R_PARISC_DIR64DR        82
#define R_PARISC_DIR14WR        83
#define R_PARISC_DIR14DR        84
#define R_PARISC_DIR16F         85
#define R_PARISC_DIR16WF        86
#define R_PARISC_DIR16DF        87
#define R_PARISC_GPREL64        88
#define R_PARISC_DLTREL14WR     91
#define R_PARISC_DLTREL14DR     92
#define R_PARISC_GPREL16F       93
#define R_PARISC_GPREL16WF      94
#define R_PARISC_GPREL16DF      95
#define R_PARISC_LTOFF64        96
#define R_PARISC_DLTIND14WR     99
#define R_PARISC_DLTIND14DR     100
#define R_PARISC_LTOFF16F       101
#define R_PARISC_LTOFF16WF      102
#define R_PARISC_LTOFF16DF      103
#define R_PARISC_SECREL64       104
#define R_PARISC_BASEREL14WR    107
#define R_PARISC_BASEREL14DR    108
#define R_PARISC_SEGREL64       112
#define R_PARISC_PLTOFF14WR     115
#define R_PARISC_PLTOFF14DR     116
#define R_PARISC_PLTOFF16F      117
#define R_PARISC_PLTOFF16WF     118
#define R_PARISC_PLTOFF16DF     119
#define R_PARISC_LTOFF_FPTR64   120
#define R_PARISC_LTOFF_FPTR14WR 123
#define R_PARISC_LTOFF_FPTR14DR 124
#define R_PARISC_LTOFF_FPTR16F  125
#define R_PARISC_LTOFF_FPTR16WF 126
#define R_PARISC_LTOFF_FPTR16DF 127
#define R_PARISC_COPY          128
#define R_PARISC_IPLT          129
#define R_PARISC_EPLT          130
#define R_PARISC_TPREL32        153
#define R_PARISC_TPREL21L       154
#define R_PARISC_TPREL14R       158
#define R_PARISC_LTOFF_TP21L    162
#define R_PARISC_LTOFF_TP14R    166
#define R_PARISC_LTOFF_TP14F    167
#define R_PARISC_TPREL64        216
#define R_PARISC_TPREL14WR      219
#define R_PARISC_TPREL14DR      220
#define R_PARISC_TPREL16F       221
#define R_PARISC_TPREL16WF      222
#define R_PARISC_TPREL16DF      223
#define R_PARISC_LTOFF_TP64     224
#define R_PARISC_LTOFF_TP14WR   227
#define R_PARISC_LTOFF_TP14DR   228
#define R_PARISC_LTOFF_TP16F    229
#define R_PARISC_LTOFF_TP16WF   230
#define R_PARISC_LTOFF_TP16DF   231
#define R_PARISC_GNU_VTENTRY    232
#define R_PARISC_GNU_VTINHERIT  233

/* TLS relocations */
#define R_PARISC_TLS_GD21L      234
#define R_PARISC_TLS_GD14R      235
#define R_PARISC_TLS_GDCALL     236
#define R_PARISC_TLS_LDM21L     237
#define R_PARISC_TLS_LDM14R     238
#define R_PARISC_TLS_LDMCALL    239
#define R_PARISC_TLS_LDO21L     240
#define R_PARISC_TLS_LDO14R     241
#define R_PARISC_TLS_DTPMOD32   242
#define R_PARISC_TLS_DTPMOD64   243
#define R_PARISC_TLS_DTPOFF32   244
#define R_PARISC_TLS_DTPOFF64   245

#define R_PARISC_TLS_LE21L      R_PARISC_TPREL21L
#define R_PARISC_TLS_LE14R      R_PARISC_TPREL14R
#define R_PARISC_TLS_IE21L      R_PARISC_LTOFF_TP21L
#define R_PARISC_TLS_IE14R      R_PARISC_LTOFF_TP14R
#define R_PARISC_TLS_TPREL32    R_PARISC_TPREL32
#define R_PARISC_TLS_TPREL64    R_PARISC_TPREL64

#define R_TYPE(name)    __CONCAT(R_PARISC_,name)