aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src/boot
AgeCommit message (Collapse)AuthorFilesLines
2026-03-17Add information request to multiboot.smarcel.braun1-0/+7
2026-03-17x86_64/memory: finish HHDM-based mapperFelix Morgner1-1/+1
2026-03-16x86_64/memory: remove recursive mappingFelix Morgner1-4/+0
2026-01-16chore: restructure namespacesFelix Morgner2-10/+15
2026-01-15x86_64/boot: fix early panic message printingFelix Morgner1-2/+2
2025-12-29x86_64/boot: fix section assignments in ld scriptFelix Morgner3-24/+15
2025-12-15x86_64/boot: use high-mem address of MBIFelix Morgner1-0/+1
2025-12-03x86_64/boot: move stack to higher halfFelix Morgner2-7/+13
2025-11-24x86_64/vga: rely less on magic stateFelix Morgner1-0/+19
2025-10-31build: enable lintingFelix Morgner1-2/+2
2025-10-29chore: reformat source codeFelix Morgner1-1/+3
2025-07-24x86_64: provide a clean slate on entry to long modeFelix Morgner2-2/+16
2025-07-24x86_64: implement robust C++ global initializationFelix Morgner4-24/+26
Implement a comprehensive mechanism to ensure correct C++ runtime initialization before the kernel main function is called. This replaces the previous, incomplete reliance on an `_init` function. The new design robustly handles both legacy `.ctors` and modern `.init_array` initialization schemes used by the GNU toolchain. A single C++ function, `invoke_global_constructors`, now iterates through both arrays of function pointers to ensure all types of global initializers are executed.
2025-07-24x86_64: implement high/low splitFelix Morgner1-36/+66
2025-07-22x86_64: split bootstrap code along mode linesFelix Morgner2-19/+25
2025-07-22x86_64: extract constants from bootstrap codeFelix Morgner1-14/+5
2025-07-22x86_64: clean up bootstrap codeFelix Morgner1-247/+265
2025-07-18x86_64: set GDT entries as accessed.Felix Morgner1-2/+3
2025-07-18x86_64: add data segment to boot GDTFelix Morgner1-6/+9
2025-07-18x86_64: don't lose multi boot information pointerFelix Morgner1-2/+2
Since the transition to a PIE, more registers are required to perform the relative lookups of data references. As part of that change, a subtle mistake was introduced in _start, overwriting the multiboot information pointer that gets handed to kernel by the boot loader in %ebx.
2025-07-18x86-64: prepare new architectureFelix Morgner1-1/+1
2025-07-18kernel: turn into a PIEFelix Morgner1-30/+82
2025-07-14build: reintroduce bootable ISOFelix Morgner1-1/+1
2025-07-14arch: prepare interfacesFelix Morgner1-1/+1
2025-04-27wip implement syscall in cppFabian Imhof1-25/+0
2025-04-27create trampoline for syscallFabian Imhof1-0/+25
2025-04-10move context_switch function into cpp codeFabian Imhof1-30/+0
2025-04-10fix context_switch functionFabian Imhof1-8/+9
2025-04-06wip context switch in asmFabian Imhof1-0/+29
2025-04-05add wip context switch to user modeFabian Imhof1-10/+1
2025-03-29fix gdt segments, improve idt and trial&error for triple faultFabian Imhof1-10/+1
2025-03-28gdt: fix reload of GDTFelix Morgner1-0/+3
The core problems were/are the following: - The flags of the segments were not entirely correct. Please recheck them against the spec! - The GDT pointer did not contain the address of the first (null) GTD entry, but the address of the stl::vector containing the GDT entries. - The far pointer must consist of: - the address to jump to - the byte index into the GDT for the desired segement descriptor to be loaded into CS. - The type of the "dummy" function we jump to was wrong (it's a function, we should declare it as such). - We cannot enable interrupts right now, since we die with a triple fault. This is caused by some initia fault which seems to lead to a general protection fault, which then triple faults since we cannot find the IDT. Some FIXMEs have been added to the code. Please look at them carefully and compare things against the specs.
2025-03-28Attempt to fix ljmp. Might not be possible in Long modeMatteo Gmür1-3/+3
2025-03-28Revert "update long jump handling"Matteo Gmür1-6/+10
This reverts commit 9ddfcd02413a93718e8cde53f9ba5a96a5b29b8f.
2025-03-27update long jump handlingFabian Imhof1-10/+6
2025-03-27Attempt to fix crash in far jump. WIP does not return from call to assembler ↵Matteo Gmür1-1/+1
method
2025-03-20begin implementation of IDTFabian Imhof1-0/+13
2025-03-13IN_PROGRESS implement gdt initializationFabian Imhof1-1/+1
2025-02-27add descriptor_table access_byteFabian Imhof1-2/+2
2025-02-27clear interrupt flagFabian Imhof1-0/+2
2024-12-01Fix guard page and ensure it crashes even if guard page is skipped altogetherMatteo Gmür1-6/+10
2024-10-27update gasFabian Imhof1-5/+5
2024-10-26Update boot.s comments and comment initalize page tables outMatteo Gmür1-4/+4
2024-10-26wipFabian Imhof1-8/+8
2024-10-22use actual page_table addressFabian Imhof1-1/+1
2024-10-17Implement support for `std::terminate` via `::abort`Felix Morgner1-3/+10
2024-10-16Fix compilation issues with assigning values to page_map_variable addressMatteo Gmür1-3/+2
2024-10-16Adjust typesMatteo Gmür1-1/+1
2024-10-15add 4th level page tableFabian Imhof1-0/+6
2024-10-06Remove high memory kernel and needless printsMatteo Gmür1-21/+3