1/*
2** Copyright 2003, Axel D��rfler, axeld@pinc-software.de. All rights reserved.
3** Distributed under the terms of the MIT License.
4*/
5#ifndef _KERNEL_ARCH_x86_ELF_H
6#define _KERNEL_ARCH_x86_ELF_H
7
8/* relocation types */
9
10#define	R_386_NONE			0	/* No relocation. */
11#define	R_386_32			1	/* Add symbol value. */
12#define	R_386_PC32			2	/* Add PC-relative symbol value. */
13#define	R_386_GOT32			3	/* Add PC-relative GOT offset. */
14#define	R_386_PLT32			4	/* Add PC-relative PLT offset. */
15#define	R_386_COPY			5	/* Copy data from shared object. */
16#define	R_386_GLOB_DAT		6	/* Set GOT entry to data address. */
17#define	R_386_JMP_SLOT		7	/* Set GOT entry to code address. */
18#define	R_386_RELATIVE		8	/* Add load address of shared object. */
19#define	R_386_GOTOFF		9	/* Add GOT-relative symbol address. */
20#define	R_386_GOTPC			10	/* Add PC-relative GOT table address. */
21#define	R_386_32PLT			11
22#define	R_386_TLS_TPOFF		14	/* Negative offset in static TLS block */
23#define	R_386_TLS_IE		15	/* Absolute address of GOT for -ve static TLS */
24#define	R_386_TLS_GOTIE		16	/* GOT entry for negative static TLS block */
25#define	R_386_TLS_LE		17	/* Negative offset relative to static TLS */
26#define	R_386_TLS_GD		18	/* 32 bit offset to GOT (index,off) pair */
27#define	R_386_TLS_LDM		19	/* 32 bit offset to GOT (index,zero) pair */
28#define	R_386_16			20
29#define	R_386_PC16			21
30#define	R_386_8				22
31#define	R_386_PC8			23
32#define	R_386_TLS_GD_32		24	/* 32 bit offset to GOT (index,off) pair */
33#define	R_386_TLS_GD_PUSH	25	/* pushl instruction for Sun ABI GD sequence */
34#define	R_386_TLS_GD_CALL	26	/* call instruction for Sun ABI GD sequence */
35#define	R_386_TLS_GD_POP	27	/* popl instruction for Sun ABI GD sequence */
36#define	R_386_TLS_LDM_32	28	/* 32 bit offset to GOT (index,zero) pair */
37#define	R_386_TLS_LDM_PUSH	29	/* pushl instruction for Sun ABI LD sequence */
38#define	R_386_TLS_LDM_CALL	30	/* call instruction for Sun ABI LD sequence */
39#define	R_386_TLS_LDM_POP	31	/* popl instruction for Sun ABI LD sequence */
40#define	R_386_TLS_LDO_32	32	/* 32 bit offset from start of TLS block */
41#define	R_386_TLS_IE_32		33	/* 32 bit offset to GOT static TLS offset entry */
42#define	R_386_TLS_LE_32		34	/* 32 bit offset within static TLS block */
43#define	R_386_TLS_DTPMOD32	35	/* GOT entry containing TLS index */
44#define	R_386_TLS_DTPOFF32	36	/* GOT entry containing TLS offset */
45#define	R_386_TLS_TPOFF32	37	/* GOT entry of -ve static TLS offset */
46#define	R_386_SIZE32		38
47#define	R_386_TLS_GOTDESC	39
48#define	R_386_TLS_DESC_CALL	40
49#define	R_386_TLS_DESC		41
50#define	R_386_IRELATIVE		42	/* PLT entry resolved indirectly at runtime */
51#define	R_386_GOT32X		43
52
53#define TLS_DTV_OFFSET 0
54
55#ifdef _BOOT_MODE
56# include "../x86_64/arch_elf.h"
57#endif
58
59#endif	/* _KERNEL_ARCH_x86_ELF_H */
60