feat: implement MMU core functionality

* feat: Implement a basic MMU configuration

* feat: Enhance MMU by separating sections and configuring permissions

* feat: Update MMU configuration and memory allocation functions

* fix: Level 3 translation fault

* docs: add code documentation

* fix: linter

* feat: map translation tables to kernel space

* feat: move el1 stack to kernel VA space

* feat: use virtual memory for heap allocation

* docs: update Readme
This commit is contained in:
Alexander Neuhäuser
2026-03-17 19:30:45 +01:00
committed by GitHub
parent 55f410e2bb
commit f78388ee2c
23 changed files with 992 additions and 264 deletions

33
link.ld
View File

@@ -10,45 +10,40 @@ SECTIONS {
*(.rodata .rodata.*)
}
.data : {
.data ALIGN(2M) : {
_data = .;
*(.data .data.*)
}
.bss (NOLOAD) : {
. = ALIGN(16);
.bss ALIGN(16) (NOLOAD) : {
__bss_start = .;
*(.bss .bss.*)
*(COMMON)
__bss_end = .;
}
.vector_table ALIGN(2048) : {
.vector_table ALIGN(2K) : {
KEEP(*(.vector_table))
}
.heap : ALIGN(16)
{
__heap_start = .;
. += 0x10000; #10kB
__heap_end = .;
}
.stack : ALIGN(16)
{
# EL2 Stack
.stack ALIGN(16): {
__stack_start = .;
. += 0x10000; #10kB stack
. += 100K; #100kB stack
. = ALIGN(16);
__stack_end = .;
}
.stack_el0 : ALIGN(16)
{
. = ALIGN(2M);
__kernel_end = .;
.stack_el0 : {
__stack_start_el0 = .;
. += 0x10000; #10kB stack
. += 10K; #10kB stack
__stack_end_el0 = .;
}
. = ALIGN(2M);
_end = .;
}