xref: /openbmc/linux/arch/m68k/include/asm/module.h (revision 95e9fd10)
1 #ifndef _ASM_M68K_MODULE_H
2 #define _ASM_M68K_MODULE_H
3 
4 enum m68k_fixup_type {
5 	m68k_fixup_memoffset,
6 	m68k_fixup_vnode_shift,
7 };
8 
9 struct m68k_fixup_info {
10 	enum m68k_fixup_type type;
11 	void *addr;
12 };
13 
14 struct mod_arch_specific {
15 	struct m68k_fixup_info *fixup_start, *fixup_end;
16 };
17 
18 #ifdef CONFIG_MMU
19 
20 #define MODULE_ARCH_INIT {				\
21 	.fixup_start		= __start_fixup,	\
22 	.fixup_end		= __stop_fixup,		\
23 }
24 
25 
26 #define m68k_fixup(type, addr)			\
27 	"	.section \".m68k_fixup\",\"aw\"\n"	\
28 	"	.long " #type "," #addr "\n"	\
29 	"	.previous\n"
30 
31 #endif /* CONFIG_MMU */
32 
33 extern struct m68k_fixup_info __start_fixup[], __stop_fixup[];
34 
35 struct module;
36 extern void module_fixup(struct module *mod, struct m68k_fixup_info *start,
37 			 struct m68k_fixup_info *end);
38 
39 #define Elf_Shdr Elf32_Shdr
40 #define Elf_Sym Elf32_Sym
41 #define Elf_Ehdr Elf32_Ehdr
42 
43 #endif /* _ASM_M68K_MODULE_H */
44