You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.1 KiB
Plaintext
108 lines
2.1 KiB
Plaintext
/* Entry in our OS -- label 'startup_bsp' in file boot/startup.asm */
|
|
ENTRY(startup_bsp)
|
|
|
|
SECTIONS
|
|
{
|
|
/* start address of our kernel */
|
|
. = 16M;
|
|
|
|
___KERNEL_START___ = .;
|
|
|
|
.boot :
|
|
{
|
|
/* Multiboot Header should be at the very beginning */
|
|
*(.multiboot_header)
|
|
}
|
|
|
|
___KERNEL_TEXT_START___ = .;
|
|
|
|
.text :
|
|
{
|
|
*(".text")
|
|
*(".text$")
|
|
*(".init")
|
|
*(".fini")
|
|
*(".gnu.linkonce.*")
|
|
KEEP(*(.note.gnu.build-id))
|
|
}
|
|
|
|
/* lists containing the start address of global constructors and destructors (generated by the compiler) */
|
|
.preinit_array :
|
|
{
|
|
PROVIDE_HIDDEN (__preinit_array_start = .);
|
|
KEEP (*(.preinit_array))
|
|
PROVIDE_HIDDEN (__preinit_array_end = .);
|
|
}
|
|
.init_array :
|
|
{
|
|
PROVIDE_HIDDEN (__init_array_start = .);
|
|
KEEP (*(SORT(.init_array.*)))
|
|
KEEP (*(.init_array))
|
|
PROVIDE_HIDDEN (__init_array_end = .);
|
|
}
|
|
.fini_array :
|
|
{
|
|
PROVIDE_HIDDEN (__fini_array_start = .);
|
|
KEEP (*(SORT(.fini_array.*)))
|
|
KEEP (*(.fini_array))
|
|
PROVIDE_HIDDEN (__fini_array_end = .);
|
|
}
|
|
|
|
___KERNEL_TEXT_END___ = .;
|
|
|
|
.data :
|
|
{
|
|
*(".data")
|
|
*(".data$")
|
|
*(".rodata")
|
|
___CTOR_LIST__ = .;
|
|
*(".ctors")
|
|
*(".ctor")
|
|
___CTOR_LIST_END__ = .;
|
|
___DTOR_LIST__ = .;
|
|
*(".dtors")
|
|
*(".dtor")
|
|
___DTOR_LIST_END__ = .;
|
|
*(".got")
|
|
*(".got.plt")
|
|
*(".eh_frame")
|
|
*(".eh_fram")
|
|
*(".jcr")
|
|
}
|
|
|
|
/* Start for application processors, relocated by APIC::init()
|
|
* to a below 1 MB address to boot from real mode.
|
|
* It is possible to let the linker place it at a below 1 MB address,
|
|
* while all the rest starts at 16 MB. This will work for multiboot
|
|
* compliant boot loader like GRUB and PXELINUX, however,
|
|
* the qemu boot loader cannot handle such ELF files (yet)...
|
|
* That's why we have to do it in our software */
|
|
.setup_ap_seg ALIGN(0x10) :
|
|
{
|
|
___SETUP_AP_START__ = .;
|
|
*(".setup_ap_seg")
|
|
*(".setup_ap_seg$")
|
|
}
|
|
___SETUP_AP_END__ = .;
|
|
|
|
.bss :
|
|
{
|
|
*(".bss")
|
|
*(".bss.*")
|
|
*(COMMON)
|
|
}
|
|
___KERNEL_END___ = .;
|
|
|
|
/DISCARD/ :
|
|
{
|
|
*(".note")
|
|
*(".comment")
|
|
/* Keep debug information
|
|
*(".debug_line")
|
|
*(".debug_info")
|
|
*(".debug_abbrev")
|
|
*(".debug_aranges")
|
|
*/
|
|
}
|
|
}
|