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
|
||||
#include <debug.h>
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
KiDispatchInterrupt(VOID)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
__debugbreak();
|
||||
}
|
||||
|
||||
VOID
|
||||
FASTCALL
|
||||
KeZeroPages(IN PVOID Address,
|
||||
|
@ -28,6 +36,7 @@ KiServiceExit(IN PKTRAP_FRAME TrapFrame,
|
|||
IN NTSTATUS Status)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
__debugbreak();
|
||||
}
|
||||
|
||||
VOID
|
||||
|
@ -36,6 +45,7 @@ DECLSPEC_NORETURN
|
|||
KiServiceExit2(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
__debugbreak();
|
||||
}
|
||||
|
||||
BOOLEAN
|
||||
|
@ -43,6 +53,7 @@ NTAPI
|
|||
KeConnectInterrupt(IN PKINTERRUPT Interrupt)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
__debugbreak();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -62,6 +73,7 @@ KeSynchronizeExecution(
|
|||
IN PVOID SynchronizeContext)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
__debugbreak();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -74,6 +86,7 @@ KeUserModeCallback(IN ULONG RoutineIndex,
|
|||
OUT PULONG ResultLength)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
__debugbreak();
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
|
@ -94,6 +107,7 @@ KiInitializeUserApc(IN PKEXCEPTION_FRAME ExceptionFrame,
|
|||
IN PVOID SystemArgument2)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
__debugbreak();
|
||||
}
|
||||
|
||||
VOID
|
||||
|
@ -102,6 +116,7 @@ KiSwapProcess(IN PKPROCESS NewProcess,
|
|||
IN PKPROCESS OldProcess)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
__debugbreak();
|
||||
}
|
||||
|
||||
VOID
|
||||
|
@ -110,6 +125,7 @@ KiSystemService(IN PKTHREAD Thread,
|
|||
IN ULONG Instruction)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
__debugbreak();
|
||||
}
|
||||
|
||||
NTSYSAPI
|
||||
|
@ -119,6 +135,7 @@ NtCallbackReturn
|
|||
( IN PVOID Result OPTIONAL, IN ULONG ResultLength, IN NTSTATUS Status )
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
__debugbreak();
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
|
@ -137,6 +154,7 @@ NtVdmControl(IN ULONG ControlCode,
|
|||
IN PVOID ControlData)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
__debugbreak();
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
|
@ -147,6 +165,7 @@ KiCallUserMode(
|
|||
IN PULONG OutputLength)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
__debugbreak();
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
|
@ -160,29 +179,6 @@ ExQueryDepthSList(IN PSLIST_HEADER ListHead)
|
|||
|
||||
|
||||
ULONG ProcessCount;
|
||||
|
||||
#ifdef _MSC_VER
|
||||
void
|
||||
__GSHandlerCheck()
|
||||
{
|
||||
}
|
||||
|
||||
int __security_cookie;
|
||||
|
||||
void
|
||||
__security_check_cookie()
|
||||
{
|
||||
}
|
||||
|
||||
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 KiGeneralProtectionFaultHandler:PROC
|
||||
EXTERN KiXmmExceptionHandler:PROC
|
||||
EXTERN KiDeliverApc:PROC
|
||||
EXTERN KiDispatchInterrupt:PROC
|
||||
|
||||
/* GLOBALS *******************************************************************/
|
||||
|
||||
|
@ -524,9 +526,76 @@ PUBLIC KiDebugServiceTrap
|
|||
ExitTrap TF_SAVE_ALL
|
||||
.ENDP KiDebugServiceTrap
|
||||
|
||||
TRAP_ENTRY KiApcInterrupt, (TF_HAS_ERROR_CODE OR TF_SAVE_ALL)
|
||||
TRAP_ENTRY KiDpcInterrupt, (TF_HAS_ERROR_CODE OR TF_SAVE_ALL)
|
||||
TRAP_ENTRY KiIpiInterrupt, (TF_HAS_ERROR_CODE OR TF_SAVE_ALL)
|
||||
|
||||
PUBLIC KiApcInterrupt
|
||||
.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
|
||||
|
|
Loading…
Reference in a new issue