mirror of
https://github.com/reactos/reactos.git
synced 2024-10-04 08:25:53 +00:00
516ccad340
Co-authored-by: Victor Perevertkin <victor.perevertkin@reactos.org> Introduce the initial changes needed to get other processors up and into kernel mode. This only supports x86 as of now but is the first real step towards using other system processors.
56 lines
1.4 KiB
C
56 lines
1.4 KiB
C
/*
|
|
* PROJECT: ReactOS Kernel
|
|
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
|
* PURPOSE: Header File for SMP support
|
|
* COPYRIGHT: Copyright 2021 Justin Miller <justinmiller100@gmail.com>
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
/* This table is filled for each physical processor on system */
|
|
typedef struct _PROCESSOR_IDENTITY
|
|
{
|
|
UCHAR ProcessorId;
|
|
UCHAR LapicId;
|
|
BOOLEAN ProcessorStarted;
|
|
BOOLEAN BSPCheck;
|
|
PKPRCB ProcessorPrcb;
|
|
|
|
} PROCESSOR_IDENTITY, *PPROCESSOR_IDENTITY;
|
|
|
|
/* This table is counter of the overall APIC constants acquired from madt */
|
|
typedef struct _HALP_APIC_INFO_TABLE
|
|
{
|
|
ULONG ApicMode;
|
|
ULONG ProcessorCount; /* Count of all physical cores, This includes BSP */
|
|
ULONG IOAPICCount;
|
|
ULONG LocalApicPA; // The 32-bit physical address at which each processor can access its local interrupt controller
|
|
ULONG IoApicVA[256];
|
|
ULONG IoApicPA[256];
|
|
ULONG IoApicIrqBase[256]; // Global system interrupt base
|
|
|
|
} HALP_APIC_INFO_TABLE, *PHALP_APIC_INFO_TABLE;
|
|
|
|
VOID
|
|
HalpParseApicTables(
|
|
_In_ PLOADER_PARAMETER_BLOCK LoaderBlock);
|
|
|
|
VOID
|
|
HalpSetupProcessorsTable(
|
|
_In_ UINT32 NTProcessorNumber);
|
|
|
|
VOID
|
|
HalpPrintApicTables(VOID);
|
|
|
|
/* APIC specific functions inside apic/apicsmp.c */
|
|
|
|
VOID
|
|
ApicStartApplicationProcessor(
|
|
_In_ ULONG NTProcessorNumber,
|
|
_In_ PHYSICAL_ADDRESS StartupLoc);
|
|
|
|
VOID
|
|
NTAPI
|
|
HalpRequestIpi(
|
|
_In_ KAFFINITY TargetProcessors);
|