Merge branches 'x86/asm', 'x86/cleanups', 'x86/cpudetect', 'x86/debug', 'x86/doc...
[linux-2.6] / arch / alpha / kernel / vmlinux.lds.S
1 #include <asm-generic/vmlinux.lds.h>
2 #include <asm/page.h>
3
4 OUTPUT_FORMAT("elf64-alpha")
5 OUTPUT_ARCH(alpha)
6 ENTRY(__start)
7 PHDRS { kernel PT_LOAD; note PT_NOTE; }
8 jiffies = jiffies_64;
9 SECTIONS
10 {
11 #ifdef CONFIG_ALPHA_LEGACY_START_ADDRESS
12         . = 0xfffffc0000310000;
13 #else
14         . = 0xfffffc0001010000;
15 #endif
16
17         _text = .;      /* Text and read-only data */
18         .text : {
19         *(.text.head)
20                 TEXT_TEXT
21                 SCHED_TEXT
22                 LOCK_TEXT
23                 *(.fixup)
24                 *(.gnu.warning)
25         } :kernel
26         _etext = .;     /* End of text section */
27
28         NOTES :kernel :note
29         .dummy : {
30                 *(.dummy)
31         } :kernel
32
33         RODATA
34
35         /* Exception table */
36         . = ALIGN(16);
37         __ex_table : {
38                 __start___ex_table = .;
39                 *(__ex_table)
40                 __stop___ex_table = .;
41         }
42
43         /* Will be freed after init */
44         . = ALIGN(PAGE_SIZE);
45         /* Init code and data */
46         __init_begin = .;
47         .init.text : {
48                 _sinittext = .;
49                 INIT_TEXT
50                 _einittext = .;
51         }
52         .init.data : {
53                 INIT_DATA
54         }
55
56         . = ALIGN(16);
57         .init.setup : {
58                 __setup_start = .;
59                 *(.init.setup)
60                 __setup_end = .;
61         }
62
63         . = ALIGN(8);
64         .initcall.init : {
65                 __initcall_start = .;
66                 INITCALLS
67                 __initcall_end = .;
68         }
69
70 #ifdef CONFIG_BLK_DEV_INITRD
71         . = ALIGN(PAGE_SIZE);
72         .init.ramfs : {
73                 __initramfs_start = .;
74                 *(.init.ramfs)
75                 __initramfs_end = .;
76         }
77 #endif
78
79         . = ALIGN(8);
80         .con_initcall.init : {
81                 __con_initcall_start = .;
82                 *(.con_initcall.init)
83                 __con_initcall_end = .;
84         }
85
86         . = ALIGN(8);
87         SECURITY_INIT
88
89         PERCPU(PAGE_SIZE)
90
91         . = ALIGN(2 * PAGE_SIZE);
92         __init_end = .;
93         /* Freed after init ends here */
94
95         /* Note 2 page alignment above.  */
96         .data.init_thread : {
97                 *(.data.init_thread)
98         }
99
100         . = ALIGN(PAGE_SIZE);
101         .data.page_aligned : {
102                 *(.data.page_aligned)
103         }
104
105         . = ALIGN(64);
106         .data.cacheline_aligned : {
107                 *(.data.cacheline_aligned)
108         }
109
110         _data = .;
111         /* Data */
112         .data : {
113                 DATA_DATA
114                 CONSTRUCTORS
115         }
116
117         .got : {
118                 *(.got)
119         }
120         .sdata : {
121                 *(.sdata)
122         }
123         _edata = .;     /* End of data section */
124
125         __bss_start = .;
126         .sbss : {
127                 *(.sbss)
128                 *(.scommon)
129         }
130         .bss : {
131                 *(.bss)
132                 *(COMMON)
133         }
134         __bss_stop = .;
135         _end = .;
136
137         /* Sections to be discarded */
138         /DISCARD/ : {
139                 EXIT_TEXT
140                 EXIT_DATA
141                 *(.exitcall.exit)
142         }
143
144         .mdebug 0 : {
145                 *(.mdebug)
146         }
147         .note 0 : {
148                 *(.note)
149         }
150
151         STABS_DEBUG
152         DWARF_DEBUG
153 }