Commit Graph
100 Commits
Author SHA1 Message Date
belliash 156cb7bcac Refactor system resources to be able to distinguish if requested resource does not exist or if it is locked and cannot be reused 2024-06-22 18:54:34 +02:00
belliash c2db94125d Add appropriate crediting for Minoca authors for the System Resources component 2024-06-21 17:00:20 +02:00
belliash 330d3fa72e Fix routines order for better maintainability 2024-06-21 16:50:05 +02:00
belliash 6b70074ec6 Update Discord badge 2024-06-14 16:33:16 +02:00
belliash 712107ae10 Simplify XTOS library 2024-06-12 18:40:52 +02:00
belliash 906e09fd9f Refactor COM port support, to get rid of global variables in library 2024-06-12 18:02:29 +02:00
belliash 91e8a86ee2 Implement kernel undefined behavior sanitizer support 2024-06-12 16:19:24 +02:00
belliash c7e96184e6 Correct typo 2024-06-12 16:11:38 +02:00
belliash 3c1eea33d9 Update ideas 2024-06-10 18:40:33 +02:00
belliash bfe3d4b18a Fix pointer overflow 2024-06-10 16:01:19 +02:00
belliash bd7d4f5a0d Fix function type mismatch undefined behavior when calling through a pointer 2024-06-09 22:26:01 +02:00
belliash 3097ff6250 Get rid of NULL pointer dereference 2024-06-09 12:45:01 +02:00
belliash 2f16f4f613 Traverse Local x2APIC structures to find all processors 2024-06-07 23:05:12 +02:00
belliash f36b59c961 Store processor identities in system info structure 2024-06-07 20:19:56 +02:00
belliash 86bc2042e5 Cleanup XTDK headers 2024-06-06 23:09:03 +02:00
belliash 658cb2d3c8 Get system information based on the ACPI (currently only number of CPUs) 2024-06-06 22:05:32 +02:00
belliash 829fc49aac Fix ACPI cache causing some undefined behavior 2024-06-06 21:52:41 +02:00
belliash 92e861ebae Cleanup APIC related headers 2024-06-06 21:50:20 +02:00
belliash 4212453cf5 Fix APIC initialization code 2024-06-06 16:49:08 +02:00
belliash ef65bceccd Initialize legacy PIC and mask all interrupts 2024-06-05 16:08:54 +02:00
belliash b061c87fc9 Fix routines with no prototype using XTAPI calling convention compiler warnings 2024-06-04 21:41:16 +02:00
belliash 8a4caba26f Fix routine with no prototype using XTAPI calling convention compiler warning 2024-06-04 21:39:10 +02:00
belliash 76e1fc6099 Enable hardware layer initialization code 2024-06-04 21:36:09 +02:00
belliash 7b29897efb Initialize ACPI Timer 2024-06-04 21:04:09 +02:00
belliash 7704e5d399 Initial kernel ACPI support 2024-06-04 16:24:13 +02:00
belliash db5d6c42c9 Rework AcpChecksumTable() routine into AcpValidateAcpiTable() 2024-06-03 23:31:33 +02:00
belliash 54b7e46f1b Simplify AcGetAcpiTable() routine a bit 2024-06-03 23:24:54 +02:00
belliash de709162e3 ACPI_RSDT structure does not need to be packed 2024-06-03 22:27:36 +02:00
belliash 5d2d409d0f Add more XTSTATUS status codes 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 2024-06-03 21:58:19 +02:00
belliash 9124574bc5 Fixes and improvements to ACPI related structures and definitions 2024-06-03 21:17:31 +02:00
belliash 7f922dd864 Let XTLDR provide ACPI system resource 2024-06-02 22:30:52 +02:00
belliash c289dab514 Add ACPI resource type 2024-06-02 21:36:59 +02:00
belliash 29ff9e114e Mark XtMapHardwareMemoryPool() routine private 2024-06-02 17:34:30 +02:00
belliash c1ab5fe98d Cleanup hardware allocation memory pool related code for i686 2024-06-02 17:32:39 +02:00
belliash 6176ca38a8 Cleanup hardware allocation memory pool related code 2024-06-02 17:29:31 +02:00
belliash abb65b99fe HlPool manages hardware related memory 2024-06-02 17:01:45 +02:00
belliash 6b1ccc4ce5 Do not hardcode PML shift values 2024-05-27 22:26:05 +02:00
belliash f968eb21fd Cleanup the code 2024-05-27 22:20:53 +02:00
belliash 7f8846f23d Map memory for hardware layer on i686 2024-05-27 22:17:30 +02:00
belliash ae243a9d07 Map memory for hardware layer on amd64 2024-05-27 21:54:21 +02:00
belliash a7c4f6c2aa Fix MmMapHalMemory() not using the ReturnAddress for calculating virtual address 2024-05-26 10:50:31 +02:00
belliash 4a275b3dec Just skip unsupported system resources 2024-05-26 00:09:31 +02:00
belliash 70d1295919 Do not support non-PAE systems 2024-05-24 23:47:29 +02:00
belliash 03ba3b5583 Add missing forward references for APIC related structures 2024-05-24 23:41:27 +02:00
belliash 94a40501d4 Mask APIC ICR0 and disable APIC interrupts for initialization time by raising APIC TPR 2024-05-24 23:39:06 +02:00
belliash b4588d5b4c Make ExectOS only run on processors which support PAE 2024-05-24 16:30:39 +02:00
belliash 5221db2e63 Rename LOADER_MEMORY_MAPPING structure to more meaningful LOADER_MEMORY_DESCRIPTOR 2024-05-23 19:00:50 +02:00
belliash 143803aad9 PPE needs PAE on i686 2024-05-22 23:09:30 +02:00
belliash edbc2cc045 Initialize architecture specific hardware extensions 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 2024-05-22 22:47:28 +02:00
belliash 4db5425238 Add PHYSICAL_ADDRESS type definition 2024-05-22 18:52:57 +02:00
belliash 03727a61d3 Implement hardware layer pool memory management 2024-05-22 18:51:09 +02:00
belliash 28903e0c10 Add missing forward reference for AcGetAcpiTable() routine 2024-05-20 15:34:49 +02:00
belliash 500498508e Rename PACK definition 2024-05-20 15:34:15 +02:00
belliash ac33b86c3d Implement AcGetAcpiTable() routine 2024-05-19 23:45:28 +02:00
belliash 4931f1b9a3 Cleanup loader information block after switching to system resources 2024-05-18 17:32:56 +02:00
belliash c17f6a95d4 Use relative path in debug output 2024-05-18 17:30:11 +02:00
belliash 34cc81c446 Provide framebuffer information via system resource 2024-05-18 17:06:44 +02:00
belliash 2103b2dafd Make sure frame buffer is initialized before drawing 2024-05-18 16:57:38 +02:00
belliash d2014a5e82 Use HlpRGBColor() internally 2024-05-17 23:29:03 +02:00
belliash 811b173387 Re-enable interrupts only if they were enabled previously 2024-05-17 23:24:04 +02:00
belliash 740df726e9 Implement ArInterruptsEnabled() routine 2024-05-17 23:19:25 +02:00
belliash 5591e1b377 Fix ArGetCpuFlags() routine 2024-05-17 23:16:16 +02:00
belliash 41bc673694 Initialize framebuffer device based on a system resource provided by boot loader 2024-05-17 22:37:42 +02:00
belliash 8a15d46198 Initialize system resource as soon as possible 2024-05-17 22:31:29 +02:00
belliash 1e2efce26a Add a system resources list to the initialization block 2024-05-16 23:20:57 +02:00
belliash 74c1b03a6b Implement a system resources management routines 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 2024-05-16 22:17:40 +02:00
belliash f74a5521ba Update KPROCESS and KTHREAD structure definitions 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 2024-05-14 19:39:07 +02:00
belliash 2a8cc7397e Implement ArGetCpuFlags() routine 2024-05-14 16:26:02 +02:00
belliash efef3cb80d Cleanup EFLAGS related definitions 2024-05-14 16:22:10 +02:00
belliash 01d127f49e Consider not initialized list as empty, what prevents page faults 2024-05-14 15:53:21 +02:00
belliash 60a9e4b534 Rename source file with fb-related stuff, fix build 2024-05-13 15:59:24 +02:00
belliash 086d9ed7e2 Rename source file with fb-related stuff 2024-05-13 15:55:39 +02:00
belliash 78424385fc Convert RGB colors to FrameBuffer format 2024-05-13 08:51:27 +02:00
belliash e311cad8f7 Allow to clear framebuffer screen with any, custom background color 2024-05-12 22:43:06 +02:00
belliash c576f7f8f2 Provide pixel information to the kernel 2024-05-12 22:28:06 +02:00
belliash 615a1457bf Fixes to FbpGetPixelInformation() and FbpGetColorMask() routines 2024-05-12 22:20:22 +02:00
belliash 3d08be4fac Refactor kernel startup code 2024-05-12 09:06:24 +02:00
belliash eeeb9d6ed7 Update PoInitializeProcessorControlBlock() routine and corresponding structures 2024-05-09 22:12:50 +02:00
belliash c34b6ff6c1 Take CPU number from processor block 2024-05-08 21:59:18 +02:00
belliash 38b0b2ac7d Use correct stack when using preallocated processor structures 2024-05-08 15:57:24 +02:00
belliash 3c3a756771 Allow to initialize CPU with allocated processor structures 2024-05-08 00:02:47 +02:00
belliash fb099a1988 Preallocate buffer for all supported CPUs 2024-05-07 23:47:58 +02:00
belliash b65ff2a767 Implement MmAllocateProcessorStructures() routine as a temporary hack to get a buffer for AP initialization 2024-05-07 23:30:11 +02:00
belliash 8d6d27651c Implement KeGetCurrentProcessorNumber() routine 2024-05-07 18:52:43 +02:00
belliash f66e9aea9e Store CPU number and mask interrupts in processor block 2024-05-07 16:21:38 +02:00
belliash 276eb77862 Update KPROCESSOR_BLOCK structure 2024-05-07 16:20:40 +02:00
belliash ac0b8ab36a Allow to specify CPU number when initializing (A)PIC 2024-05-07 16:16:49 +02:00
belliash 2c384d780f Fix storing CPU vendor name in PRCB 2024-05-06 20:01:19 +02:00
belliash 243aacc9c1 Cleanup thread context initialization code 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 2024-05-06 16:47:12 +02:00
belliash e4155ee008 Lower runlevel to APC before initializing idle process 2024-05-05 21:48:58 +02:00
belliash c98ad3862b Use kernel boot stack for the idle thread 2024-05-05 21:47:48 +02:00
belliash 07d7e06b2b Flush keyboard buffer out of any keystrokes before waiting for user input 2024-05-05 15:29:20 +02:00
belliash 40e0dd8c5e Mask LVTERR first to prevent local APIC errors 2024-05-05 15:24:17 +02:00
belliash 5a013e3ab5 Properly free memory after reading a file 2024-04-30 12:27:27 +02:00
belliash e86313603a Correct path to cmake file 2024-04-30 12:19:38 +02:00