From b5f0874cd96ee2a62aabc645b9626c2749cb6a01 Mon Sep 17 00:00:00 2001 From: manuel Date: Mon, 26 Mar 2012 12:54:45 +0200 Subject: initial pintos checkin --- pintos-progos/threads/kernel.lds.S | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 pintos-progos/threads/kernel.lds.S (limited to 'pintos-progos/threads/kernel.lds.S') diff --git a/pintos-progos/threads/kernel.lds.S b/pintos-progos/threads/kernel.lds.S new file mode 100644 index 0000000..19082d5 --- /dev/null +++ b/pintos-progos/threads/kernel.lds.S @@ -0,0 +1,30 @@ +#include "threads/loader.h" + +OUTPUT_FORMAT("elf32-i386") +OUTPUT_ARCH("i386") +ENTRY(start) /* Kernel starts at "start" symbol. */ +SECTIONS +{ + /* Specify the kernel base address. */ + _start = LOADER_PHYS_BASE + LOADER_KERN_BASE; + + /* Make room for the ELF headers. */ + . = _start + SIZEOF_HEADERS; + + /* 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) + _signature = .; LONG(0xaa55aa55) } + + /* BSS (zero-initialized data) is after everything else. */ + _start_bss = .; + .bss : { *(.bss) } + _end_bss = .; + + _end = .; + + ASSERT (_end - _start <= 512K, "Kernel image is too big.") +} -- cgit v1.2.3