[PATCH] vmlinux.lds: consolidate initcall sections
[linux-2.6.git] / arch / m68knommu / kernel / vmlinux.lds.S
1 /*
2  *      vmlinux.lds.S -- master linker script for m68knommu arch
3  *
4  *      (C) Copyright 2002-2006, Greg Ungerer <gerg@snapgear.com>
5  *
6  *      This linker script is equiped to build either ROM loaded or RAM
7  *      run kernels.
8  */
9
10 #include <asm-generic/vmlinux.lds.h>
11
12 #if defined(CONFIG_RAMKERNEL)
13 #define RAM_START       CONFIG_KERNELBASE
14 #define RAM_LENGTH      (CONFIG_RAMBASE + CONFIG_RAMSIZE - CONFIG_KERNELBASE)
15 #define TEXT            ram
16 #define DATA            ram
17 #define INIT            ram
18 #define BSS             ram
19 #endif
20 #if defined(CONFIG_ROMKERNEL) || defined(CONFIG_HIMEMKERNEL)
21 #define RAM_START       CONFIG_RAMBASE
22 #define RAM_LENGTH      CONFIG_RAMSIZE
23 #define ROMVEC_START    CONFIG_ROMVEC
24 #define ROMVEC_LENGTH   CONFIG_ROMVECSIZE
25 #define ROM_START       CONFIG_ROMSTART
26 #define ROM_LENGTH      CONFIG_ROMSIZE
27 #define TEXT            rom
28 #define DATA            ram
29 #define INIT            ram
30 #define BSS             ram
31 #endif
32
33 #ifndef DATA_ADDR
34 #define DATA_ADDR
35 #endif
36
37
38 OUTPUT_ARCH(m68k)
39 ENTRY(_start)
40
41 MEMORY {
42         ram     : ORIGIN = RAM_START, LENGTH = RAM_LENGTH
43 #ifdef ROM_START
44         romvec  : ORIGIN = ROMVEC_START, LENGTH = ROMVEC_LENGTH
45         rom     : ORIGIN = ROM_START, LENGTH = ROM_LENGTH
46 #endif
47 }
48
49 jiffies = jiffies_64 + 4;
50
51 SECTIONS {
52
53 #ifdef ROMVEC_START
54         . = ROMVEC_START ;
55         .romvec : {
56                 __rom_start = . ;
57                 _romvec = .;
58                 *(.data.initvect)
59         } > romvec
60 #endif
61
62         .text : {
63                 _stext = . ;
64                 *(.text)
65                 SCHED_TEXT
66                 *(.text.lock)
67
68                 . = ALIGN(16);          /* Exception table              */
69                 __start___ex_table = .;
70                 *(__ex_table)
71                 __stop___ex_table = .;
72
73                 *(.rodata) *(.rodata.*)
74                 *(__vermagic)           /* Kernel version magic */
75                 *(.rodata1)
76                 *(.rodata.str1.1)
77
78                 /* Kernel symbol table: Normal symbols */
79                 . = ALIGN(4);
80                 __start___ksymtab = .;
81                 *(__ksymtab)
82                 __stop___ksymtab = .;
83
84                 /* Kernel symbol table: GPL-only symbols */
85                 __start___ksymtab_gpl = .;
86                 *(__ksymtab_gpl)
87                 __stop___ksymtab_gpl = .;
88
89                 /* Kernel symbol table: GPL-future symbols */
90                 __start___ksymtab_gpl_future = .;
91                 *(__ksymtab_gpl_future)
92                 __stop___ksymtab_gpl_future = .;
93
94                 /* Kernel symbol table: Normal symbols */
95                 __start___kcrctab = .;
96                 *(__kcrctab)
97                 __stop___kcrctab = .;
98
99                 /* Kernel symbol table: GPL-only symbols */
100                 __start___kcrctab_gpl = .;
101                 *(__kcrctab_gpl)
102                 __stop___kcrctab_gpl = .;
103
104                 /* Kernel symbol table: GPL-future symbols */
105                 __start___kcrctab_gpl_future = .;
106                 *(__kcrctab_gpl_future)
107                 __stop___kcrctab_gpl_future = .;
108
109                 /* Kernel symbol table: strings */
110                 *(__ksymtab_strings)
111
112                 /* Built-in module parameters */
113                 . = ALIGN(4) ;
114                 __start___param = .;
115                 *(__param)
116                 __stop___param = .;
117
118                 . = ALIGN(4) ;
119                 _etext = . ;
120         } > TEXT
121
122         .data DATA_ADDR : {
123                 . = ALIGN(4);
124                 _sdata = . ;
125                 *(.data)
126                 . = ALIGN(8192) ;
127                 *(.data.init_task)
128                 _edata = . ;
129         } > DATA
130
131         .init : {
132                 . = ALIGN(4096);
133                 __init_begin = .;
134                 _sinittext = .;
135                 *(.init.text)
136                 _einittext = .;
137                 *(.init.data)
138                 . = ALIGN(16);
139                 __setup_start = .;
140                 *(.init.setup)
141                 __setup_end = .;
142                 __initcall_start = .;
143                 INITCALLS
144                 __initcall_end = .;
145                 __con_initcall_start = .;
146                 *(.con_initcall.init)
147                 __con_initcall_end = .;
148                 __security_initcall_start = .;
149                 *(.security_initcall.init)
150                 __security_initcall_end = .;
151                 . = ALIGN(4);
152                 __initramfs_start = .;
153                 *(.init.ramfs)
154                 __initramfs_end = .;
155                 . = ALIGN(4096);
156                 __init_end = .;
157         } > INIT
158
159         /DISCARD/ : {
160                 *(.exit.text)
161                 *(.exit.data)
162                 *(.exitcall.exit)
163         }
164
165         .bss : {
166                 . = ALIGN(4);
167                 _sbss = . ;
168                 *(.bss)
169                 *(COMMON)
170                 . = ALIGN(4) ;
171                 _ebss = . ;
172         } > BSS
173
174 }
175