Author: tkreuzer
Date: Mon Nov 17 20:25:41 2008
New Revision: 37430
URL:
http://svn.reactos.org/svn/reactos?rev=37430&view=rev
Log:
cleanup ntoskrnl.exe:
- Move the last stubs into better places
- implement KeQueryActiveProcessors, KeInvalidateAllCaches,
KeGetRecommendedSharedDataAlignment, KeSaveStateForHibernate, KeSetDmaIoCoherency,
PsGetContext, PsSetContext based on x86 implementations.
- remove KdbpGetCommandLine from kd.c where it wasn't supposed to be
- remove amd64stubs.c
Added:
branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/context.c (with props)
branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/stubs.c (with props)
branches/ros-amd64-bringup/reactos/ntoskrnl/ps/amd64/ (with props)
branches/ros-amd64-bringup/reactos/ntoskrnl/ps/amd64/psctx.c (with props)
Removed:
branches/ros-amd64-bringup/reactos/ntoskrnl/amd64stubs.c
Modified:
branches/ros-amd64-bringup/reactos/ntoskrnl/kd/amd64/kd.c
branches/ros-amd64-bringup/reactos/ntoskrnl/kdbg/amd64/kdb.c
branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/cpu.c
branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/except.c
branches/ros-amd64-bringup/reactos/ntoskrnl/ntoskrnl-generic.rbuild
Removed: branches/ros-amd64-bringup/reactos/ntoskrnl/amd64stubs.c
URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/amd64stubs.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/amd64stubs.c (removed)
@@ -1,47 +1,0 @@
-
-unsigned long (*FrLdrDbgPrint)(const char *Format, ...);
-
-
-
-#define STUB(x) void x() {FrLdrDbgPrint("Sorry, %s is only a stub!\n",
__FUNCTION__);}
-
-STUB(KeActiveProcessors)
-STUB(KeConnectInterrupt)
-STUB(KeContextToTrapFrame)
-STUB(KeDisableInterrupts)
-STUB(KeDisconnectInterrupt)
-STUB(KeFeatureBits)
-STUB(KeFlushEntireTb)
-STUB(KeGetRecommendedSharedDataAlignment)
-STUB(KeInitializeInterrupt)
-STUB(KeInvalidateAllCaches)
-STUB(KeProcessorArchitecture)
-STUB(KeProcessorLevel)
-STUB(KeProcessorRevision)
-STUB(KeQueryActiveProcessors)
-STUB(KeRaiseUserException)
-STUB(KeRestoreFloatingPointState)
-STUB(KeSaveFloatingPointState)
-STUB(KeSaveStateForHibernate)
-STUB(KeSetDmaIoCoherency)
-STUB(KeSwitchKernelStack)
-STUB(KeSynchronizeExecution)
-STUB(KeUpdateRunTime)
-STUB(KeUpdateSystemTime)
-STUB(KeUserModeCallback)
-STUB(KiComputeTimerTableIndex)
-STUB(KiDispatchException)
-STUB(KiIdleLoop)
-STUB(KiInitializeUserApc)
-STUB(KiSwapProcess)
-STUB(KiSystemService)
-STUB(KdbEnterDebuggerException)
-STUB(KdbpCliModuleLoaded)
-STUB(KdbpCliInit)
-STUB(KdpGdbStubInit)
-STUB(NtContinue)
-STUB(NtCallbackReturn)
-STUB(NtRaiseException)
-STUB(NtSetLdtEntries)
-STUB(NtVdmControl)
-STUB(PspGetOrSetContextKernelRoutine)
Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/kd/amd64/kd.c
URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/kd/amd64/kd.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/kd/amd64/kd.c [iso-8859-1] Mon Nov 17
20:25:41 2008
@@ -1,30 +1,23 @@
+/*
+ * PROJECT: ReactOS Kernel
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: ntoskrnl/ke/i386/cpu.c
+ * PURPOSE: Routines for CPU-level support
+ * PROGRAMMERS: Timo Kreuzer (timo.kreuzer(a)reactos.org)
+ */
+
+/* INCLUDES ******************************************************************/
#include <ntoskrnl.h>
#define NDEBUG
#include <debug.h>
+/* FUNCTIONS *****************************************************************/
+
VOID
STDCALL
-KdbpGetCommandLineSettings(PCHAR p1)
+KdpGdbStubInit(PKD_DISPATCH_TABLE WrapperTable,
+ ULONG BootPhase)
{
- PCHAR p2;
-
- while (p1 && (p2 = strchr(p1, ' ')))
- {
- p2++;
-
- if (!_strnicmp(p2, "KDSERIAL", 8))
- {
- p2 += 8;
- KdbDebugState |= KD_DEBUG_KDSERIAL;
- KdpDebugMode.Serial = TRUE;
- }
- else if (!_strnicmp(p2, "KDNOECHO", 8))
- {
- p2 += 8;
- KdbDebugState |= KD_DEBUG_KDNOECHO;
- }
-
- p1 = p2;
- }
+ UNIMPLEMENTED;
}
Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/kdbg/amd64/kdb.c
URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/kdbg/amd64/kdb.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/kdbg/amd64/kdb.c [iso-8859-1] Mon Nov 17
20:25:41 2008
@@ -1,10 +1,10 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
- * FILE: ntoskrnl/kdbg/kdb.c
+ * FILE: ntoskrnl/kdbg/amd64/kdb.c
* PURPOSE: Kernel Debugger
- *
* PROGRAMMERS: Gregor Anich
+ * Timo Kreuzer (timo.kreuzer(a)reactos.org)
*/
/* INCLUDES ******************************************************************/
@@ -45,3 +45,27 @@
}
}
+KD_CONTINUE_TYPE
+KdbEnterDebuggerException(
+ IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL,
+ IN KPROCESSOR_MODE PreviousMode,
+ IN PCONTEXT Context,
+ IN OUT PKTRAP_FRAME TrapFrame,
+ IN BOOLEAN FirstChance)
+{
+ UNIMPLEMENTED;
+ return 0;
+}
+
+VOID
+KdbpCliModuleLoaded(IN PUNICODE_STRING Name)
+{
+ UNIMPLEMENTED;
+}
+
+VOID
+KdbpCliInit()
+{
+ UNIMPLEMENTED;
+}
+
Added: branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/context.c
URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/context.c (added)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/context.c [iso-8859-1] Mon Nov 17
20:25:41 2008
@@ -1,0 +1,36 @@
+/*
+ * PROJECT: ReactOS Kernel
+ * LICENSE: GPL - See COPYING in the top level directory
+ * PURPOSE: CONTEXT related functions
+ * PROGRAMMERS: Timo Kreuzer (timo.kreuzer(a)reactos.org)
+ */
+
+/* INCLUDES ******************************************************************/
+
+#include <ntoskrnl.h>
+
+#define NDEBUG
+#include <debug.h>
+
+/* FUNCTIONS *****************************************************************/
+
+VOID
+NTAPI
+KeContextToTrapFrame(IN PCONTEXT Context,
+ IN OUT PKEXCEPTION_FRAME ExceptionFrame,
+ IN OUT PKTRAP_FRAME TrapFrame,
+ IN ULONG ContextFlags,
+ IN KPROCESSOR_MODE PreviousMode)
+{
+ UNIMPLEMENTED;
+}
+
+VOID
+NTAPI
+KeTrapFrameToContext(IN PKTRAP_FRAME TrapFrame,
+ IN PKEXCEPTION_FRAME ExceptionFrame,
+ IN OUT PCONTEXT Context)
+{
+ UNIMPLEMENTED;
+}
+
Propchange: branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/context.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/cpu.c
URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/cpu.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/cpu.c [iso-8859-1] Mon Nov 17
20:25:41 2008
@@ -3,7 +3,8 @@
* LICENSE: GPL - See COPYING in the top level directory
* FILE: ntoskrnl/ke/amd64/cpu.c
* PURPOSE: Routines for CPU-level support
- * PROGRAMMERS: Timo Kreuzer (timo.kreuzer(a)reactos.org)
+ * PROGRAMMERS: Alex Ionescu (alex.ionescu(a)reactos.org)
+ * Timo Kreuzer (timo.kreuzer(a)reactos.org)
*/
/* INCLUDES *****************************************************************/
@@ -26,11 +27,18 @@
/* CPU Features and Flags */
ULONG KeI386CpuType;
ULONG KeI386CpuStep;
+ULONG KeProcessorArchitecture;
+ULONG KeProcessorLevel;
+ULONG KeProcessorRevision;
+ULONG KeFeatureBits;
ULONG KeI386MachineType;
ULONG KeI386NpxPresent = 1;
ULONG KeI386XMMIPresent = 0;
ULONG KeI386FxsrPresent = 0;
+ULONG KeLargestCacheLine = 0x40;
+ULONG KiDmaIoCoherency = 0;
CHAR KeNumberProcessors = 0;
+KAFFINITY KeActiveProcessors = 1;
BOOLEAN KiI386PentiumLockErrataPresent;
BOOLEAN KiSMTProcessorsPresent;
@@ -598,4 +606,84 @@
KeI386MachineType = KeLoaderBlock->u.I386.MachineType & 0x000FF;
}
-
+VOID
+NTAPI
+KeFlushEntireTb(IN BOOLEAN Invalid,
+ IN BOOLEAN AllProcessors)
+{
+ UNIMPLEMENTED;
+}
+
+KAFFINITY
+NTAPI
+KeQueryActiveProcessors(VOID)
+{
+ PAGED_CODE();
+
+ /* Simply return the number of active processors */
+ return KeActiveProcessors;
+}
+
+NTSTATUS
+NTAPI
+KeSaveFloatingPointState(OUT PKFLOATING_SAVE Save)
+{
+ UNIMPLEMENTED;
+ return STATUS_UNSUCCESSFUL;
+}
+
+NTSTATUS
+NTAPI
+KeRestoreFloatingPointState(IN PKFLOATING_SAVE Save)
+{
+ UNIMPLEMENTED;
+ return STATUS_UNSUCCESSFUL;
+}
+
+BOOLEAN
+NTAPI
+KeInvalidateAllCaches(VOID)
+{
+ /* Only supported on Pentium Pro and higher */
+ if (KeI386CpuType < 6) return FALSE;
+
+ /* Invalidate all caches */
+ __wbinvd();
+ return TRUE;
+}
+
+/*
+ * @implemented
+ */
+ULONG
+NTAPI
+KeGetRecommendedSharedDataAlignment(VOID)
+{
+ /* Return the global variable */
+ return KeLargestCacheLine;
+}
+
+/*
+ * @implemented
+ */
+VOID
+__cdecl
+KeSaveStateForHibernate(IN PKPROCESSOR_STATE State)
+{
+ /* Capture the context */
+ RtlCaptureContext(&State->ContextFrame);
+
+ /* Capture the control state */
+ KiSaveProcessorControlState(State);
+}
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+KeSetDmaIoCoherency(IN ULONG Coherency)
+{
+ /* Save the coherency globally */
+ KiDmaIoCoherency = Coherency;
+}
Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/except.c
URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/except.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/except.c [iso-8859-1] Mon Nov 17
20:25:41 2008
@@ -91,3 +91,22 @@
__lidt(&KiIdtDescriptor.Limit);
}
+VOID
+NTAPI
+KiDispatchException(IN PEXCEPTION_RECORD ExceptionRecord,
+ IN PKEXCEPTION_FRAME ExceptionFrame,
+ IN PKTRAP_FRAME TrapFrame,
+ IN KPROCESSOR_MODE PreviousMode,
+ IN BOOLEAN FirstChance)
+{
+ UNIMPLEMENTED;
+}
+
+NTSTATUS
+NTAPI
+KeRaiseUserException(IN NTSTATUS ExceptionCode)
+{
+ UNIMPLEMENTED;
+ return STATUS_UNSUCCESSFUL;
+}
+
Added: branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/stubs.c
URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/stubs.c (added)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/stubs.c [iso-8859-1] Mon Nov 17
20:25:41 2008
@@ -1,0 +1,161 @@
+/*
+ * PROJECT: ReactOS Kernel
+ * LICENSE: GPL - See COPYING in the top level directory
+ * PURPOSE: stubs
+ * PROGRAMMERS: Timo Kreuzer (timo.kreuzer(a)reactos.org)
+ */
+
+/* INCLUDES ******************************************************************/
+
+#include <ntoskrnl.h>
+
+#define NDEBUG
+#include <debug.h>
+
+BOOLEAN
+NTAPI
+KeConnectInterrupt(IN PKINTERRUPT Interrupt)
+{
+ UNIMPLEMENTED;
+ return FALSE;
+}
+
+PVOID
+NTAPI
+KeSwitchKernelStack(PVOID StackBase, PVOID StackLimit)
+{
+ UNIMPLEMENTED;
+ return NULL;
+}
+
+BOOLEAN
+NTAPI
+KeSynchronizeExecution(
+ IN OUT PKINTERRUPT Interrupt,
+ IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
+ IN PVOID SynchronizeContext)
+{
+ UNIMPLEMENTED;
+ return FALSE;
+}
+
+VOID
+NTAPI
+KeUpdateRunTime(IN PKTRAP_FRAME TrapFrame,
+ IN KIRQL Irql)
+{
+ UNIMPLEMENTED;
+}
+
+VOID
+NTAPI
+KeUpdateSystemTime(IN PKTRAP_FRAME TrapFrame,
+ IN KIRQL Irql,
+ IN ULONG Increment)
+{
+ UNIMPLEMENTED;
+}
+
+
+NTSTATUS
+NTAPI
+KeUserModeCallback(IN ULONG RoutineIndex,
+ IN PVOID Argument,
+ IN ULONG ArgumentLength,
+ OUT PVOID *Result,
+ OUT PULONG ResultLength)
+{
+ UNIMPLEMENTED;
+ return STATUS_UNSUCCESSFUL;
+}
+
+ULONG
+NTAPI
+KiComputeTimerTableIndex(LONGLONG Timer)
+{
+ UNIMPLEMENTED;
+ return 0;
+}
+
+VOID
+KiIdleLoop()
+{
+ UNIMPLEMENTED;
+ for(;;);
+}
+
+VOID
+NTAPI
+KiInitializeUserApc(IN PKEXCEPTION_FRAME ExceptionFrame,
+ IN PKTRAP_FRAME TrapFrame,
+ IN PKNORMAL_ROUTINE NormalRoutine,
+ IN PVOID NormalContext,
+ IN PVOID SystemArgument1,
+ IN PVOID SystemArgument2)
+{
+ UNIMPLEMENTED;
+}
+
+VOID
+NTAPI
+KiSwapProcess(IN PKPROCESS NewProcess,
+ IN PKPROCESS OldProcess)
+{
+ UNIMPLEMENTED;
+}
+
+VOID
+KiSystemService(IN PKTHREAD Thread,
+ IN PKTRAP_FRAME TrapFrame,
+ IN ULONG Instruction)
+{
+ UNIMPLEMENTED;
+}
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtCallbackReturn
+( IN PVOID Result OPTIONAL, IN ULONG ResultLength, IN NTSTATUS Status )
+{
+ UNIMPLEMENTED;
+ return STATUS_UNSUCCESSFUL;
+}
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtContinue(
+ IN PCONTEXT ThreadContext, IN BOOLEAN RaiseAlert)
+{
+ UNIMPLEMENTED;
+ return STATUS_UNSUCCESSFUL;
+}
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+NtRaiseException
+(IN PEXCEPTION_RECORD ExceptionRecord, IN PCONTEXT ThreadContext, IN BOOLEAN
HandleException )
+{
+ UNIMPLEMENTED;
+ return STATUS_UNSUCCESSFUL;
+}
+
+NTSTATUS
+STDCALL
+NtSetLdtEntries
+(ULONG Selector1, LDT_ENTRY LdtEntry1, ULONG Selector2, LDT_ENTRY LdtEntry2)
+{
+ UNIMPLEMENTED;
+ return STATUS_UNSUCCESSFUL;
+}
+
+NTSTATUS
+NTAPI
+NtVdmControl(IN ULONG ControlCode,
+ IN PVOID ControlData)
+{
+ UNIMPLEMENTED;
+ return STATUS_UNSUCCESSFUL;
+}
Propchange: branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/stubs.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ntoskrnl-generic.rbuild
URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ntoskrnl-generic.rbuild [iso-8859-1]
(original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ntoskrnl-generic.rbuild [iso-8859-1] Mon
Nov 17 20:25:41 2008
@@ -36,9 +36,6 @@
<directory name="include">
<pch>ntoskrnl.h</pch>
</directory>
- <if property="ARCH" value="amd64">
- <file>amd64stubs.c</file>
- </if>
<directory name="ke">
<if property="ARCH" value="i386">
<directory name="i386">
@@ -93,12 +90,15 @@
<if property="ARCH" value="amd64">
<directory name="amd64">
<file first="true">boot.S</file>
+ <file>context.c</file>
<file>cpu.c</file>
<file>ctxswitch.S</file>
<file>except.c</file>
+ <file>interrupt.c</file>
<file>irql.c</file>
<file>kiinit.c</file>
<file>spinlock.c</file>
+ <file>stubs.c</file>
<file>thrdini.c</file>
<file>trap.S</file>
</directory>
@@ -343,6 +343,11 @@
</if>
<file>kdbg.c</file>
</directory>
+ <if property="ARCH" value="amd64">
+ <directory name="amd64">
+ <file>kd.c</file>
+ </directory>
+ </if>
<file>kdinit.c</file>
<file>kdio.c</file>
<file>kdmain.c</file>
@@ -451,6 +456,11 @@
<file>psctx.c</file>
</directory>
</if>
+ <if property="ARCH" value="amd64">
+ <directory name="amd64">
+ <file>psctx.c</file>
+ </directory>
+ </if>
<file>debug.c</file>
<file>job.c</file>
<file>kill.c</file>
Propchange: branches/ros-amd64-bringup/reactos/ntoskrnl/ps/amd64/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Mon Nov 17 20:25:41 2008
@@ -1,0 +1,2 @@
+([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))?
+(\d+)
Propchange: branches/ros-amd64-bringup/reactos/ntoskrnl/ps/amd64/
------------------------------------------------------------------------------
bugtraq:message = See issue #%BUGID% for more details.
Propchange: branches/ros-amd64-bringup/reactos/ntoskrnl/ps/amd64/
------------------------------------------------------------------------------
bugtraq:url =
http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: branches/ros-amd64-bringup/reactos/ntoskrnl/ps/amd64/
------------------------------------------------------------------------------
tsvn:logminsize = 10
Added: branches/ros-amd64-bringup/reactos/ntoskrnl/ps/amd64/psctx.c
URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ps/amd64/psctx.c (added)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ps/amd64/psctx.c [iso-8859-1] Mon Nov 17
20:25:41 2008
@@ -1,0 +1,95 @@
+/*
+ * PROJECT: ReactOS Kernel
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: ntoskrnl/ps/amd64/pxctx.c
+ * PURPOSE: Process Manager: Set/Get Context for i386
+ * PROGRAMMERS: Alex Ionescu (alex.ionescu(a)reactos.org)
+ * Timo Kreuzer (timo.kreuzer(a)reactos.org)
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include <ntoskrnl.h>
+#define NDEBUG
+#include <debug.h>
+
+/* FUNCTIONS ******************************************************************/
+
+VOID
+NTAPI
+PspGetContext(IN PKTRAP_FRAME TrapFrame,
+ IN PVOID NonVolatileContext,
+ IN OUT PCONTEXT Context)
+{
+ PAGED_CODE();
+
+ /* Convert the trap frame to a context */
+ KeTrapFrameToContext(TrapFrame, NULL, Context);
+}
+
+VOID
+NTAPI
+PspSetContext(OUT PKTRAP_FRAME TrapFrame,
+ OUT PVOID NonVolatileContext,
+ IN PCONTEXT Context,
+ IN KPROCESSOR_MODE Mode)
+{
+ PAGED_CODE();
+
+ /* Convert the context to a trap frame structure */
+ KeContextToTrapFrame(Context, NULL, TrapFrame, Context->ContextFlags, Mode);
+}
+
+VOID
+NTAPI
+PspGetOrSetContextKernelRoutine(IN PKAPC Apc,
+ IN OUT PKNORMAL_ROUTINE* NormalRoutine,
+ IN OUT PVOID* NormalContext,
+ IN OUT PVOID* SystemArgument1,
+ IN OUT PVOID* SystemArgument2)
+{
+ PGET_SET_CTX_CONTEXT GetSetContext;
+ PKEVENT Event;
+ PCONTEXT Context;
+ PKTHREAD Thread;
+ KPROCESSOR_MODE Mode;
+ PKTRAP_FRAME TrapFrame = NULL;
+ PAGED_CODE();
+
+ /* Get the Context Structure */
+ GetSetContext = CONTAINING_RECORD(Apc, GET_SET_CTX_CONTEXT, Apc);
+ Context = &GetSetContext->Context;
+ Event = &GetSetContext->Event;
+ Mode = GetSetContext->Mode;
+ Thread = Apc->SystemArgument2;
+
+ /* If this is a kernel-mode request, grab the saved trap frame */
+ if (Mode == KernelMode) TrapFrame = Thread->TrapFrame;
+
+ /* If we don't have one, grab it from the stack */
+ if (!TrapFrame)
+ {
+ FPRINT1("FIXME!!!!\n");
+ /* Trap frame is right under our initial stack */
+// TrapFrame = (PKTRAP_FRAME)((ULONG_PTR)Thread->InitialStack -
+// ROUND_UP(sizeof(KTRAP_FRAME), KTRAP_FRAME_ALIGN) -
+// sizeof(FX_SAVE_AREA));
+ }
+
+ /* Check if it's a set or get */
+ if (Apc->SystemArgument1)
+ {
+ /* Get the Context */
+ PspSetContext(TrapFrame, NULL, Context, Mode);
+ }
+ else
+ {
+ /* Set the Context */
+ PspGetContext(TrapFrame, NULL, Context);
+ }
+
+ /* Notify the Native API that we are done */
+ KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
+}
+
+/* EOF */
Propchange: branches/ros-amd64-bringup/reactos/ntoskrnl/ps/amd64/psctx.c
------------------------------------------------------------------------------
svn:eol-style = native