1*043da685Sguenther /* $OpenBSD: exec.h,v 1.11 2017/02/08 05:09:26 guenther Exp $ */ 2908fd733Sjason /* $NetBSD: elf_machdep.h,v 1.7 2001/02/11 00:18:49 eeh Exp $ */ 3908fd733Sjason 4908fd733Sjason #define ARCH_ELFSIZE 64 /* MD native binary size */ 56e16fb04Sart #define ELF_TARG_CLASS ELFCLASS64 66e16fb04Sart #define ELF_TARG_MACH EM_SPARCV9 7908fd733Sjason 86e16fb04Sart #define ELF_TARG_DATA ELFDATA2MSB 96e16fb04Sart 10908fd733Sjason /* The following are what is used for AT_SUN_HWCAP: */ 11908fd733Sjason #define AV_SPARC_HWMUL_32x32 1 /* 32x32-bit smul/umul is efficient */ 12908fd733Sjason #define AV_SPARC_HWDIV_32x32 2 /* 32x32-bit sdiv/udiv is efficient */ 13908fd733Sjason #define AV_SPARC_HWFSMULD 4 /* fsmuld is efficient */ 14908fd733Sjason 15908fd733Sjason /* 16908fd733Sjason * Here are some SPARC specific flags I can't 17908fd733Sjason * find a better home for. They are used for AT_FLAGS 18908fd733Sjason * and in the exec header. 19908fd733Sjason */ 20908fd733Sjason #define EF_SPARCV9_MM 0x3 21908fd733Sjason #define EF_SPARCV9_TSO 0x0 22908fd733Sjason #define EF_SPARCV9_PSO 0x1 23908fd733Sjason #define EF_SPARCV9_RMO 0x2 24908fd733Sjason 25908fd733Sjason #define EF_SPARC_32PLUS_MASK 0xffff00 /* bits indicating V8+ type */ 26908fd733Sjason #define EF_SPARC_32PLUS 0x000100 /* generic V8+ features */ 27908fd733Sjason #define EF_SPARC_EXT_MASK 0xffff00 /* bits for vendor extensions */ 28908fd733Sjason #define EF_SPARC_SUN_US1 0x000200 /* UltraSPARC 1 extensions */ 29908fd733Sjason #define EF_SPARC_HAL_R1 0x000400 /* HAL R1 extensions */ 30908fd733Sjason #define EF_SPARC_SUN_US3 0x000800 /* UltraSPARC 3 extensions */ 31908fd733Sjason 32908fd733Sjason /* Relocation types */ 33908fd733Sjason #define R_SPARC_NONE 0 34908fd733Sjason #define R_SPARC_8 1 35908fd733Sjason #define R_SPARC_16 2 36908fd733Sjason #define R_SPARC_32 3 37908fd733Sjason #define R_SPARC_DISP8 4 38908fd733Sjason #define R_SPARC_DISP16 5 39908fd733Sjason #define R_SPARC_DISP32 6 40908fd733Sjason #define R_SPARC_WDISP30 7 41908fd733Sjason #define R_SPARC_WDISP22 8 42908fd733Sjason #define R_SPARC_HI22 9 43908fd733Sjason #define R_SPARC_22 10 44908fd733Sjason #define R_SPARC_13 11 45908fd733Sjason #define R_SPARC_LO10 12 46908fd733Sjason #define R_SPARC_GOT10 13 47908fd733Sjason #define R_SPARC_GOT13 14 48908fd733Sjason #define R_SPARC_GOT22 15 49908fd733Sjason #define R_SPARC_PC10 16 50908fd733Sjason #define R_SPARC_PC22 17 51908fd733Sjason #define R_SPARC_WPLT30 18 52908fd733Sjason #define R_SPARC_COPY 19 53908fd733Sjason #define R_SPARC_GLOB_DAT 20 54908fd733Sjason #define R_SPARC_JMP_SLOT 21 55908fd733Sjason #define R_SPARC_RELATIVE 22 56908fd733Sjason #define R_SPARC_UA32 23 57908fd733Sjason #define R_SPARC_PLT32 24 58908fd733Sjason #define R_SPARC_HIPLT22 25 59908fd733Sjason #define R_SPARC_LOPLT10 26 60908fd733Sjason #define R_SPARC_PCPLT32 27 61908fd733Sjason #define R_SPARC_PCPLT22 28 62908fd733Sjason #define R_SPARC_PCPLT10 29 63908fd733Sjason #define R_SPARC_10 30 64908fd733Sjason #define R_SPARC_11 31 65908fd733Sjason #define R_SPARC_64 32 66908fd733Sjason #define R_SPARC_OLO10 33 67908fd733Sjason #define R_SPARC_HH22 34 68908fd733Sjason #define R_SPARC_HM10 35 69908fd733Sjason #define R_SPARC_LM22 36 70908fd733Sjason #define R_SPARC_PC_HH22 37 71908fd733Sjason #define R_SPARC_PC_HM10 38 72908fd733Sjason #define R_SPARC_PC_LM22 39 73908fd733Sjason #define R_SPARC_WDISP16 40 74908fd733Sjason #define R_SPARC_WDISP19 41 75908fd733Sjason #define R_SPARC_GLOB_JMP 42 76908fd733Sjason #define R_SPARC_7 43 77908fd733Sjason #define R_SPARC_5 44 78908fd733Sjason #define R_SPARC_6 45 79908fd733Sjason #define R_SPARC_DISP64 46 80908fd733Sjason #define R_SPARC_PLT64 47 81908fd733Sjason #define R_SPARC_HIX22 48 82908fd733Sjason #define R_SPARC_LOX10 49 83908fd733Sjason #define R_SPARC_H44 50 84908fd733Sjason #define R_SPARC_M44 51 85908fd733Sjason #define R_SPARC_L44 52 86908fd733Sjason #define R_SPARC_REGISTER 53 87908fd733Sjason #define R_SPARC_UA64 54 88908fd733Sjason #define R_SPARC_UA16 55 8967a4350fSguenther #define R_SPARC_TLS_DTPMOD32 74 9067a4350fSguenther #define R_SPARC_TLS_DTPMOD64 75 9167a4350fSguenther #define R_SPARC_TLS_DTPOFF32 76 9267a4350fSguenther #define R_SPARC_TLS_DTPOFF64 77 9367a4350fSguenther #define R_SPARC_TLS_TPOFF32 78 9467a4350fSguenther #define R_SPARC_TLS_TPOFF64 79 95908fd733Sjason 96908fd733Sjason 97908fd733Sjason #define R_TYPE(name) __CONCAT(R_SPARC_,name) 98908fd733Sjason 99908fd733Sjason #define __LDPGSZ 8192 /* linker page size */ 100