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 & 0x1fffff;
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 OUTPUT_FORMAT("elf64-x86-64")
17 OUTPUT_ARCH(i386:x86-64)
18 ENTRY(bootstrap__boot_start)
32 . = FIASCO_MP_TRAMP_PAGE;
39 .text_boot : ALIGN(0x1000) {
41 *(.bootstrap.text .bootstrap.text.* .bootstrap.gnu.linkonce.t.*)
44 *(.bootstrap.rodata .bootstrap.rodata.* .bootstrap.gnu.linkonce.r.*)
45 *(.bootstrap.data .bootstrap.data.* .bootstrap.gnu.linkonce.d.*)
52 *(.bootstrap.bss .bootstrap.gnu.linkonce.b.*)
54 PROVIDE(_boot_sys_end = .);
57 . = _kernel_image + _load;
59 .kip : AT(ADDR(.kip) - _fiasco_image_offset) {
60 _kernel_image_start = .;
63 KEEP(*(.initkip.version))
64 KEEP(*(.initkip.features))
65 KEEP(*(.initkip.features.fini))
70 #ifdef CONFIG_ALLOW_RO_TEXT
73 .text : AT (ADDR(.text) - _fiasco_image_offset) {
74 PROVIDE ( _kernel_text_start = . );
77 *(.text SORT(.text.*) .gnu.linkonce.t.*)
82 *(.rodata .rodata.* .gnu.linkonce.r.*)
85 PROVIDE (_log_table = .);
87 * The section must start with ".debug" because else the linker
88 * complains about references to discarded sections
90 KEEP(*(SORT(.debug.jdb.log_table)))
91 PROVIDE (_log_table_end = .);
96 } : ktext = 0x90909090
98 #ifdef CONFIG_ALLOW_RO_TEXT
103 .data : AT (ADDR(.data) - _fiasco_image_offset) {
104 PROVIDE (_kernel_data_start = .);
105 *(.data .data.* .gnu.linkonce.d.*)
108 /* Constructor and destructor lists, ordered by priority. The lists
109 are traversed from end to start, therefore the *_END__ symbols
110 precede the *_LIST__ symbols. */
112 __PER_CPU_CTORS_END__ = .;
113 KEEP (*(.ctors.00010))
114 KEEP (*(.ctors.00009))
115 KEEP (*(.ctors.00008))
116 KEEP (*(.ctors.00007))
117 KEEP (*(.ctors.00006))
118 KEEP (*(.ctors.00005))
119 KEEP (*(.ctors.00004))
120 KEEP (*(.ctors.00003))
121 KEEP (*(.ctors.00002))
122 KEEP (*(.ctors.00001))
123 __PER_CPU_CTORS_LIST__ = .;
128 KEEP (*(SORT (.ctors.*)))
132 KEEP (*(SORT (.dtors.*)))
136 PROVIDE (_edata = .);
140 .per_cpu_data : AT (ADDR(.per_cpu_data) - _fiasco_image_offset) {
141 PROVIDE (_per_cpu_data_start = .);
144 PROVIDE (_per_cpu_data_end = .);
148 .bss : AT (ADDR(.bss) - _fiasco_image_offset) {
149 PROVIDE (_bss_start = .);
150 *(.bss .bss.* .gnu.linkonce.b.* COMMON)
151 PROVIDE (_bss_end = .);
157 PROVIDE (_initcall_start = .);
158 .initcall.text : AT (ADDR(.initcall.text) - _fiasco_image_offset) {
161 } : kitext = 0x90909090
163 .initcall.data : AT (ADDR(.initcall.data) - _fiasco_image_offset) {
166 PROVIDE (_initcall_end = .);