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