2 * PROJECT: ReactOS Kernel
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: ntoskrnl/vdm/vdmmain.c
5 * PURPOSE: VDM Support Services
6 * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
9 /* INCLUDES ******************************************************************/
14 #include <ppcmmu/mmu.h>
18 NtVdmControl(IN ULONG ControlCode
,
21 return STATUS_UNSUCCESSFUL
;
26 Ke386CallBios(IN ULONG Int
,
29 return STATUS_UNSUCCESSFUL
;
34 KiUnexpectedInterrupt()
38 LONG NTAPI
Exi386InterlockedDecrementLong(PLONG Addend
)
40 return _InterlockedDecrement(Addend
);
43 LONG NTAPI
Exi386InterlockedIncrementLong(PLONG Addend
)
45 return _InterlockedIncrement(Addend
);
48 LONG NTAPI
Exi386InterlockedExchangeUlong(PLONG Target
, LONG Exch
, LONG Compare
)
50 return _InterlockedCompareExchange(Target
, Exch
, Compare
);
58 KeI386FlatToGdtSelector(IN ULONG Base
,
71 KeI386ReleaseGdtSelectors(OUT PULONG SelArray
,
72 IN ULONG NumOfSelectors
)
83 KeI386AllocateGdtSelectors(OUT PULONG SelArray
,
84 IN ULONG NumOfSelectors
)
92 KeDumpStackFrames(PULONG Frame
)
98 Kei386EoiHelper() { return 0; }
102 KeUserModeCallback(IN ULONG RoutineIndex
,
104 IN ULONG ArgumentLength
,
106 OUT PULONG ResultLength
)
108 return STATUS_UNSUCCESSFUL
;
113 KiCoprocessorError() { }
117 KiDispatchInterrupt() { }
121 KiInitializeUserApc(IN PKEXCEPTION_FRAME ExceptionFrame
,
122 IN PKTRAP_FRAME TrapFrame
,
123 IN PKNORMAL_ROUTINE NormalRoutine
,
124 IN PVOID NormalContext
,
125 IN PVOID SystemArgument1
,
126 IN PVOID SystemArgument2
)
132 KeSwitchKernelStack(PVOID StackBase
, PVOID StackLimit
)
139 KiSwapProcess(struct _KPROCESS
*NewProcess
, struct _KPROCESS
*OldProcess
)
141 PEPROCESS EProcess
= (PEPROCESS
)NewProcess
;
142 MmuSetVsid(0, 8, EProcess
? (ULONG
)EProcess
->UniqueProcessId
: 0);
147 KiSwapContext(PKTHREAD CurrentThread
, PKTHREAD NewThread
)
149 KeGetPcr()->Prcb
->NextThread
= NewThread
;
150 __asm__("mtdec %0" : : "r" (1));
156 KeI386VdmInitialize(VOID
)
164 ( IN PVOID Result OPTIONAL
, IN ULONG ResultLength
, IN NTSTATUS Status
)
166 return STATUS_UNSUCCESSFUL
;
173 (IN PCONTEXT ThreadContext
, IN BOOLEAN RaiseAlert
)
175 return STATUS_UNSUCCESSFUL
;
181 NtGetTickCount() { return __rdtsc(); }
186 (ULONG Selector1
, LDT_ENTRY LdtEntry1
, ULONG Selector2
, LDT_ENTRY LdtEntry2
)
188 return STATUS_UNSUCCESSFUL
;
195 (IN PEXCEPTION_RECORD ExceptionRecord
, IN PCONTEXT ThreadContext
, IN BOOLEAN HandleException
)
197 return STATUS_UNSUCCESSFUL
;
206 void _alloca_probe() { }
222 void _abnormal_termination() { }