Merge Stephen Rothwell's patches
[powerpc.git] / arch / ppc64 / kernel / vmlinux.lds.S
1 #include <asm/page.h>
2 #include <asm-generic/vmlinux.lds.h>
3
4 OUTPUT_ARCH(powerpc:common64)
5 jiffies = jiffies_64;
6 SECTIONS
7 {
8   /* Sections to be discarded. */
9   /DISCARD/ : {
10         *(.exitcall.exit)
11         }
12
13
14   /* Read-only sections, merged into text segment: */
15   .text : {
16         *(.text .text.*)
17         SCHED_TEXT
18         LOCK_TEXT
19         KPROBES_TEXT
20         *(.fixup)
21         . = ALIGN(PAGE_SIZE);
22         _etext = .;
23         }
24
25   __ex_table : {
26         __start___ex_table = .;
27         *(__ex_table)
28         __stop___ex_table = .;
29         }
30
31   __bug_table : {
32         __start___bug_table = .;
33         *(__bug_table)
34         __stop___bug_table = .;
35         }
36
37   __ftr_fixup : {
38         __start___ftr_fixup = .;
39         *(__ftr_fixup)
40         __stop___ftr_fixup = .;
41         }
42
43   RODATA
44
45
46   /* will be freed after init */
47   . = ALIGN(PAGE_SIZE);
48   __init_begin = .;
49
50   .init.text : {
51         _sinittext = .;
52         *(.init.text)
53         _einittext = .;
54         }
55
56   .init.data : {
57         *(.init.data)
58         }
59
60   . = ALIGN(16);
61   .init.setup : {
62         __setup_start = .;
63         *(.init.setup)
64         __setup_end = .;
65         }
66
67   .initcall.init : {
68         __initcall_start = .;
69         *(.initcall1.init)
70         *(.initcall2.init)
71         *(.initcall3.init)
72         *(.initcall4.init)
73         *(.initcall5.init)
74         *(.initcall6.init)
75         *(.initcall7.init)
76         __initcall_end = .;
77         }
78
79   .con_initcall.init : {
80         __con_initcall_start = .;
81         *(.con_initcall.init)
82         __con_initcall_end = .;
83         }
84
85   SECURITY_INIT
86
87   . = ALIGN(PAGE_SIZE);
88   .init.ramfs : {
89         __initramfs_start = .;
90         *(.init.ramfs)
91         __initramfs_end = .;
92         }
93
94   .data.percpu : {
95         __per_cpu_start = .;
96         *(.data.percpu)
97         __per_cpu_end = .;
98         }
99
100   . = ALIGN(PAGE_SIZE);
101   . = ALIGN(16384);
102   __init_end = .;
103   /* freed after init ends here */
104
105
106   /* Read/write sections */
107   . = ALIGN(PAGE_SIZE);
108   . = ALIGN(16384);
109   /* The initial task and kernel stack */
110   .data.init_task : {
111         *(.data.init_task)
112         }
113
114   . = ALIGN(PAGE_SIZE);
115   .data.page_aligned : {
116         *(.data.page_aligned)
117         }
118
119   .data.cacheline_aligned : {
120         *(.data.cacheline_aligned)
121         }
122
123   .data : {
124         *(.data .data.rel* .toc1)
125         *(.branch_lt)
126         }
127
128   .opd : {
129         *(.opd)
130         }
131
132   .got : {
133         __toc_start = .;
134         *(.got)
135         *(.toc)
136         . = ALIGN(PAGE_SIZE);
137         _edata = .;
138         }
139
140
141   . = ALIGN(PAGE_SIZE);
142   .bss : {
143         __bss_start = .;
144         *(.bss)
145         __bss_stop = .;
146         }
147
148   . = ALIGN(PAGE_SIZE);
149   _end = . ;
150 }