aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Ravnborg <sam@ravnborg.org>2008-01-30 07:33:25 -0500
committerIngo Molnar <mingo@elte.hu>2008-01-30 07:33:25 -0500
commit08b6d290f977d8145804fd2b9bc2c331f2484f8e (patch)
tree75773eaba4542967425dbff236f731bd92bb3fa5
parente68decb52104388ed6c6218be926e10e6cde2814 (diff)
xen: fix section usage in xen-head.S and setup.c
additional section for .init.text appending a number. A side effect of this was a section mismatch warning because modpost did not recognize a .init.text section named .init.text.1: WARNING: vmlinux.o(.text.head+0x247): Section mismatch: reference to .init.text.1:start_kernel (between 'is386' and 'check_x87') Fix this by hardcoding the "ax" in the pushsection. Thanks to Torlaf for reporting this. Alan Modra provided the hint that made me able to locate the root cause of this warning. And Mike Frysinger told me how to properly fix it using __INIT/__FINIT. Fix following Section mismatch warning in addition: WARNING: vmlinux.o(.text+0x14c8): Section mismatch: reference to .init.data:vsyscall_int80_start (between 'fiddle_vdso' and 'xen_setup_features') fiddle_vdso was only used from a __init function - so declare it __init. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Cc: Jeremy Fitzhardinge <jeremy@xensource.com> Cc: Chris Wright <chrisw@sous-sol.org> Cc: WANG Cong <xiyou.wangcong@gmail.com> Cc: Toralf Förster <toralf.foerster@gmx.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r--arch/x86/xen/setup.c2
-rw-r--r--arch/x86/xen/xen-head.S6
2 files changed, 5 insertions, 3 deletions
diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
index 7d6d0ef55890..3bad4773a2f3 100644
--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -60,7 +60,7 @@ static void xen_idle(void)
60/* 60/*
61 * Set the bit indicating "nosegneg" library variants should be used. 61 * Set the bit indicating "nosegneg" library variants should be used.
62 */ 62 */
63static void fiddle_vdso(void) 63static void __init fiddle_vdso(void)
64{ 64{
65 extern const char vdso32_default_start; 65 extern const char vdso32_default_start;
66 u32 *mask = VDSO32_SYMBOL(&vdso32_default_start, NOTE_MASK); 66 u32 *mask = VDSO32_SYMBOL(&vdso32_default_start, NOTE_MASK);
diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S
index f8d6937db2ec..288d587ce73c 100644
--- a/arch/x86/xen/xen-head.S
+++ b/arch/x86/xen/xen-head.S
@@ -4,16 +4,18 @@
4#ifdef CONFIG_XEN 4#ifdef CONFIG_XEN
5 5
6#include <linux/elfnote.h> 6#include <linux/elfnote.h>
7#include <linux/init.h>
7#include <asm/boot.h> 8#include <asm/boot.h>
8#include <xen/interface/elfnote.h> 9#include <xen/interface/elfnote.h>
9 10
10.pushsection .init.text 11 __INIT
11ENTRY(startup_xen) 12ENTRY(startup_xen)
12 movl %esi,xen_start_info 13 movl %esi,xen_start_info
13 cld 14 cld
14 movl $(init_thread_union+THREAD_SIZE),%esp 15 movl $(init_thread_union+THREAD_SIZE),%esp
15 jmp xen_start_kernel 16 jmp xen_start_kernel
16.popsection 17
18 __FINIT
17 19
18.pushsection .bss.page_aligned 20.pushsection .bss.page_aligned
19 .align PAGE_SIZE_asm 21 .align PAGE_SIZE_asm