3 #include "globalconfig.h"
6 _boot_sys_start = 0x300000;
7 _kernel_image = FIASCO_IMAGE_VIRT_START; /* kernel link address */
8 _load = FIASCO_IMAGE_PHYS_START & 0x3fffff;
10 _load = 0x1000; /* skip page 0 to preserve BIOS data and
11 * page 1 to reserve space for the KIP */
13 /*_fiasco_image_offset = 0xf0000000;*/
14 _fiasco_image_offset = FIASCO_IMAGE_PHYS_OFFSET;
16 ENTRY(bootstrap__boot_start)
31 . = FIASCO_MP_TRAMP_PAGE;
38 .text_boot : ALIGN(0x1000) {
39 *(.bootstrap.text .bootstrap.text.* .bootstrap.gnu.linkonce.t.*)
46 PROVIDE(_boot_sys_end = .);
49 . = _kernel_image + _load;
51 .kip : AT(ADDR(.kip) - _fiasco_image_offset) {
52 _kernel_image_start = .;
55 KEEP(*(.initkip.version))
56 KEEP(*(.initkip.features))
57 KEEP(*(.initkip.features.fini))
62 .koptions : AT (ADDR(.koptions) - _fiasco_image_offset) {
66 #ifdef CONFIG_ALLOW_RO_TEXT
69 .text : AT (ADDR(.text) - _fiasco_image_offset) {
70 PROVIDE ( _kernel_text_start = . );
73 *(.text SORT(.text.*) .gnu.linkonce.t.*)
78 *(.rodata .rodata.* .gnu.linkonce.r.*)
81 PROVIDE (_log_table = .);
83 * The section must start with ".debug" because else the linker
84 * complains about references to discarded sections
86 KEEP(*(SORT(.debug.jdb.log_table)))
87 PROVIDE (_log_table_end = .);
92 } : ktext = 0x90909090
94 #ifdef CONFIG_ALLOW_RO_TEXT
99 .data : AT (ADDR(.data) - _fiasco_image_offset) {
100 PROVIDE (_kernel_data_start = .);
101 *(.data .data.* .gnu.linkonce.d.*)
104 /* Constructor and destructor lists, ordered by priority. The lists
105 are traversed from end to start, therefore the *_END__ symbols
106 precede the *_LIST__ symbols. */
108 __PER_CPU_CTORS_END__ = .;
109 KEEP (*(.ctors.00010))
110 KEEP (*(.ctors.00009))
111 KEEP (*(.ctors.00008))
112 KEEP (*(.ctors.00007))
113 KEEP (*(.ctors.00006))
114 KEEP (*(.ctors.00005))
115 KEEP (*(.ctors.00004))
116 KEEP (*(.ctors.00003))
117 KEEP (*(.ctors.00002))
118 KEEP (*(.ctors.00001))
119 __PER_CPU_CTORS_LIST__ = .;
121 __PER_CPU_LATE_CTORS_END__ = .;
122 KEEP (*(.ctors.00020))
123 KEEP (*(.ctors.00019))
124 KEEP (*(.ctors.00018))
125 KEEP (*(.ctors.00017))
126 KEEP (*(.ctors.00016))
127 KEEP (*(.ctors.00015))
128 KEEP (*(.ctors.00014))
129 KEEP (*(.ctors.00013))
130 KEEP (*(.ctors.00012))
131 KEEP (*(.ctors.00011))
132 __PER_CPU_LATE_CTORS_LIST__ = .;
137 KEEP (*(SORT (.ctors.*)))
141 KEEP (*(SORT (.dtors.*)))
145 PROVIDE (_edata = .);
149 .per_cpu_data : AT (ADDR(.per_cpu_data) - _fiasco_image_offset) {
150 PROVIDE (_per_cpu_data_start = .);
153 PROVIDE (_per_cpu_data_end = .);
157 .bss : AT (ADDR(.bss) - _fiasco_image_offset) {
158 PROVIDE (_bss_start = .);
159 *(.bss .bss.* .gnu.linkonce.b.* COMMON)
160 PROVIDE (_bss_end = .);
166 PROVIDE (_initcall_start = .);
167 .initcall.text : AT (ADDR(.initcall.text) - _fiasco_image_offset) {
169 } : kitext = 0x90909090
171 .initcall.data : AT (ADDR(.initcall.data) - _fiasco_image_offset) {
174 PROVIDE (_initcall_end = .);