From f1476912f377dd28b6f5008dbdfd8104381f8b5b Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Wed, 8 Apr 2026 07:21:40 +0200 Subject: [PATCH] Add definitions for PIT ports and APIC timer divisor configuration --- sdk/xtdk/amd64/hltypes.h | 17 +++++++++++++++++ sdk/xtdk/amd64/xtstruct.h | 1 + sdk/xtdk/i686/hltypes.h | 17 +++++++++++++++++ sdk/xtdk/i686/xtstruct.h | 1 + xtoskrnl/hl/data.cc | 6 ++++++ 5 files changed, 42 insertions(+) diff --git a/sdk/xtdk/amd64/hltypes.h b/sdk/xtdk/amd64/hltypes.h index c315a91..7faaa5d 100644 --- a/sdk/xtdk/amd64/hltypes.h +++ b/sdk/xtdk/amd64/hltypes.h @@ -62,6 +62,10 @@ /* PIC vector definitions */ #define PIC1_VECTOR_SPURIOUS 0x37 +/* PIT ports definitions */ +#define PIT_COMMAND_PORT 0x43 +#define PIT_DATA_PORT0 0x40 + /* Serial ports information */ #define COMPORT_ADDRESS {0x3F8, 0x2F8, 0x3E8, 0x2E8, 0x5F8, 0x4F8, 0x5E8, 0x4E8} #define COMPORT_COUNT 8 @@ -139,6 +143,19 @@ typedef enum _APIC_REGISTER APIC_EXT3LVTR = 0x53 /* Extended Interrupt 3 Local Vector Table */ } APIC_REGISTER, *PAPIC_REGISTER; +/* APIC Timer Divide enumeration list */ +typedef enum _APIC_TIMER_DIVISOR +{ + TIMER_DivideBy2 = 0, + TIMER_DivideBy4 = 1, + TIMER_DivideBy8 = 2, + TIMER_DivideBy16 = 3, + TIMER_DivideBy32 = 8, + TIMER_DivideBy64 = 9, + TIMER_DivideBy128 = 10, + TIMER_DivideBy1 = 11, +} APIC_TIMER_DIVISOR, *PAPIC_TIMER_DIVISOR; + /* I8259 PIC interrupt mode enumeration list */ typedef enum _PIC_I8259_ICW1_INTERRUPT_MODE { diff --git a/sdk/xtdk/amd64/xtstruct.h b/sdk/xtdk/amd64/xtstruct.h index 979e5ce..2f80f93 100644 --- a/sdk/xtdk/amd64/xtstruct.h +++ b/sdk/xtdk/amd64/xtstruct.h @@ -20,6 +20,7 @@ typedef enum _APIC_DM APIC_DM, *PAPIC_DM; typedef enum _APIC_DSH APIC_DSH, *PAPIC_DSH; typedef enum _APIC_MODE APIC_MODE, *PAPIC_MODE; typedef enum _APIC_REGISTER APIC_REGISTER, *PAPIC_REGISTER; +typedef enum _APIC_TIMER_DIVISOR APIC_TIMER_DIVISOR, *PAPIC_TIMER_DIVISOR; typedef enum _CPU_VENDOR CPU_VENDOR, *PCPU_VENDOR; typedef enum _CPUID_FEATURES_EXTENDED CPUID_FEATURES_EXTENDED, *PCPUID_FEATURES_EXTENDED; typedef enum _CPUID_FEATURES_STANDARD1 CPUID_FEATURES_STANDARD1, *PCPUID_FEATURES_STANDARD1; diff --git a/sdk/xtdk/i686/hltypes.h b/sdk/xtdk/i686/hltypes.h index 65b11e8..ae5b151 100644 --- a/sdk/xtdk/i686/hltypes.h +++ b/sdk/xtdk/i686/hltypes.h @@ -69,6 +69,10 @@ /* PIC vector definitions */ #define PIC1_VECTOR_SPURIOUS 0x37 +/* PIT ports definitions */ +#define PIT_COMMAND_PORT 0x43 +#define PIT_DATA_PORT0 0x40 + /* Serial ports information */ #define COMPORT_ADDRESS {0x3F8, 0x2F8, 0x3E8, 0x2E8, 0x5F8, 0x4F8, 0x5E8, 0x4E8} #define COMPORT_COUNT 8 @@ -146,6 +150,19 @@ typedef enum _APIC_REGISTER APIC_EXT3LVTR = 0x53 /* Extended Interrupt 3 Local Vector Table */ } APIC_REGISTER, *PAPIC_REGISTER; +/* APIC Timer Divide enumeration list */ +typedef enum _APIC_TIMER_DIVISOR +{ + TIMER_DivideBy2 = 0, + TIMER_DivideBy4 = 1, + TIMER_DivideBy8 = 2, + TIMER_DivideBy16 = 3, + TIMER_DivideBy32 = 8, + TIMER_DivideBy64 = 9, + TIMER_DivideBy128 = 10, + TIMER_DivideBy1 = 11, +} APIC_TIMER_DIVISOR, *PAPIC_TIMER_DIVISOR; + /* I8259 PIC interrupt mode enumeration list */ typedef enum _PIC_I8259_ICW1_INTERRUPT_MODE { diff --git a/sdk/xtdk/i686/xtstruct.h b/sdk/xtdk/i686/xtstruct.h index 6da384c..0c71625 100644 --- a/sdk/xtdk/i686/xtstruct.h +++ b/sdk/xtdk/i686/xtstruct.h @@ -20,6 +20,7 @@ typedef enum _APIC_DM APIC_DM, *PAPIC_DM; typedef enum _APIC_DSH APIC_DSH, *PAPIC_DSH; typedef enum _APIC_MODE APIC_MODE, *PAPIC_MODE; typedef enum _APIC_REGISTER APIC_REGISTER, *PAPIC_REGISTER; +typedef enum _APIC_TIMER_DIVISOR APIC_TIMER_DIVISOR, *PAPIC_TIMER_DIVISOR; typedef enum _CPU_VENDOR CPU_VENDOR, *PCPU_VENDOR; typedef enum _CPUID_FEATURES_EXTENDED CPUID_FEATURES_EXTENDED, *PCPUID_FEATURES_EXTENDED; typedef enum _CPUID_FEATURES_STANDARD1 CPUID_FEATURES_STANDARD1, *PCPUID_FEATURES_STANDARD1; diff --git a/xtoskrnl/hl/data.cc b/xtoskrnl/hl/data.cc index 2ebed5e..574f8c3 100644 --- a/xtoskrnl/hl/data.cc +++ b/xtoskrnl/hl/data.cc @@ -32,3 +32,9 @@ HL_SCROLL_REGION_DATA HL::FrameBuffer::ScrollRegionData; /* APIC mode */ APIC_MODE HL::Pic::ApicMode; + +/* Kernel profiling interval */ +ULONG HL::Timer::ProfilingInterval; + +/* APIC timer frequency */ +ULONG HL::Timer::TimerFrequency;