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