This repository has been archived on 2026-09-02. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
opencoreRS/kernel/linker.ld
T

76 lines
2.5 KiB
Plaintext

/* ──────────────────────────────────────────────────────────────
* kernel/linker.ld — opencoreRS kernel linker script
*
* Раскладка в виртуальной памяти:
* 0xFFFFFFFF80000000 — начало kernel (higher-half)
*
* Limine грузит ядро туда, куда указывает ELF,
* поэтому мы просто задаём адреса секций.
* ─────────────────────────────────────────────────────────────*/
ENTRY(_start)
/* Ядро живёт в верхней половине виртуального адресного пространства */
KERNEL_VIRT_BASE = 0xFFFFFFFF80000000;
SECTIONS
{
/* Стартовый адрес */
. = KERNEL_VIRT_BASE;
__kernel_start = .;
/* ── Limine protocol requests (должны быть в первых 2 GiB) ──── */
.limine_requests_start ALIGN(8) :
{
KEEP(*(.limine_requests_start))
}
.limine_requests ALIGN(8) :
{
KEEP(*(.limine_requests))
}
.limine_requests_end ALIGN(8) :
{
KEEP(*(.limine_requests_end))
}
/* ── Код ─────────────────────────────────────────────── */
.text ALIGN(4K) :
{
*(.text.boot) /* Точка входа — первой! */
*(.text .text.*)
}
/* ── Read-only данные ────────────────────────────────── */
.rodata ALIGN(4K) :
{
*(.rodata .rodata.*)
}
/* ── Данные ──────────────────────────────────────────── */
.data ALIGN(4K) :
{
*(.data .data.*)
}
/* ── BSS (обнуляемые данные) ─────────────────────────── */
.bss ALIGN(4K) :
{
__bss_start = .;
*(.bss .bss.*)
*(COMMON)
__bss_end = .;
}
__kernel_end = .;
/* Отбрасываем ненужные секции */
/DISCARD/ :
{
*(.comment)
*(.eh_frame)
*(.note .note.*)
}
}