Add support for Symmetric Multiprocessing (SMP) #26

Merged
harraiken merged 33 commits from smp into master 2026-05-18 18:44:54 +02:00

33 Commits

Author SHA1 Message Date
a39835493a Enable multi-processor support
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in 31s
Builds / ExectOS (i686, release) (push) Successful in 43s
Builds / ExectOS (amd64, release) (push) Successful in 44s
Builds / ExectOS (i686, debug) (push) Successful in 29s
2026-05-17 20:45:01 +02:00
4e7113a079 Implement HL::Cpu::StartAllProcessors to bootstrap all application processors
All checks were successful
Builds / ExectOS (i686, release) (push) Successful in 31s
Builds / ExectOS (amd64, release) (push) Successful in 33s
Builds / ExectOS (i686, debug) (push) Successful in 39s
Builds / ExectOS (amd64, debug) (push) Successful in 41s
2026-05-17 17:33:35 +02:00
8080e07281 Fix stack pointer miscalculation caused by adding KERNEL_STACK_SIZE twice
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in 33s
Builds / ExectOS (amd64, release) (push) Successful in 31s
Builds / ExectOS (i686, release) (push) Successful in 38s
Builds / ExectOS (i686, debug) (push) Successful in 40s
2026-05-17 14:38:44 +02:00
fc0e1384c4 Fix debug log message
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in 31s
Builds / ExectOS (amd64, debug) (push) Successful in 40s
Builds / ExectOS (i686, debug) (push) Successful in 30s
Builds / ExectOS (i686, release) (push) Successful in 39s
2026-05-17 14:33:01 +02:00
9603453334 Implement Application Processor bootstrap function
All checks were successful
Builds / ExectOS (i686, debug) (push) Successful in 39s
Builds / ExectOS (i686, release) (push) Successful in 38s
Builds / ExectOS (amd64, release) (push) Successful in 59s
Builds / ExectOS (amd64, debug) (push) Successful in 1m1s
2026-05-17 14:29:45 +02:00
29368a0dd8 Implement string to number conversion functions
All checks were successful
Builds / ExectOS (i686, release) (push) Successful in 29s
Builds / ExectOS (amd64, release) (push) Successful in 27s
Builds / ExectOS (i686, debug) (push) Successful in 41s
Builds / ExectOS (amd64, debug) (push) Successful in 43s
2026-05-15 15:02:22 +02:00
8ee97ac0ae Add NOX2APIC boot parameter to bypass hardware detection
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in -59m32s
Builds / ExectOS (amd64, release) (push) Successful in 31s
Builds / ExectOS (i686, debug) (push) Successful in -59m31s
Builds / ExectOS (i686, release) (push) Successful in 37s
2026-05-15 12:00:50 +02:00
6bbeb657ea Merge branch 'master' into smp
All checks were successful
Builds / ExectOS (i686, debug) (push) Successful in -59m30s
Builds / ExectOS (amd64, debug) (push) Successful in -59m28s
Builds / ExectOS (i686, release) (push) Successful in 38s
Builds / ExectOS (amd64, release) (push) Successful in 40s
2026-05-15 11:43:45 +02:00
c824e15cdb Fix stack allocation documentation and remove redundant parameter
All checks were successful
Builds / ExectOS (i686, debug) (push) Successful in -59m28s
Builds / ExectOS (amd64, debug) (push) Successful in -59m26s
Builds / ExectOS (i686, release) (push) Successful in 1m27s
Builds / ExectOS (amd64, release) (push) Successful in 1m30s
2026-05-15 11:42:19 +02:00
38b2e7a1ed Read previously identified CPU features from PRCB
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in -59m13s
Builds / ExectOS (amd64, release) (push) Successful in -59m15s
Builds / ExectOS (i686, release) (push) Successful in -59m31s
Builds / ExectOS (i686, debug) (push) Successful in -59m29s
2026-05-15 11:33:23 +02:00
efff262fb5 Replace CPUID queries with cached PRCB feature bits
All checks were successful
Builds / ExectOS (i686, debug) (push) Successful in -59m0s
Builds / ExectOS (amd64, debug) (push) Successful in -58m55s
Builds / ExectOS (i686, release) (push) Successful in 1m39s
Builds / ExectOS (amd64, release) (push) Successful in 1m44s
2026-05-15 09:13:56 +02:00
14cbd63b01 Remove premature SetRunLevel call from InitializeProcessor before APIC initialization
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in -59m29s
Builds / ExectOS (amd64, debug) (push) Successful in -59m27s
Builds / ExectOS (i686, release) (push) Successful in -59m30s
Builds / ExectOS (i686, debug) (push) Successful in -59m27s
2026-05-14 21:52:42 +02:00
63d18aad1e Add ExtendedFeatureBits field
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in -59m28s
Builds / ExectOS (amd64, release) (push) Successful in -59m29s
Builds / ExectOS (i686, debug) (push) Successful in -59m28s
Builds / ExectOS (i686, release) (push) Successful in -59m29s
2026-05-14 21:37:11 +02:00
ed52d421ea Implement processor feature enumeration mapping
Some checks failed
Builds / ExectOS (amd64, release) (push) Failing after -59m37s
Builds / ExectOS (amd64, debug) (push) Failing after -59m35s
Builds / ExectOS (i686, release) (push) Failing after -59m36s
Builds / ExectOS (i686, debug) (push) Failing after -59m35s
2026-05-14 21:35:43 +02:00
6df6a012d2 Partially revert ca4f3acc0e
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in -59m30s
Builds / ExectOS (amd64, debug) (push) Successful in -59m28s
Builds / ExectOS (i686, debug) (push) Successful in -59m29s
Builds / ExectOS (i686, release) (push) Successful in -59m31s
2026-05-14 21:12:09 +02:00
ac675b037e Add FeatureBits field to CPU identification structure
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in -59m8s
Builds / ExectOS (amd64, release) (push) Successful in -59m37s
Builds / ExectOS (i686, debug) (push) Successful in -59m29s
Builds / ExectOS (i686, release) (push) Successful in -59m32s
2026-05-14 19:28:45 +02:00
ca4f3acc0e Properly identify CPU vendor
Some checks failed
Builds / ExectOS (amd64, debug) (push) Has been cancelled
Builds / ExectOS (amd64, release) (push) Has been cancelled
Builds / ExectOS (i686, debug) (push) Has been cancelled
Builds / ExectOS (i686, release) (push) Has been cancelled
2026-05-14 18:59:00 +02:00
5b7761fe7d Expose InitializeProcessorStructures as a public method
Some checks failed
Builds / ExectOS (amd64, debug) (push) Has been cancelled
Builds / ExectOS (amd64, release) (push) Has been cancelled
Builds / ExectOS (i686, debug) (push) Has been cancelled
Builds / ExectOS (i686, release) (push) Has been cancelled
2026-05-14 18:10:29 +02:00
7a2a27b1b9 Consolidate ProcessorBlock and ProcessorNumber into ProcessorStructures
Some checks failed
Builds / ExectOS (amd64, debug) (push) Has been cancelled
Builds / ExectOS (amd64, release) (push) Has been cancelled
Builds / ExectOS (i686, debug) (push) Has been cancelled
Builds / ExectOS (i686, release) (push) Has been cancelled
2026-05-14 18:00:56 +02:00
1cff58c106 Refactor processor block initialization and add registration function
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in -59m26s
Builds / ExectOS (amd64, release) (push) Successful in -59m28s
Builds / ExectOS (i686, release) (push) Successful in -59m26s
Builds / ExectOS (i686, debug) (push) Successful in -59m24s
2026-05-14 13:15:55 +02:00
9185ceade6 Decouple processor block initialization from AllocateProcessorStructures
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in -59m26s
Builds / ExectOS (amd64, release) (push) Successful in -59m28s
Builds / ExectOS (i686, release) (push) Successful in -59m30s
Builds / ExectOS (i686, debug) (push) Successful in -59m27s
2026-05-14 11:07:42 +02:00
908bc87b06 Add NULL checks to InitializeProcessorStructures and reorder TSS allocation
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in -59m29s
Builds / ExectOS (amd64, debug) (push) Successful in -59m26s
Builds / ExectOS (i686, release) (push) Successful in -59m29s
Builds / ExectOS (i686, debug) (push) Successful in -59m27s
2026-05-14 11:06:00 +02:00
6b852556a5 Replace magic numbers with architectural defines
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in -59m29s
Builds / ExectOS (amd64, debug) (push) Successful in -59m27s
Builds / ExectOS (i686, release) (push) Successful in -59m28s
Builds / ExectOS (i686, debug) (push) Successful in -59m26s
2026-05-13 22:01:49 +02:00
ae18468bad Add AP startup assembly trampoline for AMD64
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in -59m26s
Builds / ExectOS (amd64, debug) (push) Successful in -59m25s
Builds / ExectOS (i686, release) (push) Successful in -59m30s
Builds / ExectOS (i686, debug) (push) Successful in -59m28s
2026-05-13 21:48:42 +02:00
42bbdc9b26 Fix AP trampoline stack setup
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in -59m27s
Builds / ExectOS (amd64, release) (push) Successful in -59m28s
Builds / ExectOS (i686, debug) (push) Successful in -59m27s
Builds / ExectOS (i686, release) (push) Successful in -59m29s
2026-05-13 21:24:27 +02:00
b1ecdc3439 Add AP startup assembly trampoline for i686
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in -59m29s
Builds / ExectOS (amd64, release) (push) Successful in -59m29s
Builds / ExectOS (i686, debug) (push) Successful in -59m27s
Builds / ExectOS (i686, release) (push) Successful in -59m29s
2026-05-13 20:31:30 +02:00
fd7e18989d Protect debug print output with spinlock
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in -59m28s
Builds / ExectOS (amd64, release) (push) Successful in -59m30s
Builds / ExectOS (i686, release) (push) Successful in -59m29s
Builds / ExectOS (i686, debug) (push) Successful in -59m27s
2026-05-13 14:33:41 +02:00
757eac08c6 Refactor APIC IPI dispatching
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in -59m29s
Builds / ExectOS (amd64, debug) (push) Successful in -59m28s
Builds / ExectOS (i686, release) (push) Successful in -59m30s
Builds / ExectOS (i686, debug) (push) Successful in -59m28s
2026-05-13 11:27:01 +02:00
760e58f993 Correct doxygen parameter name
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in -59m26s
Builds / ExectOS (amd64, release) (push) Successful in -59m28s
Builds / ExectOS (i686, debug) (push) Successful in -59m27s
Builds / ExectOS (i686, release) (push) Successful in -59m29s
2026-05-13 10:10:03 +02:00
c8868ead47 Add AllocateRealModeMemory routine for low memory allocations
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in -59m29s
Builds / ExectOS (amd64, debug) (push) Successful in -59m28s
Builds / ExectOS (i686, debug) (push) Successful in -59m28s
Builds / ExectOS (i686, release) (push) Successful in -59m30s
2026-05-13 10:08:30 +02:00
58981e0087 Add MapVirtualAddress to memory manager paging interface
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in -59m27s
Builds / ExectOS (amd64, release) (push) Successful in -59m28s
Builds / ExectOS (i686, debug) (push) Successful in -59m28s
Builds / ExectOS (i686, release) (push) Successful in -59m30s
2026-05-13 09:58:13 +02:00
06635ed014 Parameterize maximum allocation address in hardware pool and scan memory descriptors in reverse
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in -59m30s
Builds / ExectOS (amd64, debug) (push) Successful in -59m28s
Builds / ExectOS (i686, debug) (push) Successful in -59m27s
Builds / ExectOS (i686, release) (push) Successful in -59m29s
2026-05-12 19:35:06 +02:00
5a92173586 Implement targeted IPI broadcasting using processor block array
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in -59m28s
Builds / ExectOS (amd64, debug) (push) Successful in -59m27s
Builds / ExectOS (i686, debug) (push) Successful in -59m29s
Builds / ExectOS (i686, release) (push) Successful in -59m30s
2026-05-11 00:07:21 +02:00