Archived
feat: complete opencoreRS microkernel with Ring 3 userspace, VFS, IPC, and shell
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
/* ──────────────────────────────────────────────────────────────
|
||||
* 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.*)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user