From c63f340d90800895f007de64b7d2d14624263331 Mon Sep 17 00:00:00 2001 From: nthnluu Date: Sun, 28 Jan 2024 21:20:27 -0500 Subject: Created student weenix repository --- kernel/link.ld | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 kernel/link.ld (limited to 'kernel/link.ld') diff --git a/kernel/link.ld b/kernel/link.ld new file mode 100644 index 0000000..e8d647e --- /dev/null +++ b/kernel/link.ld @@ -0,0 +1,68 @@ +OUTPUT_FORMAT(elf64-x86-64) + +KERNEL_LMA = 0x00100000; +KERNEL_VMA = 0xffff800000000000; + +ENTRY(_start) +STARTUP(entry/entry.o) + +SECTIONS { + . = KERNEL_VMA + KERNEL_LMA; + + k_start = .; + + .text : AT(ADDR(.text) - KERNEL_VMA) { + _code = .; + *(.multiboot) + *(.text) + . = ALIGN(0x1000); + } + + csd_start = .; + .csd : AT(ADDR(.csd) - KERNEL_VMA) { + *(.csd) + . = ALIGN(0x1000); + } + csd_end = .; + + .init : AT(ADDR(.init) - KERNEL_VMA) { + kernel_start_init = .; + *(.init) + . = ALIGN(0x1000); + kernel_end_init = .; + } + + + .rodata : AT(ADDR(.rodata) - KERNEL_VMA) { + _rodata = .; + *(.rodata) + . = ALIGN(0x1000); + } + + .data : AT(ADDR(.data) - KERNEL_VMA) { + _data = .; + *(.data) + . = ALIGN(0x1000); + } + + _edata = .; + + .bss : AT(ADDR(.bss) - KERNEL_VMA) { + _bss = .; + *(.bss) + *(COMMON) + . = ALIGN(0x1000); + } + + _end = .; + + /DISCARD/ : { + *(.comment) + *(note.*) + } + kernel_phys_off = k_start - KERNEL_LMA; + kernel_phys_base = k_start - kernel_phys_off; + kernel_phys_end = _end - kernel_phys_off; + kernel_page_tables = ((_end - k_start) / 0x80000) + 1; /* XXX might be 0x200000 */ + kernel_text_sectors = ((_end - k_start) / 512) + 1; +} \ No newline at end of file -- cgit v1.2.3-70-g09d2