Merge tag 'v3.3.7' into 3.3/master
[zen-stable.git] / arch / m68k / kernel / vmlinux-nommu.lds
blob8e66ccb0935ee5c408e17c4614b66397cc1dbbdf
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 equipped to build either ROM loaded or RAM
7  *      run kernels.
8  */
10 #include <asm-generic/vmlinux.lds.h>
11 #include <asm/page.h>
12 #include <asm/thread_info.h>
14 #if defined(CONFIG_RAMKERNEL)
15 #define RAM_START       CONFIG_KERNELBASE
16 #define RAM_LENGTH      (CONFIG_RAMBASE + CONFIG_RAMSIZE - CONFIG_KERNELBASE)
17 #define TEXT            ram
18 #define DATA            ram
19 #define INIT            ram
20 #define BSSS            ram
21 #endif
22 #if defined(CONFIG_ROMKERNEL) || defined(CONFIG_HIMEMKERNEL)
23 #define RAM_START       CONFIG_RAMBASE
24 #define RAM_LENGTH      CONFIG_RAMSIZE
25 #define ROMVEC_START    CONFIG_ROMVEC
26 #define ROMVEC_LENGTH   CONFIG_ROMVECSIZE
27 #define ROM_START       CONFIG_ROMSTART
28 #define ROM_LENGTH      CONFIG_ROMSIZE
29 #define TEXT            rom
30 #define DATA            ram
31 #define INIT            ram
32 #define BSSS            ram
33 #endif
35 #ifndef DATA_ADDR
36 #define DATA_ADDR
37 #endif
40 OUTPUT_ARCH(m68k)
41 ENTRY(_start)
43 MEMORY {
44         ram     : ORIGIN = RAM_START, LENGTH = RAM_LENGTH
45 #ifdef ROM_START
46         romvec  : ORIGIN = ROMVEC_START, LENGTH = ROMVEC_LENGTH
47         rom     : ORIGIN = ROM_START, LENGTH = ROM_LENGTH
48 #endif
51 jiffies = jiffies_64 + 4;
53 SECTIONS {
55 #ifdef ROMVEC_START
56         . = ROMVEC_START ;
57         .romvec : {
58                 __rom_start = . ;
59                 _romvec = .;
60                 *(.data..initvect)
61         } > romvec
62 #endif
64         .text : {
65                 _text = .;
66                 _stext = . ;
67                 HEAD_TEXT
68                 TEXT_TEXT
69                 SCHED_TEXT
70                 LOCK_TEXT
71                 *(.text..lock)
72                 *(.fixup)
74                 . = ALIGN(16);          /* Exception table              */
75                 __start___ex_table = .;
76                 *(__ex_table)
77                 __stop___ex_table = .;
79                 *(.rodata) *(.rodata.*)
80                 *(__vermagic)           /* Kernel version magic */
81                 *(.rodata1)
82                 *(.rodata.str1.1)
84                 /* Kernel symbol table: Normal symbols */
85                 . = ALIGN(4);
86                 __start___ksymtab = .;
87                 *(SORT(___ksymtab+*))
88                 __stop___ksymtab = .;
90                 /* Kernel symbol table: GPL-only symbols */
91                 __start___ksymtab_gpl = .;
92                 *(SORT(___ksymtab_gpl+*))
93                 __stop___ksymtab_gpl = .;
95                 /* Kernel symbol table: Normal unused symbols */
96                 __start___ksymtab_unused = .;
97                 *(SORT(___ksymtab_unused+*))
98                 __stop___ksymtab_unused = .;
100                 /* Kernel symbol table: GPL-only unused symbols */
101                 __start___ksymtab_unused_gpl = .;
102                 *(SORT(___ksymtab_unused_gpl+*))
103                 __stop___ksymtab_unused_gpl = .;
105                 /* Kernel symbol table: GPL-future symbols */
106                 __start___ksymtab_gpl_future = .;
107                 *(SORT(___ksymtab_gpl_future+*))
108                 __stop___ksymtab_gpl_future = .;
110                 /* Kernel symbol table: Normal symbols */
111                 __start___kcrctab = .;
112                 *(SORT(___kcrctab+*))
113                 __stop___kcrctab = .;
115                 /* Kernel symbol table: GPL-only symbols */
116                 __start___kcrctab_gpl = .;
117                 *(SORT(___kcrctab_gpl+*))
118                 __stop___kcrctab_gpl = .;
120                 /* Kernel symbol table: Normal unused symbols */
121                 __start___kcrctab_unused = .;
122                 *(SORT(___kcrctab_unused+*))
123                 __stop___kcrctab_unused = .;
125                 /* Kernel symbol table: GPL-only unused symbols */
126                 __start___kcrctab_unused_gpl = .;
127                 *(SORT(___kcrctab_unused_gpl+*))
128                 __stop___kcrctab_unused_gpl = .;
130                 /* Kernel symbol table: GPL-future symbols */
131                 __start___kcrctab_gpl_future = .;
132                 *(SORT(___kcrctab_gpl_future+*))
133                 __stop___kcrctab_gpl_future = .;
135                 /* Kernel symbol table: strings */
136                 *(__ksymtab_strings)
138                 /* Built-in module parameters */
139                 . = ALIGN(4) ;
140                 __start___param = .;
141                 *(__param)
142                 __stop___param = .;
144                 /* Built-in module versions */
145                 . = ALIGN(4) ;
146                 __start___modver = .;
147                 *(__modver)
148                 __stop___modver = .;
150                 . = ALIGN(4) ;
151                 _etext = . ;
152         } > TEXT
154         .data DATA_ADDR : {
155                 . = ALIGN(4);
156                 _sdata = . ;
157                 DATA_DATA
158                 CACHELINE_ALIGNED_DATA(32)
159                 PAGE_ALIGNED_DATA(PAGE_SIZE)
160                 *(.data..shared_aligned)
161                 INIT_TASK_DATA(THREAD_SIZE)
162                 _edata = . ;
163         } > DATA
165         .m68k_fixup : {
166                 __start_fixup = .;
167                 *(.m68k_fixup)
168                 __stop_fixup = .;
169         } > DATA
170         NOTES > DATA
172         .init.text : {
173                 . = ALIGN(PAGE_SIZE);
174                 __init_begin = .;
175         } > INIT
176         INIT_TEXT_SECTION(PAGE_SIZE) > INIT
177         INIT_DATA_SECTION(16) > INIT
178         .init.data : {
179                 . = ALIGN(PAGE_SIZE);
180                 __init_end = .;
181         } > INIT
183         .bss : {
184                 . = ALIGN(4);
185                 _sbss = . ;
186                 *(.bss)
187                 *(COMMON)
188                 . = ALIGN(4) ;
189                 _ebss = . ;
190                 _end = . ;
191         } > BSSS
193         DISCARDS