From b0074637f8b21ac72c1a85c552fc46881c2b6ecd Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Fri, 12 Jun 2026 14:21:27 +0200 Subject: [PATCH] Remove hardcoded shift in SIPI vector calculation --- sdk/xtdk/amd64/hltypes.h | 3 +++ sdk/xtdk/i686/hltypes.h | 3 +++ xtoskrnl/hl/x86/cpu.cc | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/sdk/xtdk/amd64/hltypes.h b/sdk/xtdk/amd64/hltypes.h index 68cdfa2..3446d7a 100644 --- a/sdk/xtdk/amd64/hltypes.h +++ b/sdk/xtdk/amd64/hltypes.h @@ -39,6 +39,9 @@ #define APIC_VECTOR_PERF 0xFE #define APIC_VECTOR_NMI 0xFF +/* APIC SIPI vector shift */ +#define APIC_VECTOR_SIPI_SHIFT 12 + /* APIC destination formats */ #define APIC_DF_FLAT 0xFFFFFFFF #define APIC_DF_CLUSTER 0x0FFFFFFF diff --git a/sdk/xtdk/i686/hltypes.h b/sdk/xtdk/i686/hltypes.h index 898ed95..1b61693 100644 --- a/sdk/xtdk/i686/hltypes.h +++ b/sdk/xtdk/i686/hltypes.h @@ -45,6 +45,9 @@ #define APIC_VECTOR_PERF 0xFE #define APIC_VECTOR_NMI 0xFF +/* APIC SIPI vector shift */ +#define APIC_VECTOR_SIPI_SHIFT 12 + /* APIC destination formats */ #define APIC_DF_FLAT 0xFFFFFFFF #define APIC_DF_CLUSTER 0x0FFFFFFF diff --git a/xtoskrnl/hl/x86/cpu.cc b/xtoskrnl/hl/x86/cpu.cc index f833a05..fca616c 100644 --- a/xtoskrnl/hl/x86/cpu.cc +++ b/xtoskrnl/hl/x86/cpu.cc @@ -163,7 +163,7 @@ HL::Cpu::StartAllProcessors(VOID) StartBlock = (PPROCESSOR_START_BLOCK)((PUCHAR)ApVirtualAddress + TrampolineCodeSize); /* Get SIPI vector */ - SipiVector = (ULONG)(ApPhysicalAddress.QuadPart >> 12); + SipiVector = (ULONG)(ApPhysicalAddress.QuadPart >> APIC_VECTOR_SIPI_SHIFT); /* Loop over all CPUs */ CpuNumber = 0;