summaryrefslogtreecommitdiffstats
path: root/arch/m68k/include/asm/module_mm.h
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2009-02-04 14:54:56 +0100
committerIngo Molnar <mingo@elte.hu>2009-02-04 14:54:56 +0100
commitbb960a1e42042e82447a5bc0941b3ab6d614bac3 (patch)
treed2295a923fabb1b01b25bb015c4c2e42ee9df5ca /arch/m68k/include/asm/module_mm.h
parent858770619debfb9269add63e4ba8b7c6b5538dd1 (diff)
parent06fc732c33a7ff5e4c91bcf4a6ca86b5e335ad9a (diff)
Merge branch 'core/xen' into x86/urgent
Diffstat (limited to 'arch/m68k/include/asm/module_mm.h')
-rw-r--r--arch/m68k/include/asm/module_mm.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/arch/m68k/include/asm/module_mm.h b/arch/m68k/include/asm/module_mm.h
new file mode 100644
index 00000000000..382d20a6fc1
--- /dev/null
+++ b/arch/m68k/include/asm/module_mm.h
@@ -0,0 +1,39 @@
+#ifndef _ASM_M68K_MODULE_H
+#define _ASM_M68K_MODULE_H
+
+struct mod_arch_specific {
+ struct m68k_fixup_info *fixup_start, *fixup_end;
+};
+
+#define MODULE_ARCH_INIT { \
+ .fixup_start = __start_fixup, \
+ .fixup_end = __stop_fixup, \
+}
+
+#define Elf_Shdr Elf32_Shdr
+#define Elf_Sym Elf32_Sym
+#define Elf_Ehdr Elf32_Ehdr
+
+
+enum m68k_fixup_type {
+ m68k_fixup_memoffset,
+ m68k_fixup_vnode_shift,
+};
+
+struct m68k_fixup_info {
+ enum m68k_fixup_type type;
+ void *addr;
+};
+
+#define m68k_fixup(type, addr) \
+ " .section \".m68k_fixup\",\"aw\"\n" \
+ " .long " #type "," #addr "\n" \
+ " .previous\n"
+
+extern struct m68k_fixup_info __start_fixup[], __stop_fixup[];
+
+struct module;
+extern void module_fixup(struct module *mod, struct m68k_fixup_info *start,
+ struct m68k_fixup_info *end);
+
+#endif /* _ASM_M68K_MODULE_H */