aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc')
-rw-r--r--arch/sparc/kernel/vmlinux.lds.S165
1 files changed, 93 insertions, 72 deletions
diff --git a/arch/sparc/kernel/vmlinux.lds.S b/arch/sparc/kernel/vmlinux.lds.S
index 15109c156e83..a8b4200f9cc3 100644
--- a/arch/sparc/kernel/vmlinux.lds.S
+++ b/arch/sparc/kernel/vmlinux.lds.S
@@ -1,6 +1,7 @@
1/* ld script to make SparcLinux kernel */ 1/* ld script to make SparcLinux kernel */
2 2
3#include <asm-generic/vmlinux.lds.h> 3#include <asm-generic/vmlinux.lds.h>
4#include <asm/page.h>
4 5
5OUTPUT_FORMAT("elf32-sparc", "elf32-sparc", "elf32-sparc") 6OUTPUT_FORMAT("elf32-sparc", "elf32-sparc", "elf32-sparc")
6OUTPUT_ARCH(sparc) 7OUTPUT_ARCH(sparc)
@@ -8,84 +9,104 @@ ENTRY(_start)
8jiffies = jiffies_64 + 4; 9jiffies = jiffies_64 + 4;
9SECTIONS 10SECTIONS
10{ 11{
11 . = 0x10000 + SIZEOF_HEADERS; 12 . = 0x10000 + SIZEOF_HEADERS;
12 .text 0xf0004000 : 13 .text 0xf0004000 :
13 { 14 {
14 _text = .; 15 _text = .;
15 TEXT_TEXT 16 TEXT_TEXT
16 SCHED_TEXT 17 SCHED_TEXT
17 LOCK_TEXT 18 LOCK_TEXT
18 *(.gnu.warning) 19 *(.gnu.warning)
19 } =0 20 } = 0
20 _etext = .; 21 _etext = .;
21 PROVIDE (etext = .); 22 PROVIDE (etext = .);
22 RODATA 23 RODATA
23 .data : 24 .data : {
24 { 25 DATA_DATA
25 DATA_DATA 26 CONSTRUCTORS
26 CONSTRUCTORS 27 }
27 } 28 .data1 : {
28 .data1 : { *(.data1) } 29 *(.data1)
29 _edata = .; 30 }
30 PROVIDE (edata = .); 31 _edata = .;
31 __start___fixup = .; 32 PROVIDE (edata = .);
32 .fixup : { *(.fixup) }
33 __stop___fixup = .;
34 __start___ex_table = .;
35 __ex_table : { *(__ex_table) }
36 __stop___ex_table = .;
37 33
38 NOTES 34 .fixup : {
35 __start___fixup = .;
36 *(.fixup)
37 __stop___fixup = .;
38 }
39 __ex_table : {
40 __start___ex_table = .;
41 *(__ex_table)
42 __stop___ex_table = .;
43 }
39 44
40 . = ALIGN(4096); 45 NOTES
41 __init_begin = .; 46
42 _sinittext = .; 47 . = ALIGN(PAGE_SIZE);
43 .init.text : { 48 __init_begin = .;
44 *(.init.text) 49 .init.text : {
45 } 50 _sinittext = .;
46 _einittext = .; 51 *(.init.text)
47 __init_text_end = .; 52 _einittext = .;
48 .init.data : { *(.init.data) } 53 }
49 . = ALIGN(16); 54 __init_text_end = .;
50 __setup_start = .; 55 .init.data : {
51 .init.setup : { *(.init.setup) } 56 *(.init.data)
52 __setup_end = .; 57 }
53 __initcall_start = .; 58 . = ALIGN(16);
54 .initcall.init : { 59 .init.setup : {
55 INITCALLS 60 __setup_start = .;
56 } 61 *(.init.setup)
57 __initcall_end = .; 62 __setup_end = .;
58 __con_initcall_start = .; 63 }
59 .con_initcall.init : { *(.con_initcall.init) } 64 .initcall.init : {
60 __con_initcall_end = .; 65 __initcall_start = .;
61 SECURITY_INIT 66 INITCALLS
67 __initcall_end = .;
68 }
69 .con_initcall.init : {
70 __con_initcall_start = .;
71 *(.con_initcall.init)
72 __con_initcall_end = .;
73 }
74 SECURITY_INIT
62 75
63#ifdef CONFIG_BLK_DEV_INITRD 76#ifdef CONFIG_BLK_DEV_INITRD
64 . = ALIGN(4096); 77 . = ALIGN(PAGE_SIZE);
65 __initramfs_start = .; 78 .init.ramfs : {
66 .init.ramfs : { *(.init.ramfs) } 79 __initramfs_start = .;
67 __initramfs_end = .; 80 *(.init.ramfs)
81 __initramfs_end = .;
82 }
68#endif 83#endif
69 84
70 PERCPU(4096) 85 PERCPU(PAGE_SIZE)
71 . = ALIGN(4096); 86 . = ALIGN(PAGE_SIZE);
72 __init_end = .; 87 __init_end = .;
73 . = ALIGN(32); 88 . = ALIGN(32);
74 .data.cacheline_aligned : { *(.data.cacheline_aligned) } 89 .data.cacheline_aligned : {
75 90 *(.data.cacheline_aligned)
76 __bss_start = .; 91 }
77 .sbss : { *(.sbss) *(.scommon) }
78 .bss :
79 {
80 *(.dynbss)
81 *(.bss)
82 *(COMMON)
83 }
84 _end = . ;
85 PROVIDE (end = .);
86 /DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) }
87 92
88 STABS_DEBUG 93 __bss_start = .;
94 .sbss : {
95 *(.sbss)
96 *(.scommon) }
97 .bss : {
98 *(.dynbss)
99 *(.bss)
100 *(COMMON)
101 }
102 _end = . ;
103 PROVIDE (end = .);
104 /DISCARD/ : {
105 *(.exit.text)
106 *(.exit.data)
107 *(.exitcall.exit)
108 }
89 109
90 DWARF_DEBUG 110 STABS_DEBUG
111 DWARF_DEBUG
91} 112}