1 1.3.12.2 bouyer /* $NetBSD: elf_machdep.h,v 1.3.12.2 2001/02/11 19:12:31 bouyer Exp $ */ 2 1.1 eeh 3 1.3.12.1 bouyer #define ELF32_MACHDEP_ENDIANNESS ELFDATA2MSB 4 1.1 eeh #define ELF32_MACHDEP_ID_CASES \ 5 1.3.12.1 bouyer case EM_SPARC: \ 6 1.3.12.1 bouyer case EM_SPARC32PLUS: \ 7 1.1 eeh break; 8 1.1 eeh 9 1.3.12.1 bouyer #define ELF64_MACHDEP_ENDIANNESS ELFDATA2MSB 10 1.1 eeh #define ELF64_MACHDEP_ID_CASES \ 11 1.3.12.1 bouyer case EM_SPARC32PLUS: \ 12 1.3.12.1 bouyer case EM_SPARCV9: \ 13 1.1 eeh break; 14 1.2 eeh 15 1.3.12.1 bouyer #ifdef __arch64__ 16 1.3.12.1 bouyer #define ARCH_ELFSIZE 64 /* MD native binary size */ 17 1.3.12.1 bouyer #else 18 1.3.12.1 bouyer #define ARCH_ELFSIZE 32 /* MD native binary size */ 19 1.3.12.1 bouyer #endif 20 1.3.12.1 bouyer 21 1.3.12.2 bouyer /* The following are what is used for AT_SUN_HWCAP: */ 22 1.3.12.2 bouyer #define AV_SPARC_HWMUL_32x32 1 /* 32x32-bit smul/umul is efficient */ 23 1.3.12.2 bouyer #define AV_SPARC_HWDIV_32x32 2 /* 32x32-bit sdiv/udiv is efficient */ 24 1.3.12.2 bouyer #define AV_SPARC_HWFSMULD 4 /* fsmuld is efficient */ 25 1.3.12.2 bouyer 26 1.3.12.2 bouyer /* 27 1.3.12.2 bouyer * Here are some SPARC specific flags I can't 28 1.3.12.2 bouyer * find a better home for. They are used for AT_FLAGS 29 1.3.12.2 bouyer * and in the exec header. 30 1.3.12.2 bouyer */ 31 1.3.12.2 bouyer #define EF_SPARCV9_MM 0x3 32 1.3.12.2 bouyer #define EF_SPARCV9_TSO 0x0 33 1.3.12.2 bouyer #define EF_SPARCV9_PSO 0x1 34 1.3.12.2 bouyer #define EF_SPARCV9_RMO 0x2 35 1.3.12.2 bouyer 36 1.3.12.2 bouyer #define EF_SPARC_32PLUS_MASK 0xffff00 /* bits indicating V8+ type */ 37 1.3.12.2 bouyer #define EF_SPARC_32PLUS 0x000100 /* generic V8+ features */ 38 1.3.12.2 bouyer #define EF_SPARC_EXT_MASK 0xffff00 /* bits for vendor extensions */ 39 1.3.12.2 bouyer #define EF_SPARC_SUN_US1 0x000200 /* UltraSPARC 1 extensions */ 40 1.3.12.2 bouyer #define EF_SPARC_HAL_R1 0x000400 /* HAL R1 extensions */ 41 1.3.12.2 bouyer #define EF_SPARC_SUN_US3 0x000800 /* UltraSPARC 3 extensions */ 42 1.3.12.2 bouyer 43 1.3.12.2 bouyer /* Relocation types */ 44 1.2 eeh #define R_SPARC_NONE 0 45 1.2 eeh #define R_SPARC_8 1 46 1.2 eeh #define R_SPARC_16 2 47 1.2 eeh #define R_SPARC_32 3 48 1.2 eeh #define R_SPARC_DISP8 4 49 1.2 eeh #define R_SPARC_DISP16 5 50 1.2 eeh #define R_SPARC_DISP32 6 51 1.2 eeh #define R_SPARC_WDISP30 7 52 1.2 eeh #define R_SPARC_WDISP22 8 53 1.2 eeh #define R_SPARC_HI22 9 54 1.2 eeh #define R_SPARC_22 10 55 1.2 eeh #define R_SPARC_13 11 56 1.2 eeh #define R_SPARC_LO10 12 57 1.2 eeh #define R_SPARC_GOT10 13 58 1.2 eeh #define R_SPARC_GOT13 14 59 1.2 eeh #define R_SPARC_GOT22 15 60 1.2 eeh #define R_SPARC_PC10 16 61 1.2 eeh #define R_SPARC_PC22 17 62 1.2 eeh #define R_SPARC_WPLT30 18 63 1.2 eeh #define R_SPARC_COPY 19 64 1.2 eeh #define R_SPARC_GLOB_DAT 20 65 1.2 eeh #define R_SPARC_JMP_SLOT 21 66 1.2 eeh #define R_SPARC_RELATIVE 22 67 1.2 eeh #define R_SPARC_UA32 23 68 1.2 eeh #define R_SPARC_PLT32 24 69 1.2 eeh #define R_SPARC_HIPLT22 25 70 1.2 eeh #define R_SPARC_LOPLT10 26 71 1.2 eeh #define R_SPARC_PCPLT32 27 72 1.2 eeh #define R_SPARC_PCPLT22 28 73 1.2 eeh #define R_SPARC_PCPLT10 29 74 1.2 eeh #define R_SPARC_10 30 75 1.2 eeh #define R_SPARC_11 31 76 1.2 eeh #define R_SPARC_64 32 77 1.2 eeh #define R_SPARC_OLO10 33 78 1.2 eeh #define R_SPARC_HH22 34 79 1.2 eeh #define R_SPARC_HM10 35 80 1.2 eeh #define R_SPARC_LM22 36 81 1.2 eeh #define R_SPARC_PC_HH22 37 82 1.2 eeh #define R_SPARC_PC_HM10 38 83 1.2 eeh #define R_SPARC_PC_LM22 39 84 1.2 eeh #define R_SPARC_WDISP16 40 85 1.2 eeh #define R_SPARC_WDISP19 41 86 1.2 eeh #define R_SPARC_GLOB_JMP 42 87 1.2 eeh #define R_SPARC_7 43 88 1.2 eeh #define R_SPARC_5 44 89 1.2 eeh #define R_SPARC_6 45 90 1.3.12.1 bouyer #define R_SPARC_DISP64 46 91 1.3.12.1 bouyer #define R_SPARC_PLT64 47 92 1.3.12.1 bouyer #define R_SPARC_HIX22 48 93 1.3.12.1 bouyer #define R_SPARC_LOX10 49 94 1.3.12.1 bouyer #define R_SPARC_H44 50 95 1.3.12.1 bouyer #define R_SPARC_M44 51 96 1.3.12.1 bouyer #define R_SPARC_L44 52 97 1.3.12.1 bouyer #define R_SPARC_REGISTER 53 98 1.3.12.1 bouyer #define R_SPARC_UA64 54 99 1.3.12.1 bouyer #define R_SPARC_UA16 55 100 1.3.12.1 bouyer 101 1.2 eeh 102 1.2 eeh #define R_TYPE(name) __CONCAT(R_SPARC_,name) 103