xref: /netbsd/sys/arch/m68k/include/elf_machdep.h (revision 8ad7f8ea)
1 /*	$NetBSD: elf_machdep.h,v 1.9 2017/11/06 03:47:47 christos Exp $	*/
2 
3 #define	ELF32_MACHDEP_ENDIANNESS	ELFDATA2MSB
4 #define	ELF32_MACHDEP_ID_CASES						\
5 		case EM_68K:						\
6 			break;
7 
8 #define	ELF64_MACHDEP_ENDIANNESS	XXX	/* break compilation */
9 #define	ELF64_MACHDEP_ID_CASES						\
10 		/* no 64-bit ELF machine types supported */
11 
12 #define	ELF32_MACHDEP_ID	EM_68K
13 
14 /*
15  * Machine-dependent ELF flags.  These are defined by the GNU tools.
16  */
17 #define	EF_CPU32	0x00810000
18 #define	EF_M68000	0x01000000
19 
20 #define	KERN_ELFSIZE		32
21 #define ARCH_ELFSIZE		32	/* MD native binary size */
22 
23 /* m68k relocation types */
24 #define	R_68K_NONE	0
25 #define	R_68K_32	1
26 #define	R_68K_16	2
27 #define	R_68K_8		3
28 #define	R_68K_PC32	4
29 #define	R_68K_PC16	5
30 #define	R_68K_PC8	6
31 #define	R_68K_GOT32	7
32 #define	R_68K_GOT16	8
33 #define	R_68K_GOT8	9
34 #define	R_68K_GOT32O	10
35 #define	R_68K_GOT16O	11
36 #define	R_68K_GOT8O	12
37 #define	R_68K_PLT32	13
38 #define	R_68K_PLT16	14
39 #define	R_68K_PLT8	15
40 #define	R_68K_PLT32O	16
41 #define	R_68K_PLT16O	17
42 #define	R_68K_PLT8O	18
43 #define	R_68K_COPY	19
44 #define	R_68K_GLOB_DAT	20
45 #define	R_68K_JMP_SLOT	21
46 #define	R_68K_RELATIVE	22
47 
48 /* TLS relocations */
49 #define R_68K_TLS_GD32		25
50 #define R_68K_TLS_GD16		26
51 #define R_68K_TLS_GD8		27
52 #define R_68K_TLS_LDM32		28
53 #define R_68K_TLS_LDM16		29
54 #define R_68K_TLS_LDM8		30
55 #define R_68K_TLS_LDO32		31
56 #define R_68K_TLS_LDO16		32
57 #define R_68K_TLS_LDO8		33
58 #define R_68K_TLS_IE32		34
59 #define R_68K_TLS_IE16		35
60 #define R_68K_TLS_IE8		36
61 #define R_68K_TLS_LE32		37
62 #define R_68K_TLS_LE16		38
63 #define R_68K_TLS_LE8		39
64 #define R_68K_TLS_DTPMOD32	40
65 #define R_68K_TLS_DTPREL32	41
66 #define R_68K_TLS_TPREL32	42
67 
68 #define	R_TYPE(name)	__CONCAT(R_68K_,name)
69