reactos/ntoskrnl/ke/amd64/ipi.c
2023-12-18 23:16:39 +02:00

50 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;
}