Browse Source

Fix compile failure with non modular builds

Commit deac93df26b20cf8438339b5935b5f5643bc30c9 ("lib: Correct printk
%pF to work on all architectures") 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
definition of struct ppc64_opd_entry has been lifted out of modules.c
and put in asm/elf.h where it belongs.

Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
James Bottomley 17 years ago
parent
commit
2d291e9027

+ 7 - 0
arch/powerpc/include/asm/elf.h

@@ -409,6 +409,13 @@ do {									\
 /* Keep this the last entry.  */
 /* Keep this the last entry.  */
 #define R_PPC64_NUM		107
 #define R_PPC64_NUM		107
 
 
+/* There's actually a third entry here, but it's unused */
+struct ppc64_opd_entry
+{
+	unsigned long funcaddr;
+	unsigned long r2;
+};
+
 #ifdef  __KERNEL__
 #ifdef  __KERNEL__
 
 
 #ifdef CONFIG_SPU_BASE
 #ifdef CONFIG_SPU_BASE

+ 11 - 1
arch/powerpc/include/asm/sections.h

@@ -2,6 +2,8 @@
 #define _ASM_POWERPC_SECTIONS_H
 #define _ASM_POWERPC_SECTIONS_H
 #ifdef __KERNEL__
 #ifdef __KERNEL__
 
 
+#include <linux/elf.h>
+#include <linux/uaccess.h>
 #include <asm-generic/sections.h>
 #include <asm-generic/sections.h>
 
 
 #ifdef __powerpc64__
 #ifdef __powerpc64__
@@ -17,7 +19,15 @@ static inline int in_kernel_text(unsigned long addr)
 }
 }
 
 
 #undef dereference_function_descriptor
 #undef dereference_function_descriptor
-void *dereference_function_descriptor(void *);
+static inline void *dereference_function_descriptor(void *ptr)
+{
+	struct ppc64_opd_entry *desc = ptr;
+	void *p;
+
+	if (!probe_kernel_address(&desc->funcaddr, p))
+		ptr = p;
+	return ptr;
+}
 
 
 #endif
 #endif
 
 

+ 0 - 19
arch/powerpc/kernel/module_64.c

@@ -21,9 +21,7 @@
 #include <linux/err.h>
 #include <linux/err.h>
 #include <linux/vmalloc.h>
 #include <linux/vmalloc.h>
 #include <linux/bug.h>
 #include <linux/bug.h>
-#include <linux/uaccess.h>
 #include <asm/module.h>
 #include <asm/module.h>
-#include <asm/sections.h>
 #include <asm/firmware.h>
 #include <asm/firmware.h>
 #include <asm/code-patching.h>
 #include <asm/code-patching.h>
 #include <linux/sort.h>
 #include <linux/sort.h>
@@ -43,13 +41,6 @@
 #define DEBUGP(fmt , ...)
 #define DEBUGP(fmt , ...)
 #endif
 #endif
 
 
-/* There's actually a third entry here, but it's unused */
-struct ppc64_opd_entry
-{
-	unsigned long funcaddr;
-	unsigned long r2;
-};
-
 /* Like PPC32, we need little trampolines to do > 24-bit jumps (into
 /* Like PPC32, we need little trampolines to do > 24-bit jumps (into
    the kernel itself).  But on PPC64, these need to be used for every
    the kernel itself).  But on PPC64, these need to be used for every
    jump, actually, to reset r2 (TOC+0x8000). */
    jump, actually, to reset r2 (TOC+0x8000). */
@@ -452,13 +443,3 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
 
 
 	return 0;
 	return 0;
 }
 }
-
-void *dereference_function_descriptor(void *ptr)
-{
-	struct ppc64_opd_entry *desc = ptr;
-	void *p;
-
-	if (!probe_kernel_address(&desc->funcaddr, p))
-		ptr = p;
-	return ptr;
-}