Zephyr Project API 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
elf.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2025 NVIDIA Corporation <jholdsworth@nvidia.com>
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
11
12#ifndef ZEPHYR_INCLUDE_ARCH_OPENRISC_ELF_H_
13#define ZEPHYR_INCLUDE_ARCH_OPENRISC_ELF_H_
14
21
22/* Basic relocations */
23#define R_OR1K_NONE 0
24#define R_OR1K_32 1
25#define R_OR1K_16 2
26#define R_OR1K_8 3
27#define R_OR1K_LO_16_IN_INSN 4
28#define R_OR1K_HI_16_IN_INSN 5
29#define R_OR1K_INSN_REL_26 6
30#define R_OR1K_GNU_VTENTRY 7
31#define R_OR1K_GNU_VTINHERIT 8
32#define R_OR1K_32_PCREL 9
33#define R_OR1K_16_PCREL 10
34#define R_OR1K_8_PCREL 11
35
36/* GOT/PLT relocations */
37#define R_OR1K_GOTPC_HI16 12
38#define R_OR1K_GOTPC_LO16 13
39#define R_OR1K_GOT16 14
40#define R_OR1K_PLT26 15
41#define R_OR1K_GOTOFF_HI16 16
42#define R_OR1K_GOTOFF_LO16 17
43
44/* Dynamic relocations */
45#define R_OR1K_COPY 18
46#define R_OR1K_GLOB_DAT 19
47#define R_OR1K_JMP_SLOT 20
48#define R_OR1K_RELATIVE 21
49
50/* TLS relocations */
51#define R_OR1K_TLS_GD_HI16 22
52#define R_OR1K_TLS_GD_LO16 23
53#define R_OR1K_TLS_LDM_HI16 24
54#define R_OR1K_TLS_LDM_LO16 25
55#define R_OR1K_TLS_LDO_HI16 26
56#define R_OR1K_TLS_LDO_LO16 27
57#define R_OR1K_TLS_IE_HI16 28
58#define R_OR1K_TLS_IE_LO16 29
59#define R_OR1K_TLS_LE_HI16 30
60#define R_OR1K_TLS_LE_LO16 31
61#define R_OR1K_TLS_TPOFF 32
62#define R_OR1K_TLS_DTPOFF 33
63#define R_OR1K_TLS_DTPMOD 34
64
65/* Adjusted high / split-immediate relocations */
66#define R_OR1K_AHI16 35
67#define R_OR1K_GOTOFF_AHI16 36
68#define R_OR1K_TLS_IE_AHI16 37
69#define R_OR1K_TLS_LE_AHI16 38
70#define R_OR1K_SLO16 39
71#define R_OR1K_GOTOFF_SLO16 40
72#define R_OR1K_TLS_LE_SLO16 41
73
74/* Page-relative relocations */
75#define R_OR1K_PCREL_PG21 42
76#define R_OR1K_GOT_PG21 43
77#define R_OR1K_TLS_GD_PG21 44
78#define R_OR1K_TLS_LDM_PG21 45
79#define R_OR1K_TLS_IE_PG21 46
80#define R_OR1K_LO13 47
81#define R_OR1K_GOT_LO13 48
82#define R_OR1K_TLS_GD_LO13 49
83#define R_OR1K_TLS_LDM_LO13 50
84#define R_OR1K_TLS_IE_LO13 51
85#define R_OR1K_SLO13 52
86#define R_OR1K_PLTA26 53
87#define R_OR1K_GOT_AHI16 54
88
90
97
99#define R_OR1K_INSN_REL_26_MASK 0x03ffffffU
100
102#define R_OR1K_IMM16_MASK 0x0000ffffU
103
105#define R_OR1K_PG21_MASK 0x001fffffU
106
117#define R_OR1K_SLO_FIELD_MASK 0x03e007ffU
118
126#define R_OR1K_SLO_PACK(insn, imm) \
127 (((insn) & ~R_OR1K_SLO_FIELD_MASK) | \
128 (((uint32_t)(imm) & 0xf800U) << 10) | \
129 ((uint32_t)(imm) & 0x07ffU))
130
132#define R_OR1K_PAGE_SIZE 8192U
134#define R_OR1K_PAGE_MASK (~(R_OR1K_PAGE_SIZE - 1U))
135
136#endif /* ZEPHYR_INCLUDE_ARCH_OPENRISC_ELF_H_ */