xref: /openbmc/linux/arch/riscv/include/uapi/asm/elf.h (revision e21d5421)
1e2c0cdfbSPalmer Dabbelt /*
2e2c0cdfbSPalmer Dabbelt  * Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com>
3e2c0cdfbSPalmer Dabbelt  * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
4e2c0cdfbSPalmer Dabbelt  * Copyright (C) 2012 Regents of the University of California
5e2c0cdfbSPalmer Dabbelt  *
6e2c0cdfbSPalmer Dabbelt  * This program is free software; you can redistribute it and/or modify
7e2c0cdfbSPalmer Dabbelt  * it under the terms of the GNU General Public License as published by
8e2c0cdfbSPalmer Dabbelt  * the Free Software Foundation; either version 2 of the License, or
9e2c0cdfbSPalmer Dabbelt  * (at your option) any later version.
10e2c0cdfbSPalmer Dabbelt  */
11e2c0cdfbSPalmer Dabbelt 
12e2c0cdfbSPalmer Dabbelt #ifndef _UAPI_ASM_ELF_H
13e2c0cdfbSPalmer Dabbelt #define _UAPI_ASM_ELF_H
14e2c0cdfbSPalmer Dabbelt 
15e2c0cdfbSPalmer Dabbelt #include <asm/ptrace.h>
16e2c0cdfbSPalmer Dabbelt 
17e2c0cdfbSPalmer Dabbelt /* ELF register definitions */
18e2c0cdfbSPalmer Dabbelt typedef unsigned long elf_greg_t;
19e2c0cdfbSPalmer Dabbelt typedef struct user_regs_struct elf_gregset_t;
20e2c0cdfbSPalmer Dabbelt #define ELF_NGREG (sizeof(elf_gregset_t) / sizeof(elf_greg_t))
21e2c0cdfbSPalmer Dabbelt 
22e2c0cdfbSPalmer Dabbelt typedef union __riscv_fp_state elf_fpregset_t;
23e2c0cdfbSPalmer Dabbelt 
24e2c0cdfbSPalmer Dabbelt #define ELF_RISCV_R_SYM(r_info) ((r_info) >> 32)
25e2c0cdfbSPalmer Dabbelt #define ELF_RISCV_R_TYPE(r_info) ((r_info) & 0xffffffff)
26e2c0cdfbSPalmer Dabbelt 
27e2c0cdfbSPalmer Dabbelt /*
28e2c0cdfbSPalmer Dabbelt  * RISC-V relocation types
29e2c0cdfbSPalmer Dabbelt  */
30e2c0cdfbSPalmer Dabbelt 
31e2c0cdfbSPalmer Dabbelt /* Relocation types used by the dynamic linker */
32e2c0cdfbSPalmer Dabbelt #define R_RISCV_NONE		0
33e2c0cdfbSPalmer Dabbelt #define R_RISCV_32		1
34e2c0cdfbSPalmer Dabbelt #define R_RISCV_64		2
35e2c0cdfbSPalmer Dabbelt #define R_RISCV_RELATIVE	3
36e2c0cdfbSPalmer Dabbelt #define R_RISCV_COPY		4
37e2c0cdfbSPalmer Dabbelt #define R_RISCV_JUMP_SLOT	5
38e2c0cdfbSPalmer Dabbelt #define R_RISCV_TLS_DTPMOD32	6
39e2c0cdfbSPalmer Dabbelt #define R_RISCV_TLS_DTPMOD64	7
40e2c0cdfbSPalmer Dabbelt #define R_RISCV_TLS_DTPREL32	8
41e2c0cdfbSPalmer Dabbelt #define R_RISCV_TLS_DTPREL64	9
42e2c0cdfbSPalmer Dabbelt #define R_RISCV_TLS_TPREL32	10
43e2c0cdfbSPalmer Dabbelt #define R_RISCV_TLS_TPREL64	11
44e2c0cdfbSPalmer Dabbelt 
45e2c0cdfbSPalmer Dabbelt /* Relocation types not used by the dynamic linker */
46e2c0cdfbSPalmer Dabbelt #define R_RISCV_BRANCH		16
47e2c0cdfbSPalmer Dabbelt #define R_RISCV_JAL		17
48e2c0cdfbSPalmer Dabbelt #define R_RISCV_CALL		18
49e2c0cdfbSPalmer Dabbelt #define R_RISCV_CALL_PLT	19
50e2c0cdfbSPalmer Dabbelt #define R_RISCV_GOT_HI20	20
51e2c0cdfbSPalmer Dabbelt #define R_RISCV_TLS_GOT_HI20	21
52e2c0cdfbSPalmer Dabbelt #define R_RISCV_TLS_GD_HI20	22
53e2c0cdfbSPalmer Dabbelt #define R_RISCV_PCREL_HI20	23
54e2c0cdfbSPalmer Dabbelt #define R_RISCV_PCREL_LO12_I	24
55e2c0cdfbSPalmer Dabbelt #define R_RISCV_PCREL_LO12_S	25
56e2c0cdfbSPalmer Dabbelt #define R_RISCV_HI20		26
57e2c0cdfbSPalmer Dabbelt #define R_RISCV_LO12_I		27
58e2c0cdfbSPalmer Dabbelt #define R_RISCV_LO12_S		28
59e2c0cdfbSPalmer Dabbelt #define R_RISCV_TPREL_HI20	29
60e2c0cdfbSPalmer Dabbelt #define R_RISCV_TPREL_LO12_I	30
61e2c0cdfbSPalmer Dabbelt #define R_RISCV_TPREL_LO12_S	31
62e2c0cdfbSPalmer Dabbelt #define R_RISCV_TPREL_ADD	32
63e2c0cdfbSPalmer Dabbelt #define R_RISCV_ADD8		33
64e2c0cdfbSPalmer Dabbelt #define R_RISCV_ADD16		34
65e2c0cdfbSPalmer Dabbelt #define R_RISCV_ADD32		35
66e2c0cdfbSPalmer Dabbelt #define R_RISCV_ADD64		36
67e2c0cdfbSPalmer Dabbelt #define R_RISCV_SUB8		37
68e2c0cdfbSPalmer Dabbelt #define R_RISCV_SUB16		38
69e2c0cdfbSPalmer Dabbelt #define R_RISCV_SUB32		39
70e2c0cdfbSPalmer Dabbelt #define R_RISCV_SUB64		40
71e2c0cdfbSPalmer Dabbelt #define R_RISCV_GNU_VTINHERIT	41
72e2c0cdfbSPalmer Dabbelt #define R_RISCV_GNU_VTENTRY	42
73e2c0cdfbSPalmer Dabbelt #define R_RISCV_ALIGN		43
74e2c0cdfbSPalmer Dabbelt #define R_RISCV_RVC_BRANCH	44
75e2c0cdfbSPalmer Dabbelt #define R_RISCV_RVC_JUMP	45
76e2c0cdfbSPalmer Dabbelt #define R_RISCV_LUI		46
77e2c0cdfbSPalmer Dabbelt #define R_RISCV_GPREL_I		47
78e2c0cdfbSPalmer Dabbelt #define R_RISCV_GPREL_S		48
79e2c0cdfbSPalmer Dabbelt #define R_RISCV_TPREL_I		49
80e2c0cdfbSPalmer Dabbelt #define R_RISCV_TPREL_S		50
81e2c0cdfbSPalmer Dabbelt #define R_RISCV_RELAX		51
82e21d5421SZong Li #define R_RISCV_SUB6		52
83e21d5421SZong Li #define R_RISCV_SET6		53
84e21d5421SZong Li #define R_RISCV_SET8		54
85e21d5421SZong Li #define R_RISCV_SET16		55
86e21d5421SZong Li #define R_RISCV_SET32		56
87e21d5421SZong Li #define R_RISCV_32_PCREL	57
88e21d5421SZong Li 
89e2c0cdfbSPalmer Dabbelt 
90e2c0cdfbSPalmer Dabbelt #endif /* _UAPI_ASM_ELF_H */
91