forked from reactos/reactos
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[NTOS:KE][HALX86] Implement AP startup code
Co-authored-by: Justin Miller <[email protected]>
- Loading branch information
1 parent
64c5a7e
commit 220957d
Showing
21 changed files
with
795 additions
and
54 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,18 +1,22 @@ | ||
/* | ||
* PROJECT: ReactOS HAL | ||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) | ||
* FILE: hal/halx86/apic/apicsmp.c | ||
* PURPOSE: SMP specific APIC code | ||
* PROGRAMMERS: Copyright 2021 Timo Kreuzer ([email protected]) | ||
* COPYRIGHT: Copyright 2021 Timo Kreuzer <[email protected]> | ||
* Copyright 2021 Justin Miller <[email protected]> | ||
*/ | ||
|
||
/* INCLUDES *******************************************************************/ | ||
|
||
#include <hal.h> | ||
#include "apicp.h" | ||
#include <smp.h> | ||
#define NDEBUG | ||
#include <debug.h> | ||
|
||
|
||
extern PPROCESSOR_IDENTITY HalpProcessorIdentity; | ||
|
||
/* INTERNAL FUNCTIONS *********************************************************/ | ||
|
||
/*! | ||
|
@@ -84,7 +88,6 @@ ApicRequestGlobalInterrupt( | |
|
||
/* SMP SUPPORT FUNCTIONS ******************************************************/ | ||
|
||
// Should be called by SMP version of HalRequestIpi | ||
VOID | ||
NTAPI | ||
HalpRequestIpi(KAFFINITY TargetProcessors) | ||
|
@@ -93,4 +96,17 @@ HalpRequestIpi(KAFFINITY TargetProcessors) | |
__debugbreak(); | ||
} | ||
|
||
// APIC specific SMP code here | ||
VOID | ||
ApicStartApplicationProcessor(ULONG NTProcessorNumber, PHYSICAL_ADDRESS StartupLoc) | ||
{ | ||
/* Init IPI */ | ||
ApicRequestGlobalInterrupt(HalpProcessorIdentity[NTProcessorNumber].LapicId, 0, | ||
APIC_MT_INIT, APIC_TGM_Edge, APIC_DSH_Destination); | ||
|
||
/* Stall execution for a bit to give APIC time */ | ||
KeStallExecutionProcessor(1000); | ||
|
||
/* Startup IPI */ | ||
ApicRequestGlobalInterrupt(NTProcessorNumber, (StartupLoc.LowPart) >> 12, | ||
APIC_MT_Startup, APIC_TGM_Edge, APIC_DSH_Destination); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
/* | ||
* PROJECT: ReactOS Kernel | ||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) | ||
* PURPOSE: Core source file for UP alternative functions | ||
* COPYRIGHT: Copyright 2021 Justin Miller <[email protected]> | ||
*/ | ||
|
||
/* INCLUDES ******************************************************************/ | ||
|
||
#include <hal.h> | ||
#define NDEBUG | ||
#include <debug.h> | ||
|
||
/* FUNCTIONS *****************************************************************/ | ||
|
||
VOID | ||
NTAPI | ||
HalRequestIpi(KAFFINITY TargetProcessors) | ||
{ | ||
/* This should never be called in UP mode */ | ||
__debugbreak(); | ||
} | ||
|
||
BOOLEAN | ||
NTAPI | ||
HalStartNextProcessor( | ||
IN PLOADER_PARAMETER_BLOCK LoaderBlock, | ||
IN PKPROCESSOR_STATE ProcessorState) | ||
{ | ||
/* Always return false on UP systems */ | ||
return FALSE; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
/* | ||
* PROJECT: ReactOS Kernel | ||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) | ||
* PURPOSE: Assembly file for real mode AP code | ||
* COPYRIGHT: Copyright 2021 Justin Miller <[email protected]> | ||
*/ | ||
|
||
#include <asm.inc> | ||
|
||
PUBLIC APEntry16 | ||
PUBLIC APEntry16End | ||
PUBLIC APEntry32 | ||
PUBLIC APEntryJump32Offset | ||
PUBLIC APEntryJump32Segment | ||
PUBLIC TempPageTableAddr | ||
PUBLIC APEntryCpuState | ||
|
||
.code | ||
APEntry16: | ||
cli | ||
|
||
xor ax, ax | ||
mov ds, ax | ||
mov ss, ax | ||
mov fs, ax | ||
mov gs, ax | ||
|
||
hlt | ||
|
||
APEntry16End: | ||
.long HEX(0) | ||
APEntry32: | ||
.long HEX(0) | ||
APEntryJump32Offset: | ||
.long HEX(0) | ||
APEntryJump32Segment: | ||
.long HEX(0) | ||
TempPageTableAddr: | ||
.long HEX(0) | ||
APEntryCpuState: | ||
.long HEX(0) | ||
|
||
END |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
/* | ||
* PROJECT: ReactOS Kernel | ||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) | ||
* PURPOSE: and64 AP spinup setup | ||
* COPYRIGHT: Copyright 2023 Justin Miller <[email protected]> | ||
*/ | ||
|
||
/* INCLUDES ******************************************************************/ | ||
|
||
#include <hal.h> | ||
#include <smp.h> | ||
#define NDEBUG | ||
#include <debug.h> | ||
|
||
BOOLEAN | ||
NTAPI | ||
HalStartNextProcessor( | ||
_In_ PLOADER_PARAMETER_BLOCK LoaderBlock, | ||
_In_ PKPROCESSOR_STATE ProcessorState) | ||
{ | ||
//TODO: | ||
return FALSE; | ||
} |
Oops, something went wrong.