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