Commit Graph
58 Commits
Author SHA1 Message Date
perikiyoxd 73c768ba0e Merge branch 'master' into prcb-cpu-features 2023-11-26 18:53:01 +01:00
belliash bed49fa0ac Fix function prototypes using fastcall and stdcall calling convensions
Builds / ExectOS (amd64) (push) Successful in 28s
Builds / ExectOS (i686) (push) Failing after 16s
2023-11-25 23:25:44 +01:00
belliash e245754d95 Add running level management support
Builds / ExectOS (amd64) (push) Successful in 29s
Builds / ExectOS (i686) (push) Failing after 14s
2023-11-25 23:14:15 +01:00
perikiyoxd a270c08dcf feat: Add CPU vendor and features identification
Add functionality to identify the CPU vendor and features using the CPUID instruction.
The CPU vendor information is stored in the Processor Control Block (PRCB),
including the vendor name and a corresponding enumeration.
CPU features are also retrieved and stored in the PRCB.
Previously, the CPU vendor was not properly stored in the PRCB, caused by a missing type cast.
Using Rtl functions to copy the CPU vendor name to the PRCB.

Details:
- Introduced functions `ArpSetCpuVendor` and `ArpSetCpuFeatures` to set CPU vendor and features, respectively.
- Modified `ArpIdentifyProcessor` to call the new functions for vendor and features identification.
- Added `CPU_FEATURES` structure to `KPROCESSOR_CONTROL_BLOCK` structure to store CPU features.

Tests:
- Tested x86_64 on QEMU. Verified that the CPU vendor and features are correctly identified and stored in the PRCB.
2023-11-23 23:26:39 +01:00
belliash 1cb21a81dd Rename HlInitializeDisplay() to HlInitializeFrameBuffer()
Builds / ExectOS (amd64) (push) Successful in 30s
Builds / ExectOS (i686) (push) Successful in 27s
2023-11-22 20:36:05 +01:00
belliash f28c870192 Implement KeHaltSystem() routine
Builds / ExectOS (amd64) (push) Successful in 30s
Builds / ExectOS (i686) (push) Successful in 44s
2023-11-22 19:24:14 +01:00
belliash 1eecad21db Implement HlReadApicRegister() and HlWriteApicRegister() routines for basic APIC support
Builds / ExectOS (amd64) (push) Successful in 30s
Builds / ExectOS (i686) (push) Successful in 28s
2023-11-20 15:26:03 +01:00
belliash 71d0608643 Implement ArGetStackPointer() routine
Builds / ExectOS (amd64) (push) Successful in 30s
Builds / ExectOS (i686) (push) Successful in 28s
2023-11-19 00:09:16 +01:00
belliash ec4a0fcb70 Add missing KepRetireDpcList() routine forward reference
Builds / ExectOS (amd64) (push) Successful in 31s
Builds / ExectOS (i686) (push) Successful in 30s
2023-11-15 23:19:20 +01:00
belliash d35dd4fce3 Save processor state during kernel initialization
Builds / ExectOS (amd64) (push) Successful in 29s
Builds / ExectOS (i686) (push) Failing after 16s
2023-11-15 15:00:38 +01:00
belliash ccd0514416 Implement more CPU-related routines
Builds / ExectOS (amd64) (push) Successful in 29s
Builds / ExectOS (i686) (push) Successful in 26s
2023-11-15 14:52:18 +01:00
belliash 1d9a79736a Allow to postpone thread startup
Builds / ExectOS (amd64) (push) Successful in 27s
Builds / ExectOS (i686) (push) Successful in 30s
2023-11-11 16:30:53 +01:00
belliash 63f8dbc59b Initialize CPU power structures, idle process and idle thread
Builds / ExectOS (i686) (push) Successful in 28s
Builds / ExectOS (amd64) (push) Successful in 29s
2023-11-02 23:07:11 +01:00
belliash 2621cb6d8a Turn atomic routines architecture independent
Builds / ExectOS (amd64) (push) Successful in 29s
Builds / ExectOS (i686) (push) Failing after 14s
2023-10-29 21:43:05 +01:00
belliash 783a4a2aa0 Finish PoInitializeProcessorControlBlock() routine implementation
Builds / ExectOS (amd64) (push) Successful in 27s
Builds / ExectOS (i686) (push) Failing after 17s
2023-10-29 20:14:10 +01:00
belliash a359c9b2e8 Keep only atomic routines
Builds / ExectOS (amd64) (push) Successful in 31s
Builds / ExectOS (i686) (push) Successful in 29s
2023-10-29 18:22:11 +01:00
belliash 3f2baa5b50 Rename RtlInterlockedDecrementLongPtr() to follow routines naming convention
Builds / ExectOS (amd64) (push) Successful in 27s
Builds / ExectOS (i686) (push) Successful in 27s
2023-10-29 12:21:19 +01:00
belliash cf7c467637 Implement RtlInterlockedExchangePointer() routine
Builds / ExectOS (amd64) (push) Successful in 32s
Builds / ExectOS (i686) (push) Successful in 27s
2023-10-29 11:48:31 +01:00
belliash 6d63750fc2 Rename KepArchInitialize() routine to KepInitializeMachine()
Builds / ExectOS (amd64) (push) Successful in 26s
Builds / ExectOS (i686) (push) Successful in 27s
2023-10-29 10:38:23 +01:00
belliash f05a262da2 Cleanup XTDK and XTOSKRNL headers
Builds / ExectOS (amd64) (push) Successful in 30s
Builds / ExectOS (i686) (push) Successful in 28s
2023-10-29 09:58:47 +01:00
belliash 841a6b304b Cleanup KE subsystem headers
Builds / ExectOS (amd64) (push) Successful in 30s
Builds / ExectOS (i686) (push) Successful in 29s
2023-10-29 09:14:46 +01:00
belliash 798e4c1d22 Cleanup MM subsystem headers
Builds / ExectOS (amd64) (push) Successful in 28s
Builds / ExectOS (i686) (push) Successful in 27s
2023-10-29 00:52:05 +02:00
belliash 600c86949b Cleanup RTL subsystem headers
Builds / ExectOS (amd64) (push) Failing after 15s
Builds / ExectOS (i686) (push) Failing after 15s
2023-10-29 00:14:01 +02:00
belliash 4ea54859f2 Add missing HL routine definitions
Builds / ExectOS (amd64) (push) Successful in 28s
Builds / ExectOS (i686) (push) Failing after 16s
2023-10-28 23:36:21 +02:00
belliash ad15c55a39 Cleanup AR subsystem headers
Builds / ExectOS (amd64) (push) Successful in 29s
Builds / ExectOS (i686) (push) Failing after 13s
2023-10-28 23:35:34 +02:00
belliash 598b34acf7 AR subsystem is architecture dependant, thus there should be no generic routines
Builds / ExectOS (amd64) (push) Successful in 35s
Builds / ExectOS (i686) (push) Successful in 28s
2023-10-28 23:08:08 +02:00
belliash d55946c3cf Cleanup HL subsystem headers
Builds / ExectOS (i686) (push) Successful in 26s
Builds / ExectOS (amd64) (push) Successful in 29s
2023-10-28 22:56:04 +02:00
belliash 3f520c8e0f Rename xtoskrnl headers
Builds / ExectOS (i686) (push) Successful in 30s
Builds / ExectOS (amd64) (push) Successful in 27s
2023-10-28 22:35:33 +02:00
belliash 6f5e7f63f3 Include xtver.h to access version related definitions
Builds / ExectOS (amd64) (push) Successful in 28s
Builds / ExectOS (i686) (push) Successful in 25s
2023-10-27 15:43:37 +02:00
belliash dfae0b4727 Implement ArSetGdtEntryBase() routine
ci/woodpecker/push/build Pipeline was successful
2023-03-02 22:51:57 +01:00
belliash e81fb68357 Initial support processor idle functionality
ci/woodpecker/push/build Pipeline was successful
2023-03-02 16:25:41 +01:00
belliash 57dee5c535 Reorder parameters in KeInitializeThread()
ci/woodpecker/push/build Pipeline was successful
2023-02-24 22:29:38 +01:00
belliash 9c74aafe3d Initial implementation of process initialization
ci/woodpecker/push/build Pipeline was successful
2023-02-24 19:52:20 +01:00
belliash c4d1f1cd0d Initial implementation of the thread initialization
ci/woodpecker/push/build Pipeline was successful
2023-02-23 20:11:21 +01:00
belliash cbca1e21c6 Add missing forward reference to KeInitializeThread()
ci/woodpecker/push/build Pipeline was successful
2023-02-21 22:49:13 +01:00
belliash b43afac326 Cleanup definitions in kernel headers
ci/woodpecker/push/build Pipeline was successful
2023-02-11 22:26:13 +01:00
belliash c4a52938d2 Implement KeGetCurrentThread() routine
ci/woodpecker/push/build Pipeline was successful
2023-02-08 23:58:24 +01:00
belliash 9132c47cd9 Initial process and thread related structures
ci/woodpecker/push/build Pipeline failed
2023-02-08 23:40:58 +01:00
belliash 929d3dfae7 Implement KeGetCurrentProcessorBlock() and KeGetCurrentProcessorControlBlock() routines for both amd64 and i686
ci/woodpecker/push/build Pipeline was successful
2023-02-08 16:39:05 +01:00
belliash 75c519a70c Use more generic name for this macro use pointer used behind it will point to kernel debugger after it gets initialized
ci/woodpecker/push/build Pipeline was successful
2023-02-07 19:37:44 +01:00
belliash d6aac59199 Let kernel initialize stack on it's own without relying on boot loader
ci/woodpecker/push/build Pipeline was successful
2023-02-05 09:55:59 +01:00
belliash 0b743a5f26 Add stub routine for identifying processor
ci/woodpecker/push/build Pipeline was successful
2023-02-05 00:42:30 +01:00
belliash 55cdae7c83 Initialize AMD64 processor registers
ci/woodpecker/push/build Pipeline was successful
2023-02-04 23:40:03 +01:00
belliash f181215341 Initialize segment registers
ci/woodpecker/push/build Pipeline was successful
2023-02-04 00:17:07 +01:00
belliash a49d0804ce Add trap handlers for both i686 and amd64
ci/woodpecker/push/build Pipeline was successful
2023-02-02 23:31:32 +01:00
belliash 3522539d4b Initialize Interrupt Descriptor Table (IDT)
ci/woodpecker/push/build Pipeline was successful
2023-02-01 21:56:17 +01:00
belliash 1ef205d47b Initialize DoubleFault and NonMaskableInterrupt TSS entries
ci/woodpecker/push/build Pipeline was successful
2023-02-01 20:36:40 +01:00
belliash e2813bcdaa Fix entries in Global Descriptor Table (GDT)
ci/woodpecker/push/build Pipeline was successful
2023-02-01 20:24:55 +01:00
belliash 6f068513cd Initial processor block initialization
ci/woodpecker/push/build Pipeline was successful
2023-01-30 19:07:05 +01:00
belliash 7ac434cb99 Move architecture specific globals to external header, as ex. there is no GDT on ARM
ci/woodpecker/push/build Pipeline was successful
2023-01-29 09:48:59 +01:00