/** * @file * Defines the following sections/functions, some are linked at * specific addresses in the final ELF kernel binary. * This is specified in the _linker.ld_ file. * * * 0x007000 .smp - entry point for application processors (16bit code) * * 0x100000 .multiboot - the multiboot header * * * .text * * .bootstrap_stack * * _start() - main entry point for booting cpu, calls kernel_main(). * * The addresses for .smp and .multiboot are based on the assumption: * * 0x00000500 - 0x00007BFF : guaranteed free to use * * 0x00100000 - 0x00EFFFFF : free for use (if it exists) * * References * ---------- * * https://www.gnu.org/software/grub/manual/multiboot/multiboot.html#Boot-information-format * * http://wiki.osdev.org/Bare_Bones */ /** This will be called by a multiboot compilant boot-loader (i.e. grub2). * Calls kernel_main() passing through eax and ebx: * * eax - magic number * * ebx - multiboot structure * */ void _start(); /** 16-bit entry point for application processors */ void _start_smp();