From 3ad10b8b075318d4100491db8e86db9e27d08db1 Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Tue, 28 Apr 2026 10:48:16 +0200 Subject: [PATCH] Add definitions for High Precision Event Timer --- sdk/xtdk/amd64/hltypes.h | 40 +++++++++++++++++++++++++++++++++++++++ sdk/xtdk/amd64/xtstruct.h | 1 + sdk/xtdk/i686/hltypes.h | 40 +++++++++++++++++++++++++++++++++++++++ sdk/xtdk/i686/xtstruct.h | 1 + 4 files changed, 82 insertions(+) diff --git a/sdk/xtdk/amd64/hltypes.h b/sdk/xtdk/amd64/hltypes.h index 86d7922..a2549d0 100644 --- a/sdk/xtdk/amd64/hltypes.h +++ b/sdk/xtdk/amd64/hltypes.h @@ -84,6 +84,25 @@ /* PIC vector definitions */ #define PIC1_VECTOR_SPURIOUS 0x37 +/* HPET General Capabilities definitions */ +#define HPET_CAPABILITY_64BIT 0x2000 +#define HPET_CAPABILITY_LEGACY_REPLACEMENT 0x8000 + +/* HPET General Configuration definitions */ +#define HPET_CONFIG_ENABLE 0x0001 +#define HPET_CONFIG_LEGACY_REPLACEMENT 0x0002 + +/* HPET Timer Configuration definitions */ +#define HPET_TIMER_CONFIG_LEVEL_TRIGGERED 0x0002 +#define HPET_TIMER_CONFIG_ENABLED 0x0004 +#define HPET_TIMER_CONFIG_PERIODIC 0x0008 +#define HPET_TIMER_CONFIG_SUPPORTS_PERIODIC 0x0010 +#define HPET_TIMER_CONFIG_SUPPORTS_64BIT 0x0020 +#define HPET_TIMER_CONFIG_VALUE_ACCUMULATOR 0x0040 +#define HPET_TIMER_CONFIG_FORCE_32BIT 0x0100 +#define HPET_TIMER_CONFIG_FSB_ENABLED 0x4000 +#define HPET_TIMER_CONFIG_SUPPORTS_FSB 0x8000 + /* PIT ports definitions */ #define PIT_COMMAND_PORT 0x43 #define PIT_DATA_PORT0 0x40 @@ -438,6 +457,27 @@ typedef union _PIC_I8259_ICW4 UCHAR Bits; } PIC_I8259_ICW4, *PPIC_I8259_ICW4; +/* HPET Registers structure definition */ +typedef struct _HPET_REGISTERS +{ + VOLATILE ULONGLONG GeneralCapabilities; + VOLATILE ULONGLONG Reserved0; + VOLATILE ULONGLONG GeneralConfiguration; + VOLATILE ULONGLONG Reserved1; + VOLATILE ULONGLONG GeneralInterruptStatus; + VOLATILE ULONGLONG Reserved2; + VOLATILE ULONGLONG Reserved3[2][12]; + VOLATILE ULONGLONG MainCounterValue; + VOLATILE ULONGLONG Reserved4; + struct + { + VOLATILE ULONGLONG Configuration; + VOLATILE ULONGLONG Comparator; + VOLATILE ULONGLONG FsbInterruptRoute; + VOLATILE ULONGLONG Reserved; + } Timers[]; +} HPET_REGISTERS, *PHPET_REGISTERS; + typedef struct _TIMER_CAPABILITIES { BOOLEAN Arat; diff --git a/sdk/xtdk/amd64/xtstruct.h b/sdk/xtdk/amd64/xtstruct.h index 7ac770b..b6a620e 100644 --- a/sdk/xtdk/amd64/xtstruct.h +++ b/sdk/xtdk/amd64/xtstruct.h @@ -46,6 +46,7 @@ typedef struct _CPUID_REGISTERS CPUID_REGISTERS, *PCPUID_REGISTERS; typedef struct _CPUID_SIGNATURE CPUID_SIGNATURE, *PCPUID_SIGNATURE; typedef struct _FLOATING_SAVE_AREA FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA; typedef struct _HARDWARE_PTE HARDWARE_PTE, *PHARDWARE_PTE; +typedef struct _HPET_REGISTERS HPET_REGISTERS, *PHPET_REGISTERS; typedef struct _IOAPIC_DATA IOAPIC_DATA, *PIOAPIC_DATA; typedef struct _KDESCRIPTOR KDESCRIPTOR, *PKDESCRIPTOR; typedef struct _KEXCEPTION_FRAME KEXCEPTION_FRAME, *PKEXCEPTION_FRAME; diff --git a/sdk/xtdk/i686/hltypes.h b/sdk/xtdk/i686/hltypes.h index d084439..a2e8b00 100644 --- a/sdk/xtdk/i686/hltypes.h +++ b/sdk/xtdk/i686/hltypes.h @@ -92,6 +92,25 @@ /* PIC vector definitions */ #define PIC1_VECTOR_SPURIOUS 0x37 +/* HPET General Capabilities definitions */ +#define HPET_CAPABILITY_64BIT 0x2000 +#define HPET_CAPABILITY_LEGACY_REPLACEMENT 0x8000 + +/* HPET General Configuration definitions */ +#define HPET_CONFIG_ENABLE 0x0001 +#define HPET_CONFIG_LEGACY_REPLACEMENT 0x0002 + +/* HPET Timer Configuration definitions */ +#define HPET_TIMER_CONFIG_LEVEL_TRIGGERED 0x0002 +#define HPET_TIMER_CONFIG_ENABLED 0x0004 +#define HPET_TIMER_CONFIG_PERIODIC 0x0008 +#define HPET_TIMER_CONFIG_SUPPORTS_PERIODIC 0x0010 +#define HPET_TIMER_CONFIG_SUPPORTS_64BIT 0x0020 +#define HPET_TIMER_CONFIG_VALUE_ACCUMULATOR 0x0040 +#define HPET_TIMER_CONFIG_FORCE_32BIT 0x0100 +#define HPET_TIMER_CONFIG_FSB_ENABLED 0x4000 +#define HPET_TIMER_CONFIG_SUPPORTS_FSB 0x8000 + /* PIT ports definitions */ #define PIT_COMMAND_PORT 0x43 #define PIT_DATA_PORT0 0x40 @@ -446,6 +465,27 @@ typedef union _PIC_I8259_ICW4 UCHAR Bits; } PIC_I8259_ICW4, *PPIC_I8259_ICW4; +/* HPET Registers structure definition */ +typedef struct _HPET_REGISTERS +{ + VOLATILE ULONGLONG GeneralCapabilities; + VOLATILE ULONGLONG Reserved0; + VOLATILE ULONGLONG GeneralConfiguration; + VOLATILE ULONGLONG Reserved1; + VOLATILE ULONGLONG GeneralInterruptStatus; + VOLATILE ULONGLONG Reserved2; + VOLATILE ULONGLONG Reserved3[2][12]; + VOLATILE ULONGLONG MainCounterValue; + VOLATILE ULONGLONG Reserved4; + struct + { + VOLATILE ULONGLONG Configuration; + VOLATILE ULONGLONG Comparator; + VOLATILE ULONGLONG FsbInterruptRoute; + VOLATILE ULONGLONG Reserved; + } Timers[]; +} HPET_REGISTERS, *PHPET_REGISTERS; + /* Timer Capabilities */ typedef struct _TIMER_CAPABILITIES { diff --git a/sdk/xtdk/i686/xtstruct.h b/sdk/xtdk/i686/xtstruct.h index a265e9c..17f30c8 100644 --- a/sdk/xtdk/i686/xtstruct.h +++ b/sdk/xtdk/i686/xtstruct.h @@ -49,6 +49,7 @@ typedef struct _FX_SAVE_AREA FX_SAVE_AREA, *PFX_SAVE_AREA; typedef struct _FX_SAVE_FORMAT FX_SAVE_FORMAT, *PFX_SAVE_FORMAT; typedef struct _HARDWARE_LEGACY_PTE HARDWARE_LEGACY_PTE, *PHARDWARE_LEGACY_PTE; typedef struct _HARDWARE_MODERN_PTE HARDWARE_MODERN_PTE, *PHARDWARE_MODERN_PTE; +typedef struct _HPET_REGISTERS HPET_REGISTERS, *PHPET_REGISTERS; typedef struct _IOAPIC_DATA IOAPIC_DATA, *PIOAPIC_DATA; typedef struct _KDESCRIPTOR KDESCRIPTOR, *PKDESCRIPTOR; typedef struct _KEXCEPTION_FRAME KEXCEPTION_FRAME, *PKEXCEPTION_FRAME;