From 864fb03a3305b65fedbe434ebb87510ac13fe865 Mon Sep 17 00:00:00 2001 From: Vegard Storheil Eriksen Date: Wed, 23 Dec 2009 22:26:43 +0100 Subject: Initial commit. --- kernel/kernel.ld | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 kernel/kernel.ld (limited to 'kernel/kernel.ld') diff --git a/kernel/kernel.ld b/kernel/kernel.ld new file mode 100644 index 0000000..2bcbcbc --- /dev/null +++ b/kernel/kernel.ld @@ -0,0 +1,57 @@ +OUTPUT_FORMAT("elf32-i386") +ENTRY(entry) + +addr_phys = 0x00100000; +addr_virt = 0xc0000000; + +addr_virt_end = ADDR(.bss) + SIZEOF(.bss); + +addr_load_virt = LOADADDR(.text); +addr_load_virt_end = LOADADDR(.bss) + SIZEOF(.bss); + +SECTIONS { + + .text_low addr_phys : { + LONG(0x1badb002); + LONG(0x00000003); + LONG(-0x1badb002 -0x00000003); + + kernel/entry.o(.text) + kernel/entry.o(.rodata*) + . = ALIGN(0x1000); + } + + .data_low : { + kernel/entry.o(.data) + . = ALIGN(0x1000); + } + + .bss_low : { + kernel/entry.o(.bss) + . = ALIGN(0x1000); + entry_pagedir = .; . += 0x1000; + entry_pagetable_low = .; . += 0x1000; + entry_pagetable_high = .; . += 0x1000; + entry_stack = .; . += 0x1000; entry_stack_top = .; + } + + .text addr_virt : AT(LOADADDR(.bss_low) + SIZEOF(.bss_low)) { + magic_text = .; LONG(0x0f00ba02); + *(.text) + *(.rodata*) + . = ALIGN(0x1000); + } + + .data : AT(LOADADDR(.text) + SIZEOF(.text)) { + magic_data = .; LONG(0x0f00ba03); + *(.data) + *(.ctors) + . = ALIGN(0x1000); + } + + .bss : AT(LOADADDR(.data) + SIZEOF(.data)) { + *(.bss) + *(COMMON) + . = ALIGN(0x1000); + } +} -- cgit v1.2.3