mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
50 lines
1.1 KiB
C
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;
|
|
}
|