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