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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
dfae0b4727
Implement ArSetGdtEntryBase() routine
ci/woodpecker/push/build Pipeline was successful
2023-03-02 22:51:57 +01:00
e81fb68357
Initial support processor idle functionality
ci/woodpecker/push/build Pipeline was successful
2023-03-02 16:25:41 +01:00
57dee5c535
Reorder parameters in KeInitializeThread()
ci/woodpecker/push/build Pipeline was successful
2023-02-24 22:29:38 +01:00
9c74aafe3d
Initial implementation of process initialization
ci/woodpecker/push/build Pipeline was successful
2023-02-24 19:52:20 +01:00
c4d1f1cd0d
Initial implementation of the thread initialization
ci/woodpecker/push/build Pipeline was successful
2023-02-23 20:11:21 +01:00
cbca1e21c6
Add missing forward reference to KeInitializeThread()
ci/woodpecker/push/build Pipeline was successful
2023-02-21 22:49:13 +01:00
b43afac326
Cleanup definitions in kernel headers
ci/woodpecker/push/build Pipeline was successful
2023-02-11 22:26:13 +01:00
c4a52938d2
Implement KeGetCurrentThread() routine
ci/woodpecker/push/build Pipeline was successful
2023-02-08 23:58:24 +01:00
9132c47cd9
Initial process and thread related structures
ci/woodpecker/push/build Pipeline failed
2023-02-08 23:40:58 +01:00
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
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
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
0b743a5f26
Add stub routine for identifying processor
ci/woodpecker/push/build Pipeline was successful
2023-02-05 00:42:30 +01:00
55cdae7c83
Initialize AMD64 processor registers
ci/woodpecker/push/build Pipeline was successful
2023-02-04 23:40:03 +01:00
f181215341
Initialize segment registers
ci/woodpecker/push/build Pipeline was successful
2023-02-04 00:17:07 +01:00
a49d0804ce
Add trap handlers for both i686 and amd64
ci/woodpecker/push/build Pipeline was successful
2023-02-02 23:31:32 +01:00
3522539d4b
Initialize Interrupt Descriptor Table (IDT)
ci/woodpecker/push/build Pipeline was successful
2023-02-01 21:56:17 +01:00
1ef205d47b
Initialize DoubleFault and NonMaskableInterrupt TSS entries
ci/woodpecker/push/build Pipeline was successful
2023-02-01 20:36:40 +01:00
e2813bcdaa
Fix entries in Global Descriptor Table (GDT)
ci/woodpecker/push/build Pipeline was successful
2023-02-01 20:24:55 +01:00
6f068513cd
Initial processor block initialization
ci/woodpecker/push/build Pipeline was successful
2023-01-30 19:07:05 +01:00
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
7bf4a9ab8d
Initialize boot CPU structures inside kernel on AMD64
ci/woodpecker/push/build Pipeline was successful
2023-01-29 00:45:17 +01:00
9cd9a1eafa
Correct typos
ci/woodpecker/push/build Pipeline was successful
2023-01-29 00:25:25 +01:00
b57e79aa7f
Proceed with architecture specific initialization
ci/woodpecker/push/build Pipeline was successful
2023-01-25 19:37:13 +01:00