aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/realmode
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@linux.intel.com>2012-05-08 14:22:32 -0400
committerH. Peter Anvin <hpa@linux.intel.com>2012-05-08 14:47:18 -0400
commit487f50ffeb142d8f86fff6e43a8852ce3d46c173 (patch)
treee826db361699b36728b8b9e9484daff9fb3f0e24 /arch/x86/realmode
parent2a6de3148cfd1a0240a85ea4a1cad34d250d882f (diff)
x86, realmode: Add .text64 section, make barrier symbols absolute
Add a .text64 section. The purpose of this is to keep 16-, 32- and 64-bit code segregated into separate sections, mainly to keep disassembly sane. Move barrier symbols out of sections to avoid the "symbol in empty section" problem in some versions of GNU ld. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com> Link: http://lkml.kernel.org/r/1336501366-28617-10-git-send-email-jarkko.sakkinen@intel.com
Diffstat (limited to 'arch/x86/realmode')
-rw-r--r--arch/x86/realmode/rm/realmode.lds.S11
1 files changed, 8 insertions, 3 deletions
diff --git a/arch/x86/realmode/rm/realmode.lds.S b/arch/x86/realmode/rm/realmode.lds.S
index 91b83ea55c37..4d4afcaf5f02 100644
--- a/arch/x86/realmode/rm/realmode.lds.S
+++ b/arch/x86/realmode/rm/realmode.lds.S
@@ -32,8 +32,8 @@ SECTIONS
32 } 32 }
33 33
34 . = ALIGN(PAGE_SIZE); 34 . = ALIGN(PAGE_SIZE);
35 pa_text_start = .;
35 .text : { 36 .text : {
36 pa_text_start = .;
37 *(.text) 37 *(.text)
38 *(.text.*) 38 *(.text.*)
39 } 39 }
@@ -41,9 +41,14 @@ SECTIONS
41 .text32 : { 41 .text32 : {
42 *(.text32) 42 *(.text32)
43 *(.text32.*) 43 *(.text32.*)
44 pa_ro_end = .;
45 } 44 }
46 45
46 .text64 : {
47 *(.text64)
48 *(.text64.*)
49 }
50 pa_ro_end = .;
51
47 . = ALIGN(PAGE_SIZE); 52 . = ALIGN(PAGE_SIZE);
48 .data : { 53 .data : {
49 *(.data) 54 *(.data)
@@ -59,8 +64,8 @@ SECTIONS
59 . = ALIGN(4); 64 . = ALIGN(4);
60 .signature : { 65 .signature : {
61 *(.signature) 66 *(.signature)
62 pa_end = .;
63 } 67 }
68 pa_end = .;
64 69
65 /DISCARD/ : { 70 /DISCARD/ : {
66 *(.note*) 71 *(.note*)