]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
1da177e4 LT |
2 | #ifndef _ASM_ARM_MODULE_H |
3 | #define _ASM_ARM_MODULE_H | |
4 | ||
786d35d4 | 5 | #include <asm-generic/module.h> |
1da177e4 | 6 | |
2e1926e7 CM |
7 | struct unwind_table; |
8 | ||
2e1926e7 | 9 | #ifdef CONFIG_ARM_UNWIND |
e5f7772e PC |
10 | enum { |
11 | ARM_SEC_INIT, | |
12 | ARM_SEC_DEVINIT, | |
13 | ARM_SEC_CORE, | |
09e56a2d PC |
14 | ARM_SEC_EXIT, |
15 | ARM_SEC_DEVEXIT, | |
849b882b DA |
16 | ARM_SEC_HOT, |
17 | ARM_SEC_UNLIKELY, | |
e5f7772e PC |
18 | ARM_SEC_MAX, |
19 | }; | |
7d485f64 | 20 | #endif |
8931360e | 21 | |
b7ede5a1 AB |
22 | struct mod_plt_sec { |
23 | struct elf32_shdr *plt; | |
24 | int plt_count; | |
25 | }; | |
26 | ||
e5f7772e | 27 | struct mod_arch_specific { |
7d485f64 | 28 | #ifdef CONFIG_ARM_UNWIND |
8931360e | 29 | struct unwind_table *unwind[ARM_SEC_MAX]; |
786d35d4 | 30 | #endif |
7d485f64 | 31 | #ifdef CONFIG_ARM_MODULE_PLTS |
b7ede5a1 AB |
32 | struct mod_plt_sec core; |
33 | struct mod_plt_sec init; | |
7d485f64 AB |
34 | #endif |
35 | }; | |
36 | ||
4d58e703 | 37 | struct module; |
7d485f64 | 38 | u32 get_module_plt(struct module *mod, unsigned long loc, Elf32_Addr val); |
2e1926e7 | 39 | |
93d77e7f VW |
40 | #ifdef CONFIG_THUMB2_KERNEL |
41 | #define HAVE_ARCH_KALLSYMS_SYMBOL_VALUE | |
42 | static inline unsigned long kallsyms_symbol_value(const Elf_Sym *sym) | |
43 | { | |
44 | if (ELF_ST_TYPE(sym->st_info) == STT_FUNC) | |
45 | return sym->st_value & ~1; | |
46 | ||
47 | return sym->st_value; | |
48 | } | |
49 | #endif | |
50 | ||
1da177e4 | 51 | #endif /* _ASM_ARM_MODULE_H */ |