diff options
author | Vivek Goyal <vgoyal@in.ibm.com> | 2007-02-13 07:26:22 -0500 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2007-02-13 07:26:22 -0500 |
commit | f8657e1b55901e6c227094258d1fa3642fa242bd (patch) | |
tree | da8fa95fcec1c160831f7fc6a569cb27cf81c63b /scripts/mod | |
parent | 7c0b49f9d1d59b3638c884b346a92dcb4ea1560a (diff) |
[PATCH] i386: move startup_32() in text.head section
o Entry startup_32 was in .text section but it was accessing some init
data too and it prompts MODPOST to generate compilation warnings.
WARNING: vmlinux - Section mismatch: reference to .init.data:boot_params from
.text between '_text' (at offset 0xc0100029) and 'startup_32_smp'
WARNING: vmlinux - Section mismatch: reference to .init.data:boot_params from
.text between '_text' (at offset 0xc0100037) and 'startup_32_smp'
WARNING: vmlinux - Section mismatch: reference to
.init.data:init_pg_tables_end from .text between '_text' (at offset
0xc0100099) and 'startup_32_smp'
o Can't move startup_32 to .init.text as this entry point has to be at the
start of bzImage. Hence moved startup_32 to a new section .text.head and
instructed MODPOST to not to generate warnings if init data is being
accessed from .text.head section. This code has been audited.
o SMP boot up code (startup_32_smp) can go into .init.text if CPU hotplug
is not supported. Otherwise it generates more warnings
WARNING: vmlinux - Section mismatch: reference to .init.data:new_cpu_data from
.text between 'checkCPUtype' (at offset 0xc0100126) and 'is486'
WARNING: vmlinux - Section mismatch: reference to .init.data:new_cpu_data from
.text between 'checkCPUtype' (at offset 0xc0100130) and 'is486'
Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Andi Kleen <ak@suse.de>
Diffstat (limited to 'scripts/mod')
-rw-r--r-- | scripts/mod/modpost.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 2aa47623f5f8..569e68410d7a 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c | |||
@@ -641,12 +641,20 @@ static int secref_whitelist(const char *modname, const char *tosec, | |||
641 | if (f1 && f2) | 641 | if (f1 && f2) |
642 | return 1; | 642 | return 1; |
643 | 643 | ||
644 | /* Whitelist all references from .pci_fixup section if vmlinux */ | 644 | /* Whitelist all references from .pci_fixup section if vmlinux |
645 | * Whitelist all refereces from .text.head to .init.data if vmlinux | ||
646 | * Whitelist all refereces from .text.head to .init.text if vmlinux | ||
647 | */ | ||
645 | if (is_vmlinux(modname)) { | 648 | if (is_vmlinux(modname)) { |
646 | if ((strcmp(fromsec, ".pci_fixup") == 0) && | 649 | if ((strcmp(fromsec, ".pci_fixup") == 0) && |
647 | (strcmp(tosec, ".init.text") == 0)) | 650 | (strcmp(tosec, ".init.text") == 0)) |
648 | return 1; | 651 | return 1; |
649 | 652 | ||
653 | if ((strcmp(fromsec, ".text.head") == 0) && | ||
654 | ((strcmp(tosec, ".init.data") == 0) || | ||
655 | (strcmp(tosec, ".init.text") == 0))) | ||
656 | return 1; | ||
657 | |||
650 | /* Check for pattern 3 */ | 658 | /* Check for pattern 3 */ |
651 | for (s = pat3refsym; *s; s++) | 659 | for (s = pat3refsym; *s; s++) |
652 | if (strcmp(refsymname, *s) == 0) | 660 | if (strcmp(refsymname, *s) == 0) |