mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 01:55:19 +00:00
51 lines
1.1 KiB
C
51 lines
1.1 KiB
C
|
/*
|
||
|
* PROJECT: ReactOS Kernel
|
||
|
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||
|
* PURPOSE: IPI code for x64
|
||
|
* COPYRIGHT: Copyright 2023 Timo Kreuzer <timo.kreuzer@reactos.org>
|
||
|
*/
|
||
|
|
||
|
/* INCLUDES *******************************************************************/
|
||
|
|
||
|
#include <ntoskrnl.h>
|
||
|
#define NDEBUG
|
||
|
#include <debug.h>
|
||
|
|
||
|
/* FUNCTIONS *****************************************************************/
|
||
|
|
||
|
VOID
|
||
|
FASTCALL
|
||
|
KiIpiSend(
|
||
|
_In_ KAFFINITY TargetSet,
|
||
|
_In_ ULONG IpiRequest)
|
||
|
{
|
||
|
/* Check if we can send the IPI directly */
|
||
|
if (IpiRequest == IPI_APC)
|
||
|
{
|
||
|
HalSendSoftwareInterrupt(TargetSet, APC_LEVEL);
|
||
|
}
|
||
|
else if (IpiRequest == IPI_DPC)
|
||
|
{
|
||
|
HalSendSoftwareInterrupt(TargetSet, DISPATCH_LEVEL);
|
||
|
}
|
||
|
else if (IpiRequest == IPI_FREEZE)
|
||
|
{
|
||
|
/* On x64 the freeze IPI is an NMI */
|
||
|
HalSendNMI(TargetSet);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
ASSERT(FALSE);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ULONG_PTR
|
||
|
NTAPI
|
||
|
KeIpiGenericCall(
|
||
|
_In_ PKIPI_BROADCAST_WORKER Function,
|
||
|
_In_ ULONG_PTR Argument)
|
||
|
{
|
||
|
__debugbreak();
|
||
|
return 0;
|
||
|
}
|