diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-07-05 17:56:41 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-07-07 18:35:41 -0400 |
commit | 1604d79d372bcf0cf1aebcbdee251bd0f3d56665 (patch) | |
tree | cf83b7746dbb5032cd4f27f43817c4650708ee13 | |
parent | 39df88872f64b8a7c438861460063eadf2ba9011 (diff) |
ARM: vmlinux.lds: rearrange .init output section
Keep the various linker tables as separate output sections rather
than combining them together into one big .init section. This
makes the 'vmlinux' easier to see what is placed where.
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Tested-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | arch/arm/kernel/vmlinux.lds.S | 47 |
1 files changed, 29 insertions, 18 deletions
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index cb46a9bad4f5..c8bb9b77c2ea 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S | |||
@@ -65,48 +65,59 @@ SECTIONS | |||
65 | #else | 65 | #else |
66 | . = PAGE_OFFSET + TEXT_OFFSET; | 66 | . = PAGE_OFFSET + TEXT_OFFSET; |
67 | #endif | 67 | #endif |
68 | 68 | .head.text : { | |
69 | .init : { /* Init code and data */ | ||
70 | _stext = .; | 69 | _stext = .; |
71 | _sinittext = .; | 70 | HEAD_TEXT |
72 | HEAD_TEXT | 71 | } |
73 | INIT_TEXT | 72 | INIT_TEXT_SECTION(8) |
74 | ARM_EXIT_KEEP(EXIT_TEXT) | 73 | .exit.text : { |
75 | _einittext = .; | 74 | ARM_EXIT_KEEP(EXIT_TEXT) |
75 | } | ||
76 | .init.proc.info : { | ||
76 | ARM_CPU_DISCARD(PROC_INFO) | 77 | ARM_CPU_DISCARD(PROC_INFO) |
78 | } | ||
79 | .init.arch.info : { | ||
77 | __arch_info_begin = .; | 80 | __arch_info_begin = .; |
78 | *(.arch.info.init) | 81 | *(.arch.info.init) |
79 | __arch_info_end = .; | 82 | __arch_info_end = .; |
83 | } | ||
84 | .init.tagtable : { | ||
80 | __tagtable_begin = .; | 85 | __tagtable_begin = .; |
81 | *(.taglist.init) | 86 | *(.taglist.init) |
82 | __tagtable_end = .; | 87 | __tagtable_end = .; |
88 | } | ||
83 | #ifdef CONFIG_SMP_ON_UP | 89 | #ifdef CONFIG_SMP_ON_UP |
90 | .init.smpalt : { | ||
84 | __smpalt_begin = .; | 91 | __smpalt_begin = .; |
85 | *(.alt.smp.init) | 92 | *(.alt.smp.init) |
86 | __smpalt_end = .; | 93 | __smpalt_end = .; |
94 | } | ||
87 | #endif | 95 | #endif |
88 | 96 | .init.pv_table : { | |
89 | __pv_table_begin = .; | 97 | __pv_table_begin = .; |
90 | *(.pv_table) | 98 | *(.pv_table) |
91 | __pv_table_end = .; | 99 | __pv_table_end = .; |
92 | 100 | } | |
101 | .init.data : { | ||
102 | #ifndef CONFIG_XIP_KERNEL | ||
103 | INIT_DATA | ||
104 | #endif | ||
93 | INIT_SETUP(16) | 105 | INIT_SETUP(16) |
94 | |||
95 | INIT_CALLS | 106 | INIT_CALLS |
96 | CON_INITCALL | 107 | CON_INITCALL |
97 | SECURITY_INITCALL | 108 | SECURITY_INITCALL |
98 | INIT_RAM_FS | 109 | INIT_RAM_FS |
99 | 110 | } | |
100 | #ifndef CONFIG_XIP_KERNEL | 111 | #ifndef CONFIG_XIP_KERNEL |
101 | __init_begin = _stext; | 112 | .exit.data : { |
102 | INIT_DATA | ||
103 | ARM_EXIT_KEEP(EXIT_DATA) | 113 | ARM_EXIT_KEEP(EXIT_DATA) |
104 | #endif | ||
105 | } | 114 | } |
115 | #endif | ||
106 | 116 | ||
107 | PERCPU_SECTION(32) | 117 | PERCPU_SECTION(32) |
108 | 118 | ||
109 | #ifndef CONFIG_XIP_KERNEL | 119 | #ifndef CONFIG_XIP_KERNEL |
120 | __init_begin = _stext; | ||
110 | . = ALIGN(PAGE_SIZE); | 121 | . = ALIGN(PAGE_SIZE); |
111 | __init_end = .; | 122 | __init_end = .; |
112 | #endif | 123 | #endif |