https://git.reactos.org/?p=reactos.git;a=commitdiff;h=3306a16e846359b5712e15d0c9446ea4a6971ff4
commit 3306a16e846359b5712e15d0c9446ea4a6971ff4 Author: Justin Miller <justin.mil...@reactos.org> AuthorDate: Sat Jan 20 06:26:59 2024 -0800 Commit: GitHub <nore...@github.com> CommitDate: Sat Jan 20 06:26:59 2024 -0800 [HALX86] Fix SYNCH_LEVEL differences between UP and SMP in HAL (#5874) First step to fixing the multiprocessor kernel when booting on a single core. --- hal/halx86/generic/buildtype.c | 8 +++++++- hal/halx86/include/halp.h | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/hal/halx86/generic/buildtype.c b/hal/halx86/generic/buildtype.c index 2aad63360f9..49d7df8f226 100644 --- a/hal/halx86/generic/buildtype.c +++ b/hal/halx86/generic/buildtype.c @@ -1,7 +1,7 @@ /* * PROJECT: ReactOS Hardware Abstraction Layer * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) -* PURPOSE: Defines HalpBuildType for either UP or SMP +* PURPOSE: Defines differences for either UP or SMP * COPYRIGHT: Copyright 2021 Timo Kreuzer <timo.kreu...@reactos.org> */ @@ -12,3 +12,9 @@ /* GLOBALS ******************************************************************/ const USHORT HalpBuildType = HAL_BUILD_TYPE; + +#ifdef CONFIG_SMP +KIRQL HalpIrqlSynchLevel = IPI_LEVEL - 2; +#else +KIRQL HalpIrqlSynchLevel = DISPATCH_LEVEL; +#endif diff --git a/hal/halx86/include/halp.h b/hal/halx86/include/halp.h index cc55c15b847..72e09fdb28f 100644 --- a/hal/halx86/include/halp.h +++ b/hal/halx86/include/halp.h @@ -10,6 +10,14 @@ #define HAL_BUILD_TYPE ((DBG ? PRCB_BUILD_DEBUG : 0) | PRCB_BUILD_UNIPROCESSOR) #endif +/* Don't include this in freeloader */ +#ifndef _BLDR_ +extern KIRQL HalpIrqlSynchLevel; + +#undef SYNCH_LEVEL +#define SYNCH_LEVEL HalpIrqlSynchLevel +#endif + typedef struct _HAL_BIOS_FRAME { ULONG SegSs;