summaryrefslogtreecommitdiff
path: root/arch/m68k/include/asm/module_mm.h
diff options
context:
space:
mode:
authorDavid Vrabel <david.vrabel@csr.com>2009-02-02 20:52:39 +0300
committerDavid Vrabel <david.vrabel@csr.com>2009-02-02 20:52:39 +0300
commit8f04915532485d81e7f6c580a396ea7b01094221 (patch)
treec5740e961a025f2fb6b520a2bc5937f19d4345ab /arch/m68k/include/asm/module_mm.h
parent8f5140a6a0b1a9aa79585b0008e88c5d266c5c1d (diff)
parent45c82b5a770be66845687a7d027c8b52946d59af (diff)
downloadlinux-8f04915532485d81e7f6c580a396ea7b01094221.tar.xz
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-upstream
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 000000000000..382d20a6fc18
--- /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 */