diff options
| author | nthnluu <nate1299@me.com> | 2024-01-28 21:20:27 -0500 |
|---|---|---|
| committer | nthnluu <nate1299@me.com> | 2024-01-28 21:20:27 -0500 |
| commit | c63f340d90800895f007de64b7d2d14624263331 (patch) | |
| tree | 2c0849fa597dd6da831c8707b6f2603403778d7b /kernel/link.ld | |
Created student weenix repository
Diffstat (limited to 'kernel/link.ld')
| -rw-r--r-- | kernel/link.ld | 68 |
1 files changed, 68 insertions, 0 deletions
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 |
