diff options
Diffstat (limited to 'arch/sparc')
-rw-r--r-- | arch/sparc/kernel/vmlinux.lds.S | 165 |
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 | ||
5 | OUTPUT_FORMAT("elf32-sparc", "elf32-sparc", "elf32-sparc") | 6 | OUTPUT_FORMAT("elf32-sparc", "elf32-sparc", "elf32-sparc") |
6 | OUTPUT_ARCH(sparc) | 7 | OUTPUT_ARCH(sparc) |
@@ -8,84 +9,104 @@ ENTRY(_start) | |||
8 | jiffies = jiffies_64 + 4; | 9 | jiffies = jiffies_64 + 4; |
9 | SECTIONS | 10 | SECTIONS |
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 | } |