18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#ifndef _ASM_M68K_MODULE_H 38c2ecf20Sopenharmony_ci#define _ASM_M68K_MODULE_H 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci#include <asm-generic/module.h> 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_cienum m68k_fixup_type { 88c2ecf20Sopenharmony_ci m68k_fixup_memoffset, 98c2ecf20Sopenharmony_ci m68k_fixup_vnode_shift, 108c2ecf20Sopenharmony_ci}; 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_cistruct m68k_fixup_info { 138c2ecf20Sopenharmony_ci enum m68k_fixup_type type; 148c2ecf20Sopenharmony_ci void *addr; 158c2ecf20Sopenharmony_ci}; 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_cistruct mod_arch_specific { 188c2ecf20Sopenharmony_ci struct m68k_fixup_info *fixup_start, *fixup_end; 198c2ecf20Sopenharmony_ci}; 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci#ifdef CONFIG_MMU 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci#define MODULE_ARCH_INIT { \ 248c2ecf20Sopenharmony_ci .fixup_start = __start_fixup, \ 258c2ecf20Sopenharmony_ci .fixup_end = __stop_fixup, \ 268c2ecf20Sopenharmony_ci} 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci#define m68k_fixup(type, addr) \ 308c2ecf20Sopenharmony_ci " .section \".m68k_fixup\",\"aw\"\n" \ 318c2ecf20Sopenharmony_ci " .long " #type "," #addr "\n" \ 328c2ecf20Sopenharmony_ci " .previous\n" 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ci#endif /* CONFIG_MMU */ 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ciextern struct m68k_fixup_info __start_fixup[], __stop_fixup[]; 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_cistruct module; 398c2ecf20Sopenharmony_ciextern void module_fixup(struct module *mod, struct m68k_fixup_info *start, 408c2ecf20Sopenharmony_ci struct m68k_fixup_info *end); 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci#endif /* _ASM_M68K_MODULE_H */ 43