]> rtime.felk.cvut.cz Git - mcf548x/linux.git/blob - arch/m68k/kernel/vmlinux-cf.lds
Fixes (asm, entry, irq, linker, defconfig)
[mcf548x/linux.git] / arch / m68k / kernel / vmlinux-cf.lds
1 /* ld script to make m68k Coldfire Linux kernel
2  *
3  * Derived from arch/m68k/kernel/vmlinux-std.lds
4  *
5  * Updated 11/26/2007 for new CodeSourcery toolset
6  *     by Kurt Mahan <kmahan@freescale.com>
7  * 
8  * Copyright Freescale Semiconductor, Inc. 2008-2009
9  *   Jason Jin Jason.Jin@freescale.com
10  *   Shrek Wu B16972@freescale.com
11  */
12
13 #define LOAD_OFFSET     0x00000000
14
15 #include <asm-generic/vmlinux.lds.h>
16 #include <asm/page_offset.h>
17
18 #define START_OFFSET    0x00020000
19 #define IMAGE_START     PAGE_OFFSET_RAW + START_OFFSET
20
21 OUTPUT_FORMAT("elf32-m68k", "elf32-m68k", "elf32-m68k")
22 OUTPUT_ARCH(m68k)
23 ENTRY(_stext)
24 jiffies = jiffies_64 + 4;
25 SECTIONS
26 {
27   . = IMAGE_START;
28   .text.head : AT(ADDR(.text.head) - LOAD_OFFSET) {
29         _text = .;                      /* Text and read-only data */
30         HEAD_TEXT
31         } :text = 0x4e75
32
33   .text : AT(ADDR(.text) - LOAD_OFFSET) {
34         TEXT_TEXT
35         SCHED_TEXT
36         LOCK_TEXT
37         *(.fixup)
38         *(.gnu.warning)
39         } :text = 0x4e75
40
41   _etext = .;                   /* End of text section */
42
43   . = ALIGN(16);
44   __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
45         __start___ex_table = .;
46         *(__ex_table)
47         __stop___ex_table = .;
48   }
49
50   RODATA
51
52   . = ALIGN(8192);
53   .data : AT(ADDR(.data) - LOAD_OFFSET) {       /* Data */
54         DATA_DATA
55         CONSTRUCTORS
56   } :data
57
58
59   . = ALIGN(16);
60   .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET ) {
61         *(.data.cacheline_aligned)
62   } :data
63
64   _edata = .;                   /* End of data section */
65
66   . = ALIGN(8192);              /* Initrd */
67   .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) {
68         __init_begin = .;
69         _sinittext = .;
70         INIT_TEXT
71         _einittext = .;
72   }
73
74   .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) {
75         INIT_DATA
76   }
77
78   . = ALIGN(16);
79   .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) {
80         __setup_start = .;
81         *(.init.setup)
82         __setup_end = .;
83   }
84
85   .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) {
86         __initcall_start = .;
87         INITCALLS
88         __initcall_end = .;
89   }
90
91   .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) {
92         __con_initcall_start = .;
93         *(.con_initcall.init)
94         __con_initcall_end = .;
95   }
96
97   SECURITY_INIT
98
99 #ifdef CONFIG_BLK_DEV_INITRD
100   . = ALIGN(8192);
101   .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) {
102         __initramfs_start = .;
103         *(.init.ramfs)
104         __initramfs_end = .;
105   }
106 #endif
107   NOTES
108   . = ALIGN(8192);
109   __init_end = .;
110
111   .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
112         *(.data.init_task)      /* The initial task and kernel stack */
113   }
114
115   BSS_SECTION(0, 0, 0)
116
117   _end = . ;
118
119   /DISCARD/ : {
120         EXIT_TEXT
121         EXIT_DATA
122         *(.exitcall.exit)
123         *(.discard)
124         }
125
126   STABS_DEBUG
127   .comment 0 : { *(.comment) }
128
129   /* Sections to be discarded */
130   /*DISCARDS*/
131
132 }