-#include "loader.h"
+#include "threads/loader.h"
OUTPUT_FORMAT("elf32-i386")
OUTPUT_ARCH("i386")
-ENTRY(start)
+ENTRY(start) /* Kernel starts at "start" symbol. */
SECTIONS
{
+ /* Specifies the virtual address for the kernel base. */
. = LOADER_PHYS_BASE + LOADER_KERN_BASE;
_start = .;
- .text : { *(.text) } = 0x9090
- .rodata : { *(.rodata) *(.rodata.*) }
+ /* Kernel starts with code, followed by read-only data and writable data. */
+ .text : { *(.start) *(.text) } = 0x90
+ .rodata : { *(.rodata) *(.rodata.*)
+ . = ALIGN(0x1000);
+ _end_kernel_text = .; }
.data : { *(.data) }
+ /* BSS (zero-initialized data) is after everything else. */
_start_bss = .;
.bss : { *(.bss) }
_end_bss = .;