aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/vmlinux.lds.S
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2010-10-01 10:37:05 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2010-10-08 05:07:32 -0400
commit5085f3ff458521045f7e43da62b8c30ea7df2e82 (patch)
tree3820362ac7e1a52ba398909fa1bd024ba4fc552d /arch/arm/kernel/vmlinux.lds.S
parent37b05b63754e995b8cb76f4fbe7ed7219b3ca896 (diff)
ARM: hotplug cpu: Keep processor information, startup code & __lookup_processor_type
When hotplug CPU is enabled, we need to keep the list of supported CPUs, their setup functions, and __lookup_processor_type in place so that we can find and initialize secondary CPUs. Move these into the __CPUINIT section. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/kernel/vmlinux.lds.S')
-rw-r--r--arch/arm/kernel/vmlinux.lds.S24
1 files changed, 17 insertions, 7 deletions
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
index b16c07914b55..1630524a3097 100644
--- a/arch/arm/kernel/vmlinux.lds.S
+++ b/arch/arm/kernel/vmlinux.lds.S
@@ -8,6 +8,19 @@
8#include <asm/memory.h> 8#include <asm/memory.h>
9#include <asm/page.h> 9#include <asm/page.h>
10 10
11#define PROC_INFO \
12 VMLINUX_SYMBOL(__proc_info_begin) = .; \
13 *(.proc.info.init) \
14 VMLINUX_SYMBOL(__proc_info_end) = .;
15
16#ifdef CONFIG_HOTPLUG_CPU
17#define ARM_CPU_DISCARD(x)
18#define ARM_CPU_KEEP(x) x
19#else
20#define ARM_CPU_DISCARD(x) x
21#define ARM_CPU_KEEP(x)
22#endif
23
11OUTPUT_ARCH(arm) 24OUTPUT_ARCH(arm)
12ENTRY(stext) 25ENTRY(stext)
13 26
@@ -31,9 +44,7 @@ SECTIONS
31 HEAD_TEXT 44 HEAD_TEXT
32 INIT_TEXT 45 INIT_TEXT
33 _einittext = .; 46 _einittext = .;
34 __proc_info_begin = .; 47 ARM_CPU_DISCARD(PROC_INFO)
35 *(.proc.info.init)
36 __proc_info_end = .;
37 __arch_info_begin = .; 48 __arch_info_begin = .;
38 *(.arch.info.init) 49 *(.arch.info.init)
39 __arch_info_end = .; 50 __arch_info_end = .;
@@ -68,10 +79,8 @@ SECTIONS
68 /DISCARD/ : { 79 /DISCARD/ : {
69 *(.ARM.exidx.exit.text) 80 *(.ARM.exidx.exit.text)
70 *(.ARM.extab.exit.text) 81 *(.ARM.extab.exit.text)
71#ifndef CONFIG_HOTPLUG_CPU 82 ARM_CPU_DISCARD(*(.ARM.exidx.cpuexit.text))
72 *(.ARM.exidx.cpuexit.text) 83 ARM_CPU_DISCARD(*(.ARM.extab.cpuexit.text))
73 *(.ARM.extab.cpuexit.text)
74#endif
75#ifndef CONFIG_HOTPLUG 84#ifndef CONFIG_HOTPLUG
76 *(.ARM.exidx.devexit.text) 85 *(.ARM.exidx.devexit.text)
77 *(.ARM.extab.devexit.text) 86 *(.ARM.extab.devexit.text)
@@ -100,6 +109,7 @@ SECTIONS
100 *(.glue_7) 109 *(.glue_7)
101 *(.glue_7t) 110 *(.glue_7t)
102 *(.got) /* Global offset table */ 111 *(.got) /* Global offset table */
112 ARM_CPU_KEEP(PROC_INFO)
103 } 113 }
104 114
105 RO_DATA(PAGE_SIZE) 115 RO_DATA(PAGE_SIZE)