Commit Graph
100 Commits
Author SHA1 Message Date
harraiken d88fa93df9 Introduce page fault handling infrastructure 2026-03-25 15:03:33 +01:00
harraiken 9cfc22e1f3 Reserve space for color tables to fix invalid memory access 2026-03-25 15:03:33 +01:00
harraiken d9a95527f3 Ensure page map structures are self-mapped 2026-03-25 15:03:33 +01:00
harraiken 47606faded Initialize paged pool sizing logic 2026-03-25 15:03:33 +01:00
harraiken b6c5bae289 Minor style fixes in MM includes 2026-03-25 15:03:33 +01:00
harraiken 330c9e3eaf Update PTE support to use safe write accessors 2026-03-25 15:03:33 +01:00
harraiken 2854f77159 Refactor memory clearing calls and cleanup code style 2026-03-25 15:03:33 +01:00
harraiken 75dfcec5a6 Implement PFN database initialization and memory descriptor processing 2026-03-25 15:03:33 +01:00
harraiken f33fa0fdaf Expose PFN database lookup via GetPfnEntry 2026-03-25 15:03:33 +01:00
harraiken cdad8ffe2c Implement tracking of available physical pages 2026-03-25 15:03:33 +01:00
harraiken 425780de69 Initialize system PTE pools and implement reservation routines 2026-03-25 15:03:33 +01:00
harraiken 446d9af325 Initialize system page tables and configure kernel mappings 2026-03-25 15:03:33 +01:00
harraiken 536d59c3a8 Include mm/colors.cc in kernel build configuration 2026-03-25 15:03:33 +01:00
harraiken 4192e93157 Introduce page coloring support to memory manager 2026-03-25 15:03:33 +01:00
harraiken b32c66110b Add storage for PFN database size 2026-03-25 15:03:33 +01:00
harraiken cdb3c1a8da Initialize memory manager during kernel startup 2026-03-25 15:03:33 +01:00
harraiken 5e54aca398 Update modified page list enum terminology 2026-03-25 15:03:33 +01:00
harraiken 68604e1bc0 Update memory manager type definitions and constants 2026-03-25 15:03:33 +01:00
harraiken a4b36827e4 Bring up i686 page table initialization 2026-03-25 15:03:33 +01:00
harraiken e8512e9f45 Fix physical page count overflow by using 64-bit type 2026-03-25 15:03:33 +01:00
harraiken 0448217c06 Fix PTE free list sentinel handling 2026-03-25 15:03:33 +01:00
harraiken f9b27b48b0 Select correct self-map base for PAE and non-PAE paging 2026-03-25 15:03:33 +01:00
harraiken eb621e0264 Extend PTE helpers with raw read and write support 2026-03-25 15:03:33 +01:00
harraiken ed769e023f Respect architecture-specific PTE layouts and write PTEs via PML-aware helpers 2026-03-25 15:03:33 +01:00
harraiken 08b095d47c Make PPE mapping architecture-specific 2026-03-25 15:03:33 +01:00
harraiken 87aa3494f9 Add early spin lock initialization 2026-03-25 15:03:33 +01:00
harraiken 244af13500 Clarify page table entry offset semantics 2026-03-25 15:03:33 +01:00
harraiken e6d2574bf9 Fix paging abstraction for PDE/PTE virtual address calculation 2026-03-25 15:03:33 +01:00
harraiken 6f9e537e86 Implement initial virtual memory layout setup 2026-03-25 15:03:33 +01:00
harraiken be6ad1658f Update SelfMapAddress 2026-03-25 15:03:33 +01:00
harraiken a45cd95b6f Call page table initialization 2026-03-25 15:03:33 +01:00
harraiken 3c5bb52152 Add virtual address validation and system PTE helpers 2026-03-25 15:03:33 +01:00
harraiken 3a311a0497 Move memory layout initialization to architecture-specific code 2026-03-25 15:03:33 +01:00
harraiken 140b25ff76 Architecture-specific system PTE limits 2026-03-25 15:03:33 +01:00
harraiken c760016ee5 Extend memory layout 2026-03-25 15:03:33 +01:00
harraiken 6a55b1a42c Remove unsupported PML4/PML5 PTE interfaces 2026-03-25 15:03:33 +01:00
harraiken d8b2af8f1e Split PTE implementation per architecture 2026-03-25 15:03:33 +01:00
harraiken 28fc0ab435 Compute PTE count per page from entry size 2026-03-25 15:03:33 +01:00
harraiken 329c22ae82 Implement early page table mapping routines 2026-03-25 15:03:33 +01:00
harraiken d27954091a Add bootstrap physical page allocator 2026-03-25 15:03:33 +01:00
harraiken df9028d425 Introduce kernel virtual memory layout 2026-03-25 15:03:33 +01:00
harraiken 540c4df13e Compute PFN database size during MM initialization 2026-03-25 15:03:33 +01:00
harraiken 0a2fb7ae38 Tidy up memory type verification helpers 2026-03-25 15:03:33 +01:00
harraiken 6f824c55bb Harden PFN initialization and expose page count 2026-03-25 15:03:33 +01:00
harraiken f371b305ad Make memory type verification helpers accessible to PFN 2026-03-25 15:03:33 +01:00
harraiken 24e20f3d8f Extract PFN management into separate module 2026-03-25 15:03:33 +01:00
harraiken c7bfc028b6 Refactor memory manager initialization into MM::Manager 2026-03-25 15:03:33 +01:00
harraiken 9492ba09a6 Fix GetP5eAddress return type 2026-03-25 15:03:33 +01:00
harraiken 4e7ab3585e Add missing virtual GetPteDistance to pagemap interface 2026-03-25 15:03:33 +01:00
harraiken 9d27778e4c Add architecture-specific GetPteDistance 2026-03-25 15:03:33 +01:00
harraiken 0796164cf8 Refactor XPA detection API 2026-03-25 15:03:33 +01:00
harraiken 2f4d26b432 Fix incorrect pointer types 2026-03-25 15:03:33 +01:00
harraiken 48fafd4a9a Fix incorrect pointer types 2026-03-25 15:03:33 +01:00
harraiken 1996024e96 Split paging interface into arch-specific code 2026-03-25 15:03:33 +01:00
harraiken 42a96ae5c3 Implement virtual address resolvers for all page map levels and add XPA status accessor 2026-03-25 15:03:33 +01:00
harraiken f9a057db2d Add MM::PageMap::GetXpaStatus() for querying PML level 2026-03-25 15:03:33 +01:00
harraiken f210c9e334 Refactor PageMap to enable architecture-specific VA translation 2026-03-25 15:03:33 +01:00
harraiken 117d174e6e Add PFN_COUNT typedef 2026-03-25 15:03:33 +01:00
harraiken 8334fe5a48 Correct LA57 paging base addresses, add self-map constants and extend PTE structures 2026-03-25 15:03:33 +01:00
harraiken 7b7426738a Add kernel parameters section and fix minor formatting issues 2026-03-25 15:03:33 +01:00
harraiken 8d4455de88 Prevent duplicate object generation by linking xtoskrnl with libxtos 2026-03-25 15:03:33 +01:00
harraiken b7f0f07f8b Add page list and PTE pool type enums 2026-03-25 15:03:33 +01:00
harraiken e831902363 Fix class name 2026-03-25 15:03:33 +01:00
harraiken f247726ee9 Add GetPageFrameNumber() to PTE interfaces 2026-03-25 15:03:33 +01:00
harraiken 9449ee6eb1 Make MM::Paging::GetExtendedPhysicalAddressingStatus public 2026-03-25 15:03:33 +01:00
harraiken 34586d8fa1 Replace writable flag with AttributesMask in PTE setup 2026-03-25 15:03:33 +01:00
harraiken 05b9bb75a7 Add PTE attribute definitions 2026-03-25 15:03:33 +01:00
harraiken d752de20f6 Unify PTE pointer types across MM subsystem 2026-03-25 15:03:33 +01:00
harraiken fd7cc019ee Unify MMPML2_PTE field naming convention 2026-03-25 15:03:33 +01:00
harraiken 8e48153852 Add input qualifiers to page map interface definitions 2026-03-25 15:03:33 +01:00
harraiken bf98860ff2 Add input qualifiers to paging interface definitions 2026-03-25 15:03:33 +01:00
harraiken c2d3f2e6f4 Add PTE management routines 2026-03-25 15:03:33 +01:00
harraiken 779726c4d6 Add missing EmptyPteList field to MMPAGEMAP_INFO 2026-03-25 15:03:33 +01:00
harraiken 4cf2c0c9e8 Implement unified PTE accessors and management helpers 2026-03-25 15:03:33 +01:00
harraiken 576a2b7f1b Enhance kernel panic output
Builds / ExectOS (i686, debug) (push) Successful in 31s
Builds / ExectOS (amd64, debug) (push) Successful in 33s
Builds / ExectOS (i686, release) (push) Failing after 39s
Builds / ExectOS (amd64, release) (push) Successful in 42s
2026-03-25 14:59:40 +01:00
harraiken 916d124c9b Separate synchronization guards from spinlock implementation
Builds / ExectOS (amd64, debug) (push) Successful in 29s
Builds / ExectOS (amd64, release) (push) Successful in 40s
Builds / ExectOS (i686, debug) (push) Successful in 38s
Builds / ExectOS (i686, release) (push) Successful in 34s
2026-03-21 22:44:00 +01:00
harraiken 140af4278e Fix uninitialized member in SpinLockGuard
Builds / ExectOS (amd64, debug) (push) Successful in 39s
Builds / ExectOS (i686, debug) (push) Successful in 37s
Builds / ExectOS (amd64, release) (push) Successful in 52s
Builds / ExectOS (i686, release) (push) Successful in 50s
2026-03-21 18:29:19 +01:00
harraiken d401ac4540 Remove redundant comments from panic calls
Builds / ExectOS (i686, debug) (push) Successful in 42s
Builds / ExectOS (amd64, debug) (push) Successful in 44s
Builds / ExectOS (i686, release) (push) Successful in 46s
Builds / ExectOS (amd64, release) (push) Successful in 49s
2026-03-16 09:55:26 +01:00
harraiken 0fed593147 Ensure SS and RSP are saved in trap frame
Builds / ExectOS (i686, debug) (push) Successful in 32s
Builds / ExectOS (amd64, release) (push) Successful in 34s
Builds / ExectOS (amd64, debug) (push) Successful in 46s
Builds / ExectOS (i686, release) (push) Successful in 43s
2026-03-15 17:32:01 +01:00
harraiken 6cdb66cbb3 Ensure SS and ESP are saved in trap frame
Builds / ExectOS (amd64, release) (push) Successful in 36s
Builds / ExectOS (amd64, debug) (push) Failing after 45s
Builds / ExectOS (i686, debug) (push) Successful in 35s
Builds / ExectOS (i686, release) (push) Successful in 42s
2026-03-15 00:33:09 +01:00
harraiken 428928c7e1 Simplify panic interface by using C++ overloading
Builds / ExectOS (amd64, debug) (push) Successful in 27s
Builds / ExectOS (i686, release) (push) Successful in 27s
Builds / ExectOS (amd64, release) (push) Successful in 42s
Builds / ExectOS (i686, debug) (push) Successful in 40s
2026-03-13 19:42:03 +01:00
harraiken 0120ba167f Introduce RAII helpers for runlevel transitions
Builds / ExectOS (amd64, debug) (push) Successful in 32s
Builds / ExectOS (amd64, release) (push) Successful in 30s
Builds / ExectOS (i686, release) (push) Successful in 28s
Builds / ExectOS (i686, debug) (push) Successful in 30s
2025-10-29 23:07:27 +01:00
harraiken 4e9dc15501 Define VIRTUAL macro
Builds / ExectOS (amd64, debug) (push) Successful in 32s
Builds / ExectOS (amd64, release) (push) Successful in 30s
Builds / ExectOS (i686, debug) (push) Successful in 32s
Builds / ExectOS (i686, release) (push) Successful in 30s
2025-10-29 22:32:07 +01:00
harraiken 164ff0c135 Expand spinlock queue levels
Builds / ExectOS (amd64, release) (push) Successful in 31s
Builds / ExectOS (amd64, debug) (push) Successful in 33s
Builds / ExectOS (i686, debug) (push) Successful in 32s
Builds / ExectOS (i686, release) (push) Successful in 30s
2025-10-28 08:35:34 +01:00
harraiken f538d035e2 Introduce global spinlock initialization and RAII guard classes
Builds / ExectOS (amd64, release) (push) Successful in 35s
Builds / ExectOS (amd64, debug) (push) Successful in 37s
Builds / ExectOS (i686, debug) (push) Successful in 32s
Builds / ExectOS (i686, release) (push) Successful in 30s
2025-10-27 20:48:44 +01:00
harraiken 72b92f853e Use PTE base from PageMapInfo
Builds / ExectOS (amd64, release) (push) Successful in 31s
Builds / ExectOS (amd64, debug) (push) Successful in 33s
Builds / ExectOS (i686, debug) (push) Successful in 32s
Builds / ExectOS (i686, release) (push) Successful in 30s
2025-10-23 08:54:57 +02:00
harraiken 00b04f5405 Refactor IDT gate setup to use explicit DPL and type fields
Builds / ExectOS (amd64, debug) (push) Successful in 35s
Builds / ExectOS (amd64, release) (push) Successful in 39s
Builds / ExectOS (i686, release) (push) Successful in 36s
Builds / ExectOS (i686, debug) (push) Successful in 32s
2025-10-18 18:29:49 +02:00
harraiken 52afd31e77 Implement Stage2 loading in VBR code
Builds / ExectOS (amd64, release) (push) Successful in 41s
Builds / ExectOS (amd64, debug) (push) Successful in 38s
Builds / ExectOS (i686, release) (push) Successful in 37s
Builds / ExectOS (i686, debug) (push) Successful in 36s
2025-10-17 20:44:57 +02:00
harraiken 7f06abf236 New message for unsupported CPUs
Builds / ExectOS (amd64, debug) (push) Failing after 22s
Builds / ExectOS (amd64, release) (push) Failing after 33s
Builds / ExectOS (i686, debug) (push) Failing after 30s
Builds / ExectOS (i686, release) (push) Failing after 23s
2025-10-17 09:18:49 +02:00
harraiken 4f4df52d3d Include architecture-specific code in VBR
Builds / ExectOS (amd64, debug) (push) Failing after 22s
Builds / ExectOS (i686, debug) (push) Failing after 24s
Builds / ExectOS (amd64, release) (push) Failing after 27s
Builds / ExectOS (i686, release) (push) Failing after 25s
2025-10-17 09:12:54 +02:00
harraiken 764fec4d75 Implement low-level CPU initialization support for i686 and AMD64 boot sectors
Builds / ExectOS (amd64, debug) (push) Successful in 26s
Builds / ExectOS (i686, release) (push) Successful in 26s
Builds / ExectOS (i686, debug) (push) Successful in 38s
Builds / ExectOS (amd64, release) (push) Successful in 41s
2025-10-17 09:05:24 +02:00
harraiken ca8a539c0e Change message labels naming convention
Builds / ExectOS (amd64, release) (push) Successful in 31s
Builds / ExectOS (i686, release) (push) Successful in 29s
Builds / ExectOS (i686, debug) (push) Successful in 1m39s
Builds / ExectOS (amd64, debug) (push) Successful in 1m40s
2025-10-17 08:58:41 +02:00
harraiken c206b443ed Move XTLDR image base definition to arch-specific config
Builds / ExectOS (amd64, debug) (push) Failing after 28s
Builds / ExectOS (i686, debug) (push) Failing after 27s
Builds / ExectOS (i686, release) (push) Failing after 35s
Builds / ExectOS (amd64, release) (push) Failing after 37s
2025-10-16 12:22:30 +02:00
harraiken b19b27a621 Build relocatable image to allow proper UEFI loading
Builds / ExectOS (amd64, release) (push) Failing after 35s
Builds / ExectOS (i686, debug) (push) Failing after 33s
Builds / ExectOS (amd64, debug) (push) Failing after 44s
Builds / ExectOS (i686, release) (push) Failing after 39s
2025-10-16 12:10:00 +02:00
harraiken 56b81f5d73 Set fixed image base
Builds / ExectOS (amd64, debug) (push) Failing after 28s
Builds / ExectOS (amd64, release) (push) Failing after 39s
Builds / ExectOS (i686, debug) (push) Failing after 37s
Builds / ExectOS (i686, release) (push) Failing after 27s
2025-10-15 23:06:12 +02:00
harraiken 1e99a3f4a9 Set fixed alignment and base address to allow execution under BIOS
Builds / ExectOS (i686, debug) (push) Failing after 29s
Builds / ExectOS (amd64, debug) (push) Failing after 29s
Builds / ExectOS (i686, release) (push) Failing after 35s
Builds / ExectOS (amd64, release) (push) Failing after 38s
2025-10-15 21:03:03 +02:00
harraiken 0a71bc3995 Print fallback message in non-EFI environment
Builds / ExectOS (amd64, debug) (push) Failing after 27s
Builds / ExectOS (i686, debug) (push) Failing after 28s
Builds / ExectOS (amd64, release) (push) Failing after 40s
Builds / ExectOS (i686, release) (push) Failing after 39s
2025-10-15 20:55:16 +02:00
harraiken 13a9d4c522 Introduce legacy VGA text mode support
Builds / ExectOS (i686, debug) (push) Failing after 36s
Builds / ExectOS (i686, release) (push) Failing after 34s
Builds / ExectOS (amd64, debug) (push) Failing after 47s
Builds / ExectOS (amd64, release) (push) Failing after 46s
2025-10-15 20:49:17 +02:00
harraiken 9bf867af95 Propagate compile definitions to bootsector sources
Builds / ExectOS (amd64, debug) (push) Failing after 39s
Builds / ExectOS (i686, debug) (push) Failing after 39s
Builds / ExectOS (amd64, release) (push) Failing after 32s
Builds / ExectOS (i686, release) (push) Failing after 29s
2025-10-11 23:18:14 +02:00
harraiken fdbe157c18 Fix CHS sector-by-sector read loop
Builds / ExectOS (amd64, debug) (push) Failing after 32s
Builds / ExectOS (amd64, release) (push) Failing after 29s
Builds / ExectOS (i686, debug) (push) Failing after 41s
Builds / ExectOS (i686, release) (push) Failing after 40s
2025-10-10 19:05:23 +02:00