[IA64] fix compile failure with non modular builds
authorJames Bottomley <James.Bottomley@HansenPartnership.com>
Tue, 9 Sep 2008 22:56:47 +0000 (17:56 -0500)
committerTony Luck <tony.luck@intel.com>
Wed, 10 Sep 2008 17:46:32 +0000 (10:46 -0700)
Broke the non modular builds by moving an essential function into
modules.c.  Fix this by moving it out again and into asm/sections.h as
an inline.  To do this, the definitions of struct fdesc and struct
got_val have been lifted out of modules.c and put in asm/elf.h where
they belong.

Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
arch/ia64/include/asm/elf.h
arch/ia64/include/asm/sections.h
arch/ia64/kernel/module.c

index 5e0c1a6bce8dea81ef7c8df40855de065a655eca..2acb6b6543c914c6293331623ed77a956918340a 100644 (file)
@@ -266,4 +266,19 @@ do {                                                                       \
        }                                                               \
 } while (0)
 
+/*
+ * format for entries in the Global Offset Table
+ */
+struct got_entry {
+       uint64_t val;
+};
+
+/*
+ * Layout of the Function Descriptor
+ */
+struct fdesc {
+       uint64_t ip;
+       uint64_t gp;
+};
+
 #endif /* _ASM_IA64_ELF_H */
index a7acad2bc2f0b0f14f6b608bf43224b4411ce9d5..f6679989103689c24f01315b8f1e41c078b79ce2 100644 (file)
@@ -6,6 +6,8 @@
  *     David Mosberger-Tang <davidm@hpl.hp.com>
  */
 
+#include <linux/elf.h>
+#include <linux/uaccess.h>
 #include <asm-generic/sections.h>
 
 extern char __per_cpu_start[], __per_cpu_end[], __phys_per_cpu_start[];
@@ -22,7 +24,16 @@ extern char __start_unwind[], __end_unwind[];
 extern char __start_ivt_text[], __end_ivt_text[];
 
 #undef dereference_function_descriptor
-void *dereference_function_descriptor(void *);
+static inline void *dereference_function_descriptor(void *ptr)
+{
+       struct fdesc *desc = ptr;
+       void *p;
+
+       if (!probe_kernel_address(&desc->ip, p))
+               ptr = p;
+       return ptr;
+}
+
 
 #endif /* _ASM_IA64_SECTIONS_H */
 
index 545626f66a4c571c65bcd8a5ae3a8e855db48012..aaa7d901521fd7590e3132a68b65ffd995197551 100644 (file)
 #include <linux/elf.h>
 #include <linux/moduleloader.h>
 #include <linux/string.h>
-#include <linux/uaccess.h>
 #include <linux/vmalloc.h>
 
 #include <asm/patch.h>
-#include <asm/sections.h>
 #include <asm/unaligned.h>
 
 #define ARCH_MODULE_DEBUG 0
@@ -137,15 +135,6 @@ static const char *reloc_name[256] = {
 
 #undef N
 
-struct got_entry {
-       uint64_t val;
-};
-
-struct fdesc {
-       uint64_t ip;
-       uint64_t gp;
-};
-
 /* Opaque struct for insns, to protect against derefs. */
 struct insn;
 
@@ -943,13 +932,3 @@ module_arch_cleanup (struct module *mod)
        if (mod->arch.core_unw_table)
                unw_remove_unwind_table(mod->arch.core_unw_table);
 }
-
-void *dereference_function_descriptor(void *ptr)
-{
-       struct fdesc *desc = ptr;
-       void *p;
-
-       if (!probe_kernel_address(&desc->ip, p))
-               ptr = p;
-       return ptr;
-}