]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blob - arch/m68knommu/kernel/vmlinux.lds.S
ccd2ceb05cfbc60fce2018bc0167e2cafcfa143c
[mirror_ubuntu-jammy-kernel.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 *(.initcall1.init)
144 *(.initcall2.init)
145 *(.initcall3.init)
146 *(.initcall4.init)
147 *(.initcall5.init)
148 *(.initcall6.init)
149 *(.initcall7.init)
150 __initcall_end = .;
151 __con_initcall_start = .;
152 *(.con_initcall.init)
153 __con_initcall_end = .;
154 __security_initcall_start = .;
155 *(.security_initcall.init)
156 __security_initcall_end = .;
157 . = ALIGN(4);
158 __initramfs_start = .;
159 *(.init.ramfs)
160 __initramfs_end = .;
161 . = ALIGN(4096);
162 __init_end = .;
163 } > INIT
164
165 /DISCARD/ : {
166 *(.exit.text)
167 *(.exit.data)
168 *(.exitcall.exit)
169 }
170
171 .bss : {
172 . = ALIGN(4);
173 _sbss = . ;
174 *(.bss)
175 *(COMMON)
176 . = ALIGN(4) ;
177 _ebss = . ;
178 } > BSS
179
180 }
181