aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/vmlinux.lds.S
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@linux.intel.com>2011-02-14 18:34:57 -0500
committerH. Peter Anvin <hpa@linux.intel.com>2011-02-18 00:02:43 -0500
commit4822b7fc6d4870685a9feadfc348d48f5e47460a (patch)
tree52a482fde76ff8bae64fc09761967a33b9b7b08b /arch/x86/kernel/vmlinux.lds.S
parent85e2efbb1db9a18d218006706d6e4fbeb0216213 (diff)
x86, trampoline: Common infrastructure for low memory trampolines
Common infrastructure for low memory trampolines. This code installs the trampolines permanently in low memory very early. It also permits multiple pieces of code to be used for this purpose. This code also introduces a standard infrastructure for computing symbol addresses in the trampoline code. The only change to the actual SMP trampolines themselves is that the 64-bit trampoline has been made reusable -- the previous version would overwrite the code with a status variable; this moves the status variable to a separate location. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com> LKML-Reference: <4D5DFBE4.7090104@intel.com> Cc: Rafael J. Wysocki <rjw@sisk.pl> Cc: Matthieu Castet <castet.matthieu@free.fr> Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Diffstat (limited to 'arch/x86/kernel/vmlinux.lds.S')
-rw-r--r--arch/x86/kernel/vmlinux.lds.S13
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
index bf4700755184..cb2c5069b016 100644
--- a/arch/x86/kernel/vmlinux.lds.S
+++ b/arch/x86/kernel/vmlinux.lds.S
@@ -240,6 +240,18 @@ SECTIONS
240 240
241 INIT_DATA_SECTION(16) 241 INIT_DATA_SECTION(16)
242 242
243 /*
244 * Code and data for a variety of lowlevel trampolines, to be
245 * copied into base memory (< 1 MiB) during initialization.
246 * Since it is copied early, the main copy can be discarded
247 * afterwards.
248 */
249 .x86_trampoline : AT(ADDR(.x86_trampoline) - LOAD_OFFSET) {
250 x86_trampoline_start = .;
251 *(.x86_trampoline)
252 x86_trampoline_end = .;
253 }
254
243 .x86_cpu_dev.init : AT(ADDR(.x86_cpu_dev.init) - LOAD_OFFSET) { 255 .x86_cpu_dev.init : AT(ADDR(.x86_cpu_dev.init) - LOAD_OFFSET) {
244 __x86_cpu_dev_start = .; 256 __x86_cpu_dev_start = .;
245 *(.x86_cpu_dev.init) 257 *(.x86_cpu_dev.init)
@@ -291,6 +303,7 @@ SECTIONS
291 *(.iommu_table) 303 *(.iommu_table)
292 __iommu_table_end = .; 304 __iommu_table_end = .;
293 } 305 }
306
294 . = ALIGN(8); 307 . = ALIGN(8);
295 /* 308 /*
296 * .exit.text is discard at runtime, not link time, to deal with 309 * .exit.text is discard at runtime, not link time, to deal with