Nigel
5051b8903c
The first stage after GRUB will be Pre-Kernel. This stage will organize the information we receive from the bootloader. (in our case that will be grub) The second stage is for now called early_main. The program will at this point already be running in virtual higher-half / higher-quarter address space. The goal of the second stage is to set up the kernel in such a way that we are ready to jump in to usermode. The third stage is for now called kernel_main. This stage will jump us into usermode and load the startup programs. - Added a GRUB entry for tests - Started writing the pre-kernel stage - Removed knowledge of multiboot from early_main - Edited the linkerscript to link variables in pre-kernel to lower address space. ( from 1MB and up)
47 lines
815 B
Plaintext
47 lines
815 B
Plaintext
ENTRY(_start)
|
|
|
|
/* Tell where the various sections of the object files will be put in the final
|
|
kernel image. */
|
|
SECTIONS
|
|
{
|
|
. = 0x00100000; /* place code at 1MB mark*/
|
|
|
|
_kernel_start = .;
|
|
kernel_begin = .; /* For legacy reasons */
|
|
|
|
|
|
.multiboot.data : {
|
|
*(.multiboot.data)
|
|
}
|
|
|
|
.multiboot.text : {
|
|
*(multiboot.text)
|
|
*prekernel.o(.text)
|
|
}
|
|
|
|
. += 0xC0000000; /* Addresses in the following code need to be above the 3Gb mark */
|
|
|
|
|
|
.text ALIGN (4K) : AT (ADDR (.text) - 0xC0000000)
|
|
{
|
|
*(.text)
|
|
}
|
|
.rodata ALIGN (4K) : AT (ADDR (.rodata) - 0xC0000000)
|
|
{
|
|
*(.rodata)
|
|
}
|
|
.data ALIGN (4K) : AT (ADDR (.data) - 0xC0000000)
|
|
{
|
|
*(.data)
|
|
}
|
|
.bss ALIGN (4K) : AT (ADDR (.bss) - 0xC0000000)
|
|
{
|
|
*(COMMON)
|
|
*(.bss)
|
|
*(.bootstrap_stack)
|
|
}
|
|
_kernel_end = .;
|
|
kernel_end = .; /* For legacy reasons */
|
|
}
|
|
|