1228879Sed/* SPDX-License-Identifier: GPL-2.0 */
2228879Sed#ifndef __ASM_GENERIC_MODULE_H
3228879Sed#define __ASM_GENERIC_MODULE_H
4228879Sed
5228879Sed/*
6228879Sed * Many architectures just need a simple module
7228879Sed * loader without arch specific data.
8228879Sed */
9228879Sed#ifndef CONFIG_HAVE_MOD_ARCH_SPECIFIC
10228879Sedstruct mod_arch_specific
11228879Sed{
12228879Sed};
13228879Sed#endif
14228879Sed
15228879Sed#ifdef CONFIG_64BIT
16228879Sed#define Elf_Shdr	Elf64_Shdr
17228879Sed#define Elf_Phdr	Elf64_Phdr
18228879Sed#define Elf_Sym		Elf64_Sym
19228879Sed#define Elf_Dyn		Elf64_Dyn
20228879Sed#define Elf_Ehdr	Elf64_Ehdr
21228879Sed#define Elf_Addr	Elf64_Addr
22228879Sed#ifdef CONFIG_MODULES_USE_ELF_REL
23228879Sed#define Elf_Rel		Elf64_Rel
24228879Sed#endif
25228879Sed#ifdef CONFIG_MODULES_USE_ELF_RELA
26228879Sed#define Elf_Rela	Elf64_Rela
27228879Sed#endif
28228879Sed#define ELF_R_TYPE(X)	ELF64_R_TYPE(X)
29229437Sed#define ELF_R_SYM(X)	ELF64_R_SYM(X)
30229437Sed
31229437Sed#else /* CONFIG_64BIT */
32229437Sed
33228879Sed#define Elf_Shdr	Elf32_Shdr
34228879Sed#define Elf_Phdr	Elf32_Phdr
35228879Sed#define Elf_Sym		Elf32_Sym
36228879Sed#define Elf_Dyn		Elf32_Dyn
37228879Sed#define Elf_Ehdr	Elf32_Ehdr
38228879Sed#define Elf_Addr	Elf32_Addr
39#ifdef CONFIG_MODULES_USE_ELF_REL
40#define Elf_Rel		Elf32_Rel
41#endif
42#ifdef CONFIG_MODULES_USE_ELF_RELA
43#define Elf_Rela	Elf32_Rela
44#endif
45#define ELF_R_TYPE(X)	ELF32_R_TYPE(X)
46#define ELF_R_SYM(X)	ELF32_R_SYM(X)
47#endif
48
49#endif /* __ASM_GENERIC_MODULE_H */
50