1 /* 2 * PROJECT: ReactOS Kernel 3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) 4 * PURPOSE: Header File for SMP support 5 * COPYRIGHT: Copyright 2021 Justin Miller <justinmiller100@gmail.com> 6 */ 7 8 #pragma once 9 10 /* This table is filled for each physical processor on system */ 11 typedef struct _PROCESSOR_IDENTITY 12 { 13 UCHAR ProcessorId; 14 UCHAR LapicId; 15 BOOLEAN ProcessorStarted; 16 BOOLEAN BSPCheck; 17 PKPRCB ProcessorPrcb; 18 19 } PROCESSOR_IDENTITY, *PPROCESSOR_IDENTITY; 20 21 /* This table is counter of the overall APIC constants acquired from madt */ 22 typedef struct _HALP_APIC_INFO_TABLE 23 { 24 ULONG ApicMode; 25 ULONG ProcessorCount; /* Count of all physical cores, This includes BSP */ 26 ULONG IOAPICCount; 27 ULONG LocalApicPA; // The 32-bit physical address at which each processor can access its local interrupt controller 28 ULONG IoApicVA[256]; 29 ULONG IoApicPA[256]; 30 ULONG IoApicIrqBase[256]; // Global system interrupt base 31 32 } HALP_APIC_INFO_TABLE, *PHALP_APIC_INFO_TABLE; 33 34 VOID 35 HalpParseApicTables( 36 _In_ PLOADER_PARAMETER_BLOCK LoaderBlock); 37 38 VOID 39 HalpSetupProcessorsTable( 40 _In_ UINT32 NTProcessorNumber); 41 42 VOID 43 HalpPrintApicTables(VOID); 44