mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 17:34:57 +00:00
[NTOSKRNL/AMD64]
- Implement KiApcInterrupt, KiDpcInterrupt and KiIpiInterrupt stubs - Improve and cleanup stubs.c svn path=/trunk/; revision=53724
This commit is contained in:
parent
6c8a335788
commit
826d8dedae
2 changed files with 91 additions and 26 deletions
|
@ -12,6 +12,14 @@
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KiDispatchInterrupt(VOID)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
__debugbreak();
|
||||||
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
FASTCALL
|
FASTCALL
|
||||||
KeZeroPages(IN PVOID Address,
|
KeZeroPages(IN PVOID Address,
|
||||||
|
@ -28,6 +36,7 @@ KiServiceExit(IN PKTRAP_FRAME TrapFrame,
|
||||||
IN NTSTATUS Status)
|
IN NTSTATUS Status)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
__debugbreak();
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -36,6 +45,7 @@ DECLSPEC_NORETURN
|
||||||
KiServiceExit2(IN PKTRAP_FRAME TrapFrame)
|
KiServiceExit2(IN PKTRAP_FRAME TrapFrame)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
__debugbreak();
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
@ -43,6 +53,7 @@ NTAPI
|
||||||
KeConnectInterrupt(IN PKINTERRUPT Interrupt)
|
KeConnectInterrupt(IN PKINTERRUPT Interrupt)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
__debugbreak();
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,6 +73,7 @@ KeSynchronizeExecution(
|
||||||
IN PVOID SynchronizeContext)
|
IN PVOID SynchronizeContext)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
__debugbreak();
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,6 +86,7 @@ KeUserModeCallback(IN ULONG RoutineIndex,
|
||||||
OUT PULONG ResultLength)
|
OUT PULONG ResultLength)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
__debugbreak();
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,6 +107,7 @@ KiInitializeUserApc(IN PKEXCEPTION_FRAME ExceptionFrame,
|
||||||
IN PVOID SystemArgument2)
|
IN PVOID SystemArgument2)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
__debugbreak();
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -102,6 +116,7 @@ KiSwapProcess(IN PKPROCESS NewProcess,
|
||||||
IN PKPROCESS OldProcess)
|
IN PKPROCESS OldProcess)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
__debugbreak();
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -110,6 +125,7 @@ KiSystemService(IN PKTHREAD Thread,
|
||||||
IN ULONG Instruction)
|
IN ULONG Instruction)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
__debugbreak();
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSYSAPI
|
NTSYSAPI
|
||||||
|
@ -119,6 +135,7 @@ NtCallbackReturn
|
||||||
( IN PVOID Result OPTIONAL, IN ULONG ResultLength, IN NTSTATUS Status )
|
( IN PVOID Result OPTIONAL, IN ULONG ResultLength, IN NTSTATUS Status )
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
__debugbreak();
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,6 +154,7 @@ NtVdmControl(IN ULONG ControlCode,
|
||||||
IN PVOID ControlData)
|
IN PVOID ControlData)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
__debugbreak();
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,6 +165,7 @@ KiCallUserMode(
|
||||||
IN PULONG OutputLength)
|
IN PULONG OutputLength)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
|
__debugbreak();
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,29 +179,6 @@ ExQueryDepthSList(IN PSLIST_HEADER ListHead)
|
||||||
|
|
||||||
|
|
||||||
ULONG ProcessCount;
|
ULONG ProcessCount;
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
void
|
|
||||||
__GSHandlerCheck()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
int __security_cookie;
|
|
||||||
|
|
||||||
void
|
|
||||||
__security_check_cookie()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOLEAN CcPfEnablePrefetcher;
|
BOOLEAN CcPfEnablePrefetcher;
|
||||||
|
|
||||||
unsigned long __readfsdword(const unsigned long Offset)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void main()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -19,6 +19,8 @@ EXTERN KiSystemFatalException:PROC
|
||||||
EXTERN KiNpxNotAvailableFaultHandler:PROC
|
EXTERN KiNpxNotAvailableFaultHandler:PROC
|
||||||
EXTERN KiGeneralProtectionFaultHandler:PROC
|
EXTERN KiGeneralProtectionFaultHandler:PROC
|
||||||
EXTERN KiXmmExceptionHandler:PROC
|
EXTERN KiXmmExceptionHandler:PROC
|
||||||
|
EXTERN KiDeliverApc:PROC
|
||||||
|
EXTERN KiDispatchInterrupt:PROC
|
||||||
|
|
||||||
/* GLOBALS *******************************************************************/
|
/* GLOBALS *******************************************************************/
|
||||||
|
|
||||||
|
@ -524,9 +526,76 @@ PUBLIC KiDebugServiceTrap
|
||||||
ExitTrap TF_SAVE_ALL
|
ExitTrap TF_SAVE_ALL
|
||||||
.ENDP KiDebugServiceTrap
|
.ENDP KiDebugServiceTrap
|
||||||
|
|
||||||
TRAP_ENTRY KiApcInterrupt, (TF_HAS_ERROR_CODE OR TF_SAVE_ALL)
|
|
||||||
TRAP_ENTRY KiDpcInterrupt, (TF_HAS_ERROR_CODE OR TF_SAVE_ALL)
|
PUBLIC KiApcInterrupt
|
||||||
TRAP_ENTRY KiIpiInterrupt, (TF_HAS_ERROR_CODE OR TF_SAVE_ALL)
|
.PROC KiApcInterrupt
|
||||||
|
/* No error code */
|
||||||
|
EnterTrap (TF_VOLATILES or TF_IRQL)
|
||||||
|
|
||||||
|
/* Raise to APC_LEVEL */
|
||||||
|
mov rax, APC_LEVEL
|
||||||
|
mov cr8, rax
|
||||||
|
|
||||||
|
/* End the interrupt */
|
||||||
|
mov dword ptr [APIC_EOI], 0
|
||||||
|
|
||||||
|
/* Enable interrupts */
|
||||||
|
sti
|
||||||
|
|
||||||
|
/* Call the worker routine */
|
||||||
|
mov cl, [rbp + KTRAP_FRAME_SegCs] // ProcessorMode
|
||||||
|
and cl, 1
|
||||||
|
mov rdx, 0 // ExceptionFrame
|
||||||
|
mov r8, rdx // TrapFrame
|
||||||
|
call KiDeliverApc
|
||||||
|
|
||||||
|
/* Disable interrupts */
|
||||||
|
cli
|
||||||
|
|
||||||
|
/* Return */
|
||||||
|
ExitTrap (TF_VOLATILES or TF_IRQL)
|
||||||
|
.ENDP KiApcInterrupt
|
||||||
|
|
||||||
|
|
||||||
|
PUBLIC KiDpcInterrupt
|
||||||
|
.PROC KiDpcInterrupt
|
||||||
|
/* No error code */
|
||||||
|
EnterTrap (TF_VOLATILES or TF_IRQL)
|
||||||
|
|
||||||
|
/* Raise to DISPATCH_LEVEL */
|
||||||
|
mov rax, DISPATCH_LEVEL
|
||||||
|
mov cr8, rax
|
||||||
|
|
||||||
|
/* End the interrupt */
|
||||||
|
mov dword ptr [APIC_EOI], 0
|
||||||
|
|
||||||
|
/* Call the worker routine */
|
||||||
|
sti
|
||||||
|
call KiDispatchInterrupt
|
||||||
|
cli
|
||||||
|
|
||||||
|
/* Return */
|
||||||
|
ExitTrap (TF_VOLATILES or TF_IRQL)
|
||||||
|
.ENDP KiDpcInterrupt
|
||||||
|
|
||||||
|
|
||||||
|
PUBLIC KiIpiInterrupt
|
||||||
|
.PROC KiIpiInterrupt
|
||||||
|
/* No error code */
|
||||||
|
EnterTrap (TF_VOLATILES or TF_IRQL)
|
||||||
|
|
||||||
|
/* Raise to IPI_LEVEL */
|
||||||
|
mov rax, IPI_LEVEL
|
||||||
|
mov cr8, rax
|
||||||
|
|
||||||
|
/* End the interrupt */
|
||||||
|
mov dword ptr [APIC_EOI], 0
|
||||||
|
|
||||||
|
int 3
|
||||||
|
|
||||||
|
/* Return */
|
||||||
|
ExitTrap (TF_VOLATILES or TF_IRQL)
|
||||||
|
.ENDP KiIpiInterrupt
|
||||||
|
|
||||||
|
|
||||||
PUBLIC KiUnexpectedInterrupt
|
PUBLIC KiUnexpectedInterrupt
|
||||||
|
|
Loading…
Reference in a new issue