Commit Graph
100 Commits
Author SHA1 Message Date
belliash c7e96184e6 Correct typo
Builds / ExectOS (i686) (push) Successful in 47s
Builds / ExectOS (amd64) (push) Successful in 49s
2024-06-12 16:11:38 +02:00
belliash 3c1eea33d9 Update ideas
Builds / ExectOS (amd64) (push) Successful in 36s
Builds / ExectOS (i686) (push) Successful in 37s
2024-06-10 18:40:33 +02:00
belliash bfe3d4b18a Fix pointer overflow
Builds / ExectOS (i686) (push) Successful in 45s
Builds / ExectOS (amd64) (push) Successful in 45s
2024-06-10 16:01:19 +02:00
belliash bd7d4f5a0d Fix function type mismatch undefined behavior when calling through a pointer
Builds / ExectOS (i686) (push) Successful in 35s
Builds / ExectOS (amd64) (push) Successful in 36s
2024-06-09 22:26:01 +02:00
belliash 3097ff6250 Get rid of NULL pointer dereference
Builds / ExectOS (amd64) (push) Successful in 37s
Builds / ExectOS (i686) (push) Successful in 37s
2024-06-09 12:45:01 +02:00
belliash 2f16f4f613 Traverse Local x2APIC structures to find all processors
Builds / ExectOS (i686) (push) Successful in 34s
Builds / ExectOS (amd64) (push) Successful in 36s
2024-06-07 23:05:12 +02:00
belliash f36b59c961 Store processor identities in system info structure
Builds / ExectOS (i686) (push) Successful in 1m13s
Builds / ExectOS (amd64) (push) Successful in 1m14s
2024-06-07 20:19:56 +02:00
belliash 86bc2042e5 Cleanup XTDK headers
Builds / ExectOS (i686) (push) Successful in 35s
Builds / ExectOS (amd64) (push) Successful in 36s
2024-06-06 23:09:03 +02:00
belliash 658cb2d3c8 Get system information based on the ACPI (currently only number of CPUs)
Builds / ExectOS (i686) (push) Successful in 35s
Builds / ExectOS (amd64) (push) Successful in 37s
2024-06-06 22:05:32 +02:00
belliash 829fc49aac Fix ACPI cache causing some undefined behavior
Builds / ExectOS (amd64) (push) Successful in 36s
Builds / ExectOS (i686) (push) Successful in 35s
2024-06-06 21:52:41 +02:00
belliash 92e861ebae Cleanup APIC related headers
Builds / ExectOS (i686) (push) Successful in 39s
Builds / ExectOS (amd64) (push) Successful in 43s
2024-06-06 21:50:20 +02:00
belliash 4212453cf5 Fix APIC initialization code
Builds / ExectOS (i686) (push) Successful in 35s
Builds / ExectOS (amd64) (push) Successful in 37s
2024-06-06 16:49:08 +02:00
belliash ef65bceccd Initialize legacy PIC and mask all interrupts
Builds / ExectOS (i686) (push) Successful in 37s
Builds / ExectOS (amd64) (push) Successful in 37s
2024-06-05 16:08:54 +02:00
belliash b061c87fc9 Fix routines with no prototype using XTAPI calling convention compiler warnings
Builds / ExectOS (amd64) (push) Successful in 36s
Builds / ExectOS (i686) (push) Successful in 35s
2024-06-04 21:41:16 +02:00
belliash 8a4caba26f Fix routine with no prototype using XTAPI calling convention compiler warning
Builds / ExectOS (amd64) (push) Successful in 33s
Builds / ExectOS (i686) (push) Successful in 33s
2024-06-04 21:39:10 +02:00
belliash 76e1fc6099 Enable hardware layer initialization code
Builds / ExectOS (amd64) (push) Successful in 35s
Builds / ExectOS (i686) (push) Successful in 34s
2024-06-04 21:36:09 +02:00
belliash 7b29897efb Initialize ACPI Timer
Builds / ExectOS (amd64) (push) Successful in 33s
Builds / ExectOS (i686) (push) Successful in 34s
2024-06-04 21:04:09 +02:00
belliash 7704e5d399 Initial kernel ACPI support
Builds / ExectOS (amd64) (push) Successful in 37s
Builds / ExectOS (i686) (push) Successful in 36s
2024-06-04 16:24:13 +02:00
belliash db5d6c42c9 Rework AcpChecksumTable() routine into AcpValidateAcpiTable()
Builds / ExectOS (amd64) (push) Successful in 35s
Builds / ExectOS (i686) (push) Successful in 34s
2024-06-03 23:31:33 +02:00
belliash 54b7e46f1b Simplify AcGetAcpiTable() routine a bit
Builds / ExectOS (amd64) (push) Successful in 35s
Builds / ExectOS (i686) (push) Successful in 34s
2024-06-03 23:24:54 +02:00
belliash de709162e3 ACPI_RSDT structure does not need to be packed
Builds / ExectOS (amd64) (push) Successful in 37s
Builds / ExectOS (i686) (push) Successful in 35s
2024-06-03 22:27:36 +02:00
belliash 5d2d409d0f Add more XTSTATUS status codes
Builds / ExectOS (amd64) (push) Successful in 36s
Builds / ExectOS (i686) (push) Successful in 35s
2024-06-03 22:14:58 +02:00
belliash f265810a5c Fix AcGetAcpiTable() routine failing to validate FADT checksum on some ACPI 2.0 and older machines
Builds / ExectOS (amd64) (push) Successful in 38s
Builds / ExectOS (i686) (push) Successful in 37s
2024-06-03 21:58:19 +02:00
belliash 9124574bc5 Fixes and improvements to ACPI related structures and definitions
Builds / ExectOS (amd64) (push) Successful in 38s
Builds / ExectOS (i686) (push) Successful in 35s
2024-06-03 21:17:31 +02:00
belliash 7f922dd864 Let XTLDR provide ACPI system resource
Builds / ExectOS (amd64) (push) Successful in 37s
Builds / ExectOS (i686) (push) Successful in 36s
2024-06-02 22:30:52 +02:00
belliash c289dab514 Add ACPI resource type
Builds / ExectOS (amd64) (push) Successful in 36s
Builds / ExectOS (i686) (push) Successful in 35s
2024-06-02 21:36:59 +02:00
belliash 29ff9e114e Mark XtMapHardwareMemoryPool() routine private
Builds / ExectOS (amd64) (push) Successful in 36s
Builds / ExectOS (i686) (push) Successful in 35s
2024-06-02 17:34:30 +02:00
belliash c1ab5fe98d Cleanup hardware allocation memory pool related code for i686
Builds / ExectOS (amd64) (push) Successful in 35s
Builds / ExectOS (i686) (push) Successful in 35s
2024-06-02 17:32:39 +02:00
belliash 6176ca38a8 Cleanup hardware allocation memory pool related code
Builds / ExectOS (amd64) (push) Successful in 32s
Builds / ExectOS (i686) (push) Failing after 32s
2024-06-02 17:29:31 +02:00
belliash abb65b99fe HlPool manages hardware related memory
Builds / ExectOS (amd64) (push) Successful in 1m39s
Builds / ExectOS (i686) (push) Successful in 1m36s
2024-06-02 17:01:45 +02:00
belliash 6b1ccc4ce5 Do not hardcode PML shift values
Builds / ExectOS (amd64) (push) Successful in 35s
Builds / ExectOS (i686) (push) Successful in 35s
2024-05-27 22:26:05 +02:00
belliash f968eb21fd Cleanup the code
Builds / ExectOS (amd64) (push) Successful in 35s
Builds / ExectOS (i686) (push) Successful in 34s
2024-05-27 22:20:53 +02:00
belliash 7f8846f23d Map memory for hardware layer on i686
Builds / ExectOS (amd64) (push) Successful in 35s
Builds / ExectOS (i686) (push) Successful in 34s
2024-05-27 22:17:30 +02:00
belliash ae243a9d07 Map memory for hardware layer on amd64
Builds / ExectOS (i686) (push) Successful in 48s
Builds / ExectOS (amd64) (push) Successful in 51s
2024-05-27 21:54:21 +02:00
belliash a7c4f6c2aa Fix MmMapHalMemory() not using the ReturnAddress for calculating virtual address
Builds / ExectOS (i686) (push) Successful in 36s
Builds / ExectOS (amd64) (push) Successful in 39s
2024-05-26 10:50:31 +02:00
belliash 4a275b3dec Just skip unsupported system resources
Builds / ExectOS (i686) (push) Successful in 50s
Builds / ExectOS (amd64) (push) Successful in 52s
2024-05-26 00:09:31 +02:00
belliash 70d1295919 Do not support non-PAE systems
Builds / ExectOS (amd64) (push) Successful in 32s
Builds / ExectOS (i686) (push) Successful in 30s
2024-05-24 23:47:29 +02:00
belliash 03ba3b5583 Add missing forward references for APIC related structures
Builds / ExectOS (amd64) (push) Successful in 34s
Builds / ExectOS (i686) (push) Successful in 33s
2024-05-24 23:41:27 +02:00
belliash 94a40501d4 Mask APIC ICR0 and disable APIC interrupts for initialization time by raising APIC TPR
Builds / ExectOS (amd64) (push) Successful in 49s
Builds / ExectOS (i686) (push) Successful in 48s
2024-05-24 23:39:06 +02:00
belliash b4588d5b4c Make ExectOS only run on processors which support PAE
Builds / ExectOS (amd64) (push) Successful in 55s
Builds / ExectOS (i686) (push) Successful in 53s
2024-05-24 16:30:39 +02:00
belliash 5221db2e63 Rename LOADER_MEMORY_MAPPING structure to more meaningful LOADER_MEMORY_DESCRIPTOR
Builds / ExectOS (i686) (push) Successful in 2m8s
Builds / ExectOS (amd64) (push) Successful in 2m11s
2024-05-23 19:00:50 +02:00
belliash 143803aad9 PPE needs PAE on i686
Builds / ExectOS (amd64) (push) Successful in 46s
Builds / ExectOS (i686) (push) Successful in 46s
2024-05-22 23:09:30 +02:00
belliash edbc2cc045 Initialize architecture specific hardware extensions
Builds / ExectOS (amd64) (push) Successful in 47s
Builds / ExectOS (i686) (push) Successful in 45s
2024-05-22 22:53:29 +02:00
belliash 609538b9be Implement MmpGetPdeAddress() and MmpGetPteAddress() routines for i686 architecture as well as MmpMemoryExtensionEnabled() for checking PAE/LA57 support
Builds / ExectOS (amd64) (push) Successful in 51s
Builds / ExectOS (i686) (push) Successful in 50s
2024-05-22 22:47:28 +02:00
belliash 4db5425238 Add PHYSICAL_ADDRESS type definition
Builds / ExectOS (i686) (push) Failing after 39s
Builds / ExectOS (amd64) (push) Successful in 41s
2024-05-22 18:52:57 +02:00
belliash 03727a61d3 Implement hardware layer pool memory management
Builds / ExectOS (amd64) (push) Failing after 46s
Builds / ExectOS (i686) (push) Failing after 44s
2024-05-22 18:51:09 +02:00
belliash 28903e0c10 Add missing forward reference for AcGetAcpiTable() routine
Builds / ExectOS (amd64) (push) Successful in 42s
Builds / ExectOS (i686) (push) Successful in 41s
2024-05-20 15:34:49 +02:00
belliash 500498508e Rename PACK definition
Builds / ExectOS (amd64) (push) Successful in 48s
Builds / ExectOS (i686) (push) Successful in 47s
2024-05-20 15:34:15 +02:00
belliash ac33b86c3d Implement AcGetAcpiTable() routine
Builds / ExectOS (i686) (push) Successful in 53s
Builds / ExectOS (amd64) (push) Successful in 55s
2024-05-19 23:45:28 +02:00
belliash 4931f1b9a3 Cleanup loader information block after switching to system resources
Builds / ExectOS (amd64) (push) Successful in 42s
Builds / ExectOS (i686) (push) Successful in 41s
2024-05-18 17:32:56 +02:00
belliash c17f6a95d4 Use relative path in debug output
Builds / ExectOS (amd64) (push) Successful in 42s
Builds / ExectOS (i686) (push) Successful in 40s
2024-05-18 17:30:11 +02:00
belliash 34cc81c446 Provide framebuffer information via system resource
Builds / ExectOS (amd64) (push) Successful in 42s
Builds / ExectOS (i686) (push) Successful in 43s
2024-05-18 17:06:44 +02:00
belliash 2103b2dafd Make sure frame buffer is initialized before drawing
Builds / ExectOS (amd64) (push) Successful in 50s
Builds / ExectOS (i686) (push) Successful in 49s
2024-05-18 16:57:38 +02:00
belliash d2014a5e82 Use HlpRGBColor() internally
Builds / ExectOS (amd64) (push) Successful in 42s
Builds / ExectOS (i686) (push) Successful in 41s
2024-05-17 23:29:03 +02:00
belliash 811b173387 Re-enable interrupts only if they were enabled previously
Builds / ExectOS (amd64) (push) Successful in 42s
Builds / ExectOS (i686) (push) Successful in 40s
2024-05-17 23:24:04 +02:00
belliash 740df726e9 Implement ArInterruptsEnabled() routine
Builds / ExectOS (amd64) (push) Successful in 40s
Builds / ExectOS (i686) (push) Successful in 39s
2024-05-17 23:19:25 +02:00
belliash 5591e1b377 Fix ArGetCpuFlags() routine
Builds / ExectOS (amd64) (push) Successful in 40s
Builds / ExectOS (i686) (push) Successful in 38s
2024-05-17 23:16:16 +02:00
belliash 41bc673694 Initialize framebuffer device based on a system resource provided by boot loader
Builds / ExectOS (amd64) (push) Successful in 41s
Builds / ExectOS (i686) (push) Successful in 38s
2024-05-17 22:37:42 +02:00
belliash 8a15d46198 Initialize system resource as soon as possible
Builds / ExectOS (amd64) (push) Successful in 48s
Builds / ExectOS (i686) (push) Successful in 46s
2024-05-17 22:31:29 +02:00
belliash 1e2efce26a Add a system resources list to the initialization block
Builds / ExectOS (amd64) (push) Successful in 43s
Builds / ExectOS (i686) (push) Successful in 41s
2024-05-16 23:20:57 +02:00
belliash 74c1b03a6b Implement a system resources management routines
Builds / ExectOS (amd64) (push) Failing after 10m17s
Builds / ExectOS (i686) (push) Failing after 10m15s
2024-05-16 23:08:59 +02:00
belliash 058649036f Take care about blink first, otherwise BlPhysicalListToVirtual() fails to properly map single-element linked list
Builds / ExectOS (amd64) (push) Successful in 57s
Builds / ExectOS (i686) (push) Successful in 56s
2024-05-16 22:17:40 +02:00
belliash f74a5521ba Update KPROCESS and KTHREAD structure definitions
Builds / ExectOS (amd64) (push) Successful in 39s
Builds / ExectOS (i686) (push) Successful in 37s
2024-05-14 19:44:10 +02:00
belliash 9f1a4f0ced Compose the AMD family and model IDs according to the AMD CPUID manual, section 2
Builds / ExectOS (i686) (push) Successful in 39s
Builds / ExectOS (amd64) (push) Successful in 41s
2024-05-14 19:39:07 +02:00
belliash 2a8cc7397e Implement ArGetCpuFlags() routine
Builds / ExectOS (amd64) (push) Successful in 38s
Builds / ExectOS (i686) (push) Successful in 38s
2024-05-14 16:26:02 +02:00
belliash efef3cb80d Cleanup EFLAGS related definitions
Builds / ExectOS (amd64) (push) Successful in 38s
Builds / ExectOS (i686) (push) Successful in 37s
2024-05-14 16:22:10 +02:00
belliash 01d127f49e Consider not initialized list as empty, what prevents page faults
Builds / ExectOS (amd64) (push) Successful in 57s
Builds / ExectOS (i686) (push) Successful in 55s
2024-05-14 15:53:21 +02:00
belliash 60a9e4b534 Rename source file with fb-related stuff, fix build
Builds / ExectOS (amd64) (push) Successful in 43s
Builds / ExectOS (i686) (push) Successful in 41s
2024-05-13 15:59:24 +02:00
belliash 086d9ed7e2 Rename source file with fb-related stuff
Builds / ExectOS (amd64) (push) Failing after 33s
Builds / ExectOS (i686) (push) Failing after 32s
2024-05-13 15:55:39 +02:00
belliash 78424385fc Convert RGB colors to FrameBuffer format
Builds / ExectOS (amd64) (push) Successful in 55s
Builds / ExectOS (i686) (push) Successful in 54s
2024-05-13 08:51:27 +02:00
belliash e311cad8f7 Allow to clear framebuffer screen with any, custom background color
Builds / ExectOS (amd64) (push) Successful in 44s
Builds / ExectOS (i686) (push) Successful in 42s
2024-05-12 22:43:06 +02:00
belliash c576f7f8f2 Provide pixel information to the kernel
Builds / ExectOS (amd64) (push) Successful in 41s
Builds / ExectOS (i686) (push) Successful in 40s
2024-05-12 22:28:06 +02:00
belliash 615a1457bf Fixes to FbpGetPixelInformation() and FbpGetColorMask() routines
Builds / ExectOS (amd64) (push) Successful in 46s
Builds / ExectOS (i686) (push) Successful in 44s
2024-05-12 22:20:22 +02:00
belliash 3d08be4fac Refactor kernel startup code
Builds / ExectOS (amd64) (push) Successful in 1m7s
Builds / ExectOS (i686) (push) Successful in 1m4s
2024-05-12 09:06:24 +02:00
belliash eeeb9d6ed7 Update PoInitializeProcessorControlBlock() routine and corresponding structures
Builds / ExectOS (i686) (push) Successful in 50s
Builds / ExectOS (amd64) (push) Successful in 53s
2024-05-09 22:12:50 +02:00
belliash c34b6ff6c1 Take CPU number from processor block
Builds / ExectOS (amd64) (push) Successful in 50s
Builds / ExectOS (i686) (push) Successful in 48s
2024-05-08 21:59:18 +02:00
belliash 38b0b2ac7d Use correct stack when using preallocated processor structures
Builds / ExectOS (i686) (push) Successful in 49s
Builds / ExectOS (amd64) (push) Successful in 50s
2024-05-08 15:57:24 +02:00
belliash 3c3a756771 Allow to initialize CPU with allocated processor structures
Builds / ExectOS (i686) (push) Successful in 35s
Builds / ExectOS (amd64) (push) Successful in 36s
2024-05-08 00:02:47 +02:00
belliash fb099a1988 Preallocate buffer for all supported CPUs
Builds / ExectOS (i686) (push) Successful in 36s
Builds / ExectOS (amd64) (push) Successful in 38s
2024-05-07 23:47:58 +02:00
belliash b65ff2a767 Implement MmAllocateProcessorStructures() routine as a temporary hack to get a buffer for AP initialization
Builds / ExectOS (amd64) (push) Successful in 46s
Builds / ExectOS (i686) (push) Successful in 44s
2024-05-07 23:30:11 +02:00
belliash 8d6d27651c Implement KeGetCurrentProcessorNumber() routine
Builds / ExectOS (amd64) (push) Successful in 36s
Builds / ExectOS (i686) (push) Successful in 34s
2024-05-07 18:52:43 +02:00
belliash f66e9aea9e Store CPU number and mask interrupts in processor block
Builds / ExectOS (i686) (push) Successful in 33s
Builds / ExectOS (amd64) (push) Successful in 36s
2024-05-07 16:21:38 +02:00
belliash 276eb77862 Update KPROCESSOR_BLOCK structure
Builds / ExectOS (amd64) (push) Successful in 34s
Builds / ExectOS (i686) (push) Successful in 33s
2024-05-07 16:20:40 +02:00
belliash ac0b8ab36a Allow to specify CPU number when initializing (A)PIC
Builds / ExectOS (amd64) (push) Successful in 42s
Builds / ExectOS (i686) (push) Successful in 41s
2024-05-07 16:16:49 +02:00
belliash 2c384d780f Fix storing CPU vendor name in PRCB
Builds / ExectOS (amd64) (push) Successful in 48s
Builds / ExectOS (i686) (push) Successful in 45s
2024-05-06 20:01:19 +02:00
belliash 243aacc9c1 Cleanup thread context initialization code
Builds / ExectOS (i686) (push) Successful in 38s
Builds / ExectOS (amd64) (push) Successful in 40s
2024-05-06 16:57:29 +02:00
belliash cf0d23b6fe Correct a typo causing page fault during int handling after switching to new kernel stack
Builds / ExectOS (amd64) (push) Successful in 53s
Builds / ExectOS (i686) (push) Successful in 50s
2024-05-06 16:47:12 +02:00
belliash e4155ee008 Lower runlevel to APC before initializing idle process
Builds / ExectOS (amd64) (push) Successful in 41s
Builds / ExectOS (i686) (push) Successful in 39s
2024-05-05 21:48:58 +02:00
belliash c98ad3862b Use kernel boot stack for the idle thread
Builds / ExectOS (i686) (push) Successful in 43s
Builds / ExectOS (amd64) (push) Successful in 46s
2024-05-05 21:47:48 +02:00
belliash 07d7e06b2b Flush keyboard buffer out of any keystrokes before waiting for user input
Builds / ExectOS (amd64) (push) Successful in 39s
Builds / ExectOS (i686) (push) Successful in 37s
2024-05-05 15:29:20 +02:00
belliash 40e0dd8c5e Mask LVTERR first to prevent local APIC errors
Builds / ExectOS (amd64) (push) Successful in 58s
Builds / ExectOS (i686) (push) Successful in 57s
2024-05-05 15:24:17 +02:00
belliash 5a013e3ab5 Properly free memory after reading a file
Builds / ExectOS (amd64) (push) Successful in 39s
Builds / ExectOS (i686) (push) Successful in 38s
2024-04-30 12:27:27 +02:00
belliash e86313603a Correct path to cmake file
Builds / ExectOS (i686) (push) Successful in 35s
Builds / ExectOS (amd64) (push) Successful in 37s
2024-04-30 12:19:38 +02:00
belliash 7a62ce3feb Enable Bochs-based emulation
Builds / ExectOS (amd64) (push) Failing after 25s
Builds / ExectOS (i686) (push) Failing after 24s
2024-04-30 12:16:19 +02:00
belliash ecf62ff231 Add OVMF firmware and VGA Bios suitable for use with Bochs
Builds / ExectOS (amd64) (push) Successful in 37s
Builds / ExectOS (i686) (push) Successful in 36s
2024-04-30 11:57:35 +02:00
belliash 99ff358287 Don't mess with input string
Builds / ExectOS (amd64) (push) Successful in 35s
Builds / ExectOS (i686) (push) Successful in 34s
2024-04-30 10:31:17 +02:00
belliash c4d5b5bb25 Truncate memory descriptor to 4GB only with PML2
Builds / ExectOS (i686) (push) Successful in 36s
Builds / ExectOS (amd64) (push) Successful in 37s
2024-04-29 23:59:17 +02:00
belliash 763bade115 Use correct string formatting when printing page mapping
Builds / ExectOS (amd64) (push) Successful in 36s
Builds / ExectOS (i686) (push) Successful in 36s
2024-04-29 23:57:09 +02:00
belliash 0756eb9b29 Allocate memory before copying a buffer
Builds / ExectOS (i686) (push) Successful in 34s
Builds / ExectOS (amd64) (push) Successful in 36s
2024-04-29 22:39:32 +02:00
belliash ab618f95b9 Use dedicated GUID for DUMMYOS boot protocol
Builds / ExectOS (amd64) (push) Successful in 37s
Builds / ExectOS (i686) (push) Successful in 35s
2024-04-29 13:48:01 +02:00