Author: jcatena
Date: Thu Feb 4 17:35:49 2010
New Revision: 45421
URL:
http://svn.reactos.org/svn/reactos?rev=45421&view=rev
Log:
[ntos] traps, work in progress
Modified:
branches/jcatena-branch/include/ndk/i386/ketypes.h
branches/jcatena-branch/ntoskrnl/include/internal/i386/asmmacro.S
branches/jcatena-branch/ntoskrnl/include/internal/i386/ke.h
branches/jcatena-branch/ntoskrnl/include/internal/trap_x.h
branches/jcatena-branch/ntoskrnl/ke/i386/kiinit.c
branches/jcatena-branch/ntoskrnl/ke/i386/traphdlr.c
branches/jcatena-branch/ntoskrnl/ntoskrnl.sln
branches/jcatena-branch/ntoskrnl/ntoskrnl.vcproj
branches/jcatena-branch/ntoskrnl/trap/i386/TrapStub.h
branches/jcatena-branch/ntoskrnl/trap/i386/trap_asm.h
branches/jcatena-branch/ntoskrnl/trap/trap.c
branches/jcatena-branch/ntoskrnl/trap/trap.h
branches/jcatena-branch/ntoskrnl/trap/trap.vcproj
Modified: branches/jcatena-branch/include/ndk/i386/ketypes.h
URL:
http://svn.reactos.org/svn/reactos/branches/jcatena-branch/include/ndk/i386…
==============================================================================
--- branches/jcatena-branch/include/ndk/i386/ketypes.h [iso-8859-1] (original)
+++ branches/jcatena-branch/include/ndk/i386/ketypes.h [iso-8859-1] Thu Feb 4 17:35:49
2010
@@ -179,52 +179,52 @@
//
typedef struct _KTRAP_FRAME
{
- ULONG DbgEbp;
- ULONG DbgEip;
- ULONG DbgArgMark;
- ULONG DbgArgPointer;
- USHORT TempSegCs;
- USHORT RsvTempSegCs;
- ULONG TempEsp;
- ULONG Dr0;
- ULONG Dr1;
- ULONG Dr2;
- ULONG Dr3;
- ULONG Dr6;
- ULONG Dr7;
- USHORT SegGs;
- USHORT RsvSegGs;
- USHORT SegEs;
- USHORT RsvSegEs;
- USHORT SegDs;
- USHORT RsvSegDs;
- ULONG Edx;
- ULONG Ecx;
- ULONG Eax;
- ULONG PreviousPreviousMode;
- struct _EXCEPTION_REGISTRATION_RECORD FAR *ExceptionList;
- USHORT SegFs;
- USHORT RsvSegFs;
- ULONG Edi;
- ULONG Esi;
- ULONG Ebx;
- ULONG Ebp;
- ULONG ErrCode;
- ULONG Eip;
- USHORT SegCs;
- USHORT RsvSegCs;
- ULONG EFlags;
- ULONG HardwareEsp;
- ULONG HardwareSegSs;
- USHORT V86Es;
- USHORT RsvV86Es;
- SHORT V86Ds;
- USHORT RsvV86Ds;
- USHORT V86Fs;
- USHORT RsvV86Fs;
- USHORT V86Gs;
- USHORT RsvV86Gs;
-} KTRAP_FRAME, *PKTRAP_FRAME;
+ ULONG DbgEbp; // 00
+ ULONG DbgEip; // 04
+ ULONG DbgArgMark; // 08
+ ULONG DbgArgPointer; // 0c
+ USHORT TempSegCs; // 10
+ USHORT RsvTempSegCs; // 12
+ ULONG TempEsp; // 14
+ ULONG Dr0; // 18
+ ULONG Dr1; // 1c
+ ULONG Dr2; // 20
+ ULONG Dr3; // 24
+ ULONG Dr6; // 28
+ ULONG Dr7; // 2c
+ USHORT SegGs; // 30
+ USHORT RsvSegGs; // 32
+ USHORT SegEs; // 34
+ USHORT RsvSegEs; // 36
+ USHORT SegDs; // 38
+ USHORT RsvSegDs; // 3a
+ ULONG Edx; // 3c
+ ULONG Ecx; // 40
+ ULONG Eax; // 44
+ ULONG PreviousPreviousMode; // 48
+ struct _EXCEPTION_REGISTRATION_RECORD FAR *ExceptionList; // 4c
+ USHORT SegFs; // 50
+ USHORT RsvSegFs; // 52
+ ULONG Edi; // 54
+ ULONG Esi; // 58
+ ULONG Ebx; // 5c
+ ULONG Ebp; // 60
+ ULONG ErrCode; // 64
+ ULONG Eip; // 68
+ USHORT SegCs; // 6c
+ USHORT RsvSegCs; // 6e
+ ULONG EFlags; // 70
+ ULONG HardwareEsp; // 74
+ ULONG HardwareSegSs; // 78
+ USHORT V86Es; // 7c
+ USHORT RsvV86Es; // 7e
+ SHORT V86Ds; // 80
+ USHORT RsvV86Ds; // 82
+ USHORT V86Fs; // 84
+ USHORT RsvV86Fs; // 86
+ USHORT V86Gs; // 88
+ USHORT RsvV86Gs; // 8a
+} KTRAP_FRAME, *PKTRAP_FRAME; // 8c
//
// Defines the Callback Stack Layout for User Mode Callbacks
Modified: branches/jcatena-branch/ntoskrnl/include/internal/i386/asmmacro.S
URL:
http://svn.reactos.org/svn/reactos/branches/jcatena-branch/ntoskrnl/include…
==============================================================================
--- branches/jcatena-branch/ntoskrnl/include/internal/i386/asmmacro.S [iso-8859-1]
(original)
+++ branches/jcatena-branch/ntoskrnl/include/internal/i386/asmmacro.S [iso-8859-1] Thu Feb
4 17:35:49 2010
@@ -67,7 +67,7 @@
.macro idt Handler, Bits
.long \Handler
.short \Bits
-// .short KGDT_R0_CODE
+ .short KGDT_R0_CODE
.endm
//
Modified: branches/jcatena-branch/ntoskrnl/include/internal/i386/ke.h
URL:
http://svn.reactos.org/svn/reactos/branches/jcatena-branch/ntoskrnl/include…
==============================================================================
--- branches/jcatena-branch/ntoskrnl/include/internal/i386/ke.h [iso-8859-1] (original)
+++ branches/jcatena-branch/ntoskrnl/include/internal/i386/ke.h [iso-8859-1] Thu Feb 4
17:35:49 2010
@@ -458,12 +458,13 @@
extern UCHAR KiDebugRegisterTrapOffsets[9];
extern UCHAR KiDebugRegisterContextOffsets[9];
+// !!!
// extern VOID __cdecl KiTrap02(VOID);
-VOID DECLSPEC_NORETURN KiTrap02(VOID);
-
+// VOID DECLSPEC_NORETURN KiTrap02(VOID);
// extern VOID __cdecl KiTrap08(VOID);
// extern VOID __cdecl KiTrap13(VOID);
// extern VOID __cdecl KiFastCallEntry(VOID);
+
extern VOID NTAPI ExpInterlockedPopEntrySListFault(VOID);
extern VOID __cdecl CopyParams(VOID);
extern VOID __cdecl ReadBatch(VOID);
@@ -475,6 +476,7 @@
//
// Trap Macros
//
+#include "trap.h"
#include "trap_x.h"
//
Modified: branches/jcatena-branch/ntoskrnl/include/internal/trap_x.h
URL:
http://svn.reactos.org/svn/reactos/branches/jcatena-branch/ntoskrnl/include…
==============================================================================
--- branches/jcatena-branch/ntoskrnl/include/internal/trap_x.h [iso-8859-1] (original)
+++ branches/jcatena-branch/ntoskrnl/include/internal/trap_x.h [iso-8859-1] Thu Feb 4
17:35:49 2010
@@ -17,6 +17,10 @@
#define _TRAP_X_
#include <debug.h>
+#define DBGTRAP DPRINT1
+// #define DBGTRAPENTRY DPRINT1("\n"); DbgDumpCpu(7|DBG_DUMPCPU_TSS);
DPRINT1("TrapFrame=%p:\n", TrapFrame); DbgDumpMem(TrapFrame, 0x80)
+// #define DBGTRAPENTRY DPRINT1("\n");
+
// !!! temp for testing
extern KINTERRUPT *TrapStubInterrupt;
@@ -104,6 +108,7 @@
TrapFrame->DbgEbp = TrapFrame->Ebp;
}
+#if 0
VOID
FORCEINLINE
KiExitTrapDebugChecks(IN PKTRAP_FRAME TrapFrame,
@@ -152,6 +157,8 @@
while (TRUE);
}
}
+#endif
+
VOID
FORCEINLINE
@@ -304,6 +311,7 @@
#endif
UNREACHABLE;
}
+
VOID
FORCEINLINE
@@ -356,6 +364,7 @@
UNREACHABLE;
}
+#if 0
VOID
FORCEINLINE
DECLSPEC_NORETURN
@@ -405,6 +414,7 @@
#endif
UNREACHABLE;
}
+#endif
VOID
FORCEINLINE
@@ -648,6 +658,7 @@
#endif
}
+#if 0
//
// Generic Exit Routine
//
@@ -659,11 +670,14 @@
// KTRAP_EXIT_SKIP_BITS SkipBits = { .Bits = Skip };
KTRAP_EXIT_SKIP_BITS SkipBits;
PULONG ReturnStack;
-
+
+ DPRINTT("\n");
+
SkipBits.Bits = Skip;
/* Debugging checks */
KiExitTrapDebugChecks(TrapFrame, SkipBits);
+ DPRINTT("DebugChecks r\n");
/* Restore the SEH handler chain */
KeGetPcr()->Tib.ExceptionList = TrapFrame->ExceptionList;
@@ -684,7 +698,9 @@
while (TRUE);
}
- /* Check if this was a V8086 trap */
+ DPRINTT("100\n");
+
+ /* Check if this was a V8086 trap */
if (__builtin_expect(TrapFrame->EFlags & EFLAGS_V86_MASK, 0))
KiTrapReturn(TrapFrame);
/* Check if the trap frame was edited */
@@ -710,7 +726,7 @@
* wanted stack, and it uses IRET which allows a new CS to be inputted.
*
*/
-
+ DPRINTT("edited\n");
/* Set CS that is requested */
TrapFrame->SegCs = TrapFrame->TempSegCs;
@@ -730,7 +746,8 @@
/* Check if this is a user trap */
if (__builtin_expect(KiUserTrap(TrapFrame), 1)) /* Ring 3 is where we spend time */
{
- /* Check if segments should be restored */
+ DPRINTT("user\n");
+ /* Check if segments should be restored */
if (!SkipBits.SkipSegments)
{
/* Restore segments */
@@ -747,7 +764,8 @@
/* Check for system call -- a system call skips volatiles! */
if (__builtin_expect(SkipBits.SkipVolatiles, 0)) /* More INTs than SYSCALLs */
{
- /* User or kernel call? */
+ DPRINTT("skip vol\n");
+ /* User or kernel call? */
KiUserSystemCall(TrapFrame);
/* Restore EFLags */
@@ -775,8 +793,11 @@
}
/* Return from interrupt */
+ DPRINTT("KiTrapReturn");
KiTrapReturn(TrapFrame);
-}
+ DPRINTT("r\n");
+}
+#endif
//
// Virtual 8086 Mode Optimized Trap Exit
@@ -912,6 +933,7 @@
KiFillTrapFrameDebug(TrapFrame);
}
+#if 0
//
// Generic Trap Entry
//
@@ -971,6 +993,7 @@
/* Set debug header */
KiFillTrapFrameDebug(TrapFrame);
}
+#endif
//
// Generates a Trap Prolog Stub for the given name
Modified: branches/jcatena-branch/ntoskrnl/ke/i386/kiinit.c
URL:
http://svn.reactos.org/svn/reactos/branches/jcatena-branch/ntoskrnl/ke/i386…
==============================================================================
--- branches/jcatena-branch/ntoskrnl/ke/i386/kiinit.c [iso-8859-1] (original)
+++ branches/jcatena-branch/ntoskrnl/ke/i386/kiinit.c [iso-8859-1] Thu Feb 4 17:35:49
2010
@@ -11,7 +11,6 @@
#include <ntoskrnl.h>
#define NDEBUG
#include <debug.h>
-// #include "trap_x.h"
/* GLOBALS *******************************************************************/
Modified: branches/jcatena-branch/ntoskrnl/ke/i386/traphdlr.c
URL:
http://svn.reactos.org/svn/reactos/branches/jcatena-branch/ntoskrnl/ke/i386…
==============================================================================
--- branches/jcatena-branch/ntoskrnl/ke/i386/traphdlr.c [iso-8859-1] (original)
+++ branches/jcatena-branch/ntoskrnl/ke/i386/traphdlr.c [iso-8859-1] Thu Feb 4 17:35:49
2010
@@ -9,7 +9,7 @@
/* INCLUDES *******************************************************************/
#include <ntoskrnl.h>
-#define NDEBUG
+// #define NDEBUG
#include <debug.h>
/* GLOBALS ********************************************************************/
@@ -295,6 +295,8 @@
FASTCALL
KiTrap00Handler(IN PKTRAP_FRAME TrapFrame)
{
+ DBGTRAPENTRY
+
/* Save trap frame */
KiEnterTrap(TrapFrame);
@@ -315,7 +317,9 @@
FASTCALL
KiTrap01Handler(IN PKTRAP_FRAME TrapFrame)
{
- /* Save trap frame */
+ DBGTRAPENTRY
+
+ /* Save trap frame */
KiEnterTrap(TrapFrame);
/* Check for VDM trap */
@@ -331,16 +335,15 @@
TrapFrame);
}
-VOID
-DECLSPEC_NORETURN
-KiTrap02(VOID)
+VOID FASTCALL KiTrap02Handler(KTRAP_FRAME *TrapFrame)
{
PKTSS Tss, NmiTss;
PKTHREAD Thread;
PKPROCESS Process;
PKGDTENTRY TssGdt;
- KTRAP_FRAME TrapFrame;
KIRQL OldIrql;
+
+ DBGTRAPENTRY
//
// In some sort of strange recursion case, we might end up here with the IF
@@ -395,31 +398,31 @@
// We just have to go get the values...
//
RtlZeroMemory(&TrapFrame, sizeof(KTRAP_FRAME));
- TrapFrame.HardwareSegSs = Tss->Ss0;
- TrapFrame.HardwareEsp = Tss->Esp0;
- TrapFrame.EFlags = Tss->EFlags;
- TrapFrame.SegCs = Tss->Cs;
- TrapFrame.Eip = Tss->Eip;
- TrapFrame.Ebp = Tss->Ebp;
- TrapFrame.Ebx = Tss->Ebx;
- TrapFrame.Esi = Tss->Esi;
- TrapFrame.Edi = Tss->Edi;
- TrapFrame.SegFs = Tss->Fs;
- TrapFrame.ExceptionList = PCR->Tib.ExceptionList;
- TrapFrame.PreviousPreviousMode = -1;
- TrapFrame.Eax = Tss->Eax;
- TrapFrame.Ecx = Tss->Ecx;
- TrapFrame.Edx = Tss->Edx;
- TrapFrame.SegDs = Tss->Ds;
- TrapFrame.SegEs = Tss->Es;
- TrapFrame.SegGs = Tss->Gs;
- TrapFrame.DbgEip = Tss->Eip;
- TrapFrame.DbgEbp = Tss->Ebp;
+ TrapFrame->HardwareSegSs = Tss->Ss0;
+ TrapFrame->HardwareEsp = Tss->Esp0;
+ TrapFrame->EFlags = Tss->EFlags;
+ TrapFrame->SegCs = Tss->Cs;
+ TrapFrame->Eip = Tss->Eip;
+ TrapFrame->Ebp = Tss->Ebp;
+ TrapFrame->Ebx = Tss->Ebx;
+ TrapFrame->Esi = Tss->Esi;
+ TrapFrame->Edi = Tss->Edi;
+ TrapFrame->SegFs = Tss->Fs;
+ TrapFrame->ExceptionList = PCR->Tib.ExceptionList;
+ TrapFrame->PreviousPreviousMode = -1;
+ TrapFrame->Eax = Tss->Eax;
+ TrapFrame->Ecx = Tss->Ecx;
+ TrapFrame->Edx = Tss->Edx;
+ TrapFrame->SegDs = Tss->Ds;
+ TrapFrame->SegEs = Tss->Es;
+ TrapFrame->SegGs = Tss->Gs;
+ TrapFrame->DbgEip = Tss->Eip;
+ TrapFrame->DbgEbp = Tss->Ebp;
//
// Store the trap frame in the KPRCB
//
- KiSaveProcessorState(&TrapFrame, NULL);
+ KiSaveProcessorState(TrapFrame, NULL);
//
// Call any registered NMI handlers and see if they handled it or not
@@ -482,6 +485,8 @@
FASTCALL
KiTrap03Handler(IN PKTRAP_FRAME TrapFrame)
{
+ DBGTRAPENTRY
+
/* Save trap frame */
KiEnterTrap(TrapFrame);
@@ -494,6 +499,8 @@
FASTCALL
KiTrap04Handler(IN PKTRAP_FRAME TrapFrame)
{
+ DBGTRAPENTRY
+
/* Save trap frame */
KiEnterTrap(TrapFrame);
@@ -514,6 +521,8 @@
FASTCALL
KiTrap05Handler(IN PKTRAP_FRAME TrapFrame)
{
+ DBGTRAPENTRY
+
/* Save trap frame */
KiEnterTrap(TrapFrame);
@@ -540,6 +549,8 @@
PUCHAR Instruction;
ULONG i;
KIRQL OldIrql;
+
+ DBGTRAPENTRY
/* Check for V86 GPF */
if (__builtin_expect(KiIsV8086TrapSafe(TrapFrame), 1))
@@ -626,6 +637,8 @@
PFX_SAVE_AREA SaveArea, NpxSaveArea;
ULONG Cr0;
+ DBGTRAPENTRY
+
/* Save trap frame */
KiEnterTrap(TrapFrame);
@@ -732,6 +745,8 @@
FASTCALL
KiTrap08Handler(IN PKTRAP_FRAME TrapFrame)
{
+ DBGTRAPENTRY
+
/* FIXME: Not handled */
KiSystemFatalException(EXCEPTION_DOUBLE_FAULT, TrapFrame);
}
@@ -741,6 +756,8 @@
FASTCALL
KiTrap09Handler(IN PKTRAP_FRAME TrapFrame)
{
+ DBGTRAPENTRY
+
/* Save trap frame */
KiEnterTrap(TrapFrame);
@@ -754,6 +771,8 @@
FASTCALL
KiTrap0AHandler(IN PKTRAP_FRAME TrapFrame)
{
+ DBGTRAPENTRY
+
/* Save trap frame */
KiEnterTrap(TrapFrame);
@@ -769,6 +788,8 @@
FASTCALL
KiTrap0BHandler(IN PKTRAP_FRAME TrapFrame)
{
+ DBGTRAPENTRY
+
/* Save trap frame */
KiEnterTrap(TrapFrame);
@@ -782,6 +803,8 @@
FASTCALL
KiTrap0CHandler(IN PKTRAP_FRAME TrapFrame)
{
+ DBGTRAPENTRY
+
/* Save trap frame */
KiEnterTrap(TrapFrame);
@@ -800,6 +823,8 @@
PUCHAR Instructions;
UCHAR Instruction = 0;
KIRQL OldIrql;
+
+ DBGTRAPENTRY
/* Check for V86 GPF */
if (__builtin_expect(KiIsV8086TrapSafe(TrapFrame), 1))
@@ -1075,6 +1100,8 @@
ULONG_PTR Cr2;
NTSTATUS Status;
+ DBGTRAPENTRY
+
/* Save trap frame */
KiEnterTrap(TrapFrame);
@@ -1127,8 +1154,14 @@
(PVOID)Cr2,
TrapFrame->SegCs & MODE_MASK,
TrapFrame);
- if (Status == STATUS_SUCCESS) KiEoiHelper(TrapFrame);
-
+ DPRINTT("MmAccessFault()=%x\n", Status);
+ if (Status == STATUS_SUCCESS)
+ {
+ // return; // !!!
+ KiEoiHelper(TrapFrame);
+ }
+ DPRINTT("KiEoiHelper r\n");
+
/* Check for S-LIST fault */
if (TrapFrame->Eip == (ULONG_PTR)ExpInterlockedPopEntrySListFault)
{
@@ -1186,6 +1219,8 @@
FASTCALL
KiTrap0FHandler(IN PKTRAP_FRAME TrapFrame)
{
+ DBGTRAPENTRY
+
/* Save trap frame */
KiEnterTrap(TrapFrame);
@@ -1201,6 +1236,8 @@
{
PKTHREAD Thread;
PFX_SAVE_AREA SaveArea;
+
+ DBGTRAPENTRY
/* Save trap frame */
KiEnterTrap(TrapFrame);
@@ -1227,6 +1264,8 @@
FASTCALL
KiTrap11Handler(IN PKTRAP_FRAME TrapFrame)
{
+ DBGTRAPENTRY
+
/* Save trap frame */
KiEnterTrap(TrapFrame);
@@ -1243,6 +1282,8 @@
PKTHREAD Thread;
PFX_SAVE_AREA SaveArea;
ULONG Cr0, MxCsrMask, Error;
+
+ DBGTRAPENTRY
/* Save trap frame */
KiEnterTrap(TrapFrame);
@@ -1326,6 +1367,8 @@
FASTCALL
KiGetTickCountHandler(IN PKTRAP_FRAME TrapFrame)
{
+ DBGTRAPENTRY
+
UNIMPLEMENTED;
while (TRUE);
}
@@ -1334,6 +1377,8 @@
FASTCALL
KiCallbackReturnHandler(IN PKTRAP_FRAME TrapFrame)
{
+ DBGTRAPENTRY
+
UNIMPLEMENTED;
while (TRUE);
}
@@ -1343,6 +1388,8 @@
FASTCALL
KiRaiseAssertionHandler(IN PKTRAP_FRAME TrapFrame)
{
+ DBGTRAPENTRY
+
/* Save trap frame */
KiEnterTrap(TrapFrame);
@@ -1381,6 +1428,8 @@
PKSERVICE_TABLE_DESCRIPTOR DescriptorTable;
ULONG Id, Offset, StackBytes, Result;
PVOID Handler;
+
+ DBGTRAPENTRY
/* Loop because we might need to try this twice in case of a GUI call */
while (TRUE)
@@ -1472,6 +1521,8 @@
IN KPROCESSOR_MODE PreviousPreviousMode,
IN USHORT SegFs)
{
+ DBGTRAPENTRY
+
/* No error code */
TrapFrame->ErrCode = 0;
@@ -1513,6 +1564,8 @@
ULONG ServiceNumber = TrapFrame->Eax;
PKTHREAD Thread;
+ DBGTRAPENTRY
+
/* Fixup segments */
Ke386SetFs(KGDT_R0_PCR);
Ke386SetDs(KGDT_R3_DATA | RPL_MASK);
@@ -1553,6 +1606,8 @@
USHORT SegFs;
PKTHREAD Thread;
+ DBGTRAPENTRY
+
/* Save and fixup FS */
SegFs = Ke386GetFs();
Ke386SetFs(KGDT_R0_PCR);
@@ -1578,6 +1633,7 @@
/* CPU AND SOFTWARE TRAPS *****************************************************/
+#if 0
KiTrap(KiTrap00, KI_PUSH_FAKE_ERROR_CODE);
KiTrap(KiTrap01, KI_PUSH_FAKE_ERROR_CODE);
KiTrap(KiTrap03, KI_PUSH_FAKE_ERROR_CODE);
@@ -1602,6 +1658,7 @@
KiTrap(KiDebugService, KI_PUSH_FAKE_ERROR_CODE);
KiTrap(KiSystemService, KI_PUSH_FAKE_ERROR_CODE | KI_NONVOLATILES_ONLY);
KiTrap(KiFastCallEntry, KI_FAST_SYSTEM_CALL);
+#endif
/*
* @implemented
Modified: branches/jcatena-branch/ntoskrnl/ntoskrnl.sln
URL:
http://svn.reactos.org/svn/reactos/branches/jcatena-branch/ntoskrnl/ntoskrn…
==============================================================================
--- branches/jcatena-branch/ntoskrnl/ntoskrnl.sln [iso-8859-1] (original)
+++ branches/jcatena-branch/ntoskrnl/ntoskrnl.sln [iso-8859-1] Thu Feb 4 17:35:49 2010
@@ -3,6 +3,7 @@
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ntoskrnl",
"ntoskrnl.vcproj", "{E432D40C-7443-4449-9182-8932E0AEAE99}"
ProjectSection(ProjectDependencies) = postProject
+ {E2A7291E-515F-4BAD-8E82-F77AA0815B47} = {E2A7291E-515F-4BAD-8E82-F77AA0815B47}
{33A96973-0632-4142-A411-36B937663234} = {33A96973-0632-4142-A411-36B937663234}
{45C60178-D657-45EC-9A99-EEE39C9845BF} = {45C60178-D657-45EC-9A99-EEE39C9845BF}
{53C05779-2821-431C-93CC-CDFE6942DE3C} = {53C05779-2821-431C-93CC-CDFE6942DE3C}
@@ -70,186 +71,97 @@
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
d|Win32 = d|Win32
- Debug|Win32 = Debug|Win32
r|Win32 = r|Win32
- Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E432D40C-7443-4449-9182-8932E0AEAE99}.d|Win32.ActiveCfg = d|Win32
{E432D40C-7443-4449-9182-8932E0AEAE99}.d|Win32.Build.0 = d|Win32
- {E432D40C-7443-4449-9182-8932E0AEAE99}.Debug|Win32.ActiveCfg = d|Win32
- {E432D40C-7443-4449-9182-8932E0AEAE99}.Debug|Win32.Build.0 = d|Win32
{E432D40C-7443-4449-9182-8932E0AEAE99}.r|Win32.ActiveCfg = r|Win32
{E432D40C-7443-4449-9182-8932E0AEAE99}.r|Win32.Build.0 = r|Win32
- {E432D40C-7443-4449-9182-8932E0AEAE99}.Release|Win32.ActiveCfg = r|Win32
- {E432D40C-7443-4449-9182-8932E0AEAE99}.Release|Win32.Build.0 = r|Win32
{A4D48188-969A-48AD-A7A8-9A0985EE7A7B}.d|Win32.ActiveCfg = d|Win32
{A4D48188-969A-48AD-A7A8-9A0985EE7A7B}.d|Win32.Build.0 = d|Win32
- {A4D48188-969A-48AD-A7A8-9A0985EE7A7B}.Debug|Win32.ActiveCfg = d|Win32
- {A4D48188-969A-48AD-A7A8-9A0985EE7A7B}.Debug|Win32.Build.0 = d|Win32
{A4D48188-969A-48AD-A7A8-9A0985EE7A7B}.r|Win32.ActiveCfg = r|Win32
{A4D48188-969A-48AD-A7A8-9A0985EE7A7B}.r|Win32.Build.0 = r|Win32
- {A4D48188-969A-48AD-A7A8-9A0985EE7A7B}.Release|Win32.ActiveCfg = r|Win32
- {A4D48188-969A-48AD-A7A8-9A0985EE7A7B}.Release|Win32.Build.0 = r|Win32
{32B0B2D6-5612-40E8-90F5-FB5CB4D76C6E}.d|Win32.ActiveCfg = d|Win32
{32B0B2D6-5612-40E8-90F5-FB5CB4D76C6E}.d|Win32.Build.0 = d|Win32
- {32B0B2D6-5612-40E8-90F5-FB5CB4D76C6E}.Debug|Win32.ActiveCfg = d|Win32
- {32B0B2D6-5612-40E8-90F5-FB5CB4D76C6E}.Debug|Win32.Build.0 = d|Win32
{32B0B2D6-5612-40E8-90F5-FB5CB4D76C6E}.r|Win32.ActiveCfg = r|Win32
{32B0B2D6-5612-40E8-90F5-FB5CB4D76C6E}.r|Win32.Build.0 = r|Win32
- {32B0B2D6-5612-40E8-90F5-FB5CB4D76C6E}.Release|Win32.ActiveCfg = r|Win32
- {32B0B2D6-5612-40E8-90F5-FB5CB4D76C6E}.Release|Win32.Build.0 = r|Win32
{590171C3-2DD0-4790-9BB7-A3601BD548A1}.d|Win32.ActiveCfg = d|Win32
{590171C3-2DD0-4790-9BB7-A3601BD548A1}.d|Win32.Build.0 = d|Win32
- {590171C3-2DD0-4790-9BB7-A3601BD548A1}.Debug|Win32.ActiveCfg = d|Win32
- {590171C3-2DD0-4790-9BB7-A3601BD548A1}.Debug|Win32.Build.0 = d|Win32
{590171C3-2DD0-4790-9BB7-A3601BD548A1}.r|Win32.ActiveCfg = r|Win32
{590171C3-2DD0-4790-9BB7-A3601BD548A1}.r|Win32.Build.0 = r|Win32
- {590171C3-2DD0-4790-9BB7-A3601BD548A1}.Release|Win32.ActiveCfg = r|Win32
- {590171C3-2DD0-4790-9BB7-A3601BD548A1}.Release|Win32.Build.0 = r|Win32
{33A96973-0632-4142-A411-36B937663234}.d|Win32.ActiveCfg = d|Win32
{33A96973-0632-4142-A411-36B937663234}.d|Win32.Build.0 = d|Win32
- {33A96973-0632-4142-A411-36B937663234}.Debug|Win32.ActiveCfg = d|Win32
- {33A96973-0632-4142-A411-36B937663234}.Debug|Win32.Build.0 = d|Win32
{33A96973-0632-4142-A411-36B937663234}.r|Win32.ActiveCfg = r|Win32
{33A96973-0632-4142-A411-36B937663234}.r|Win32.Build.0 = r|Win32
- {33A96973-0632-4142-A411-36B937663234}.Release|Win32.ActiveCfg = r|Win32
- {33A96973-0632-4142-A411-36B937663234}.Release|Win32.Build.0 = r|Win32
{93A5CAA3-5B14-41C4-961A-1D1A93FD9818}.d|Win32.ActiveCfg = d|Win32
{93A5CAA3-5B14-41C4-961A-1D1A93FD9818}.d|Win32.Build.0 = d|Win32
- {93A5CAA3-5B14-41C4-961A-1D1A93FD9818}.Debug|Win32.ActiveCfg = d|Win32
- {93A5CAA3-5B14-41C4-961A-1D1A93FD9818}.Debug|Win32.Build.0 = d|Win32
{93A5CAA3-5B14-41C4-961A-1D1A93FD9818}.r|Win32.ActiveCfg = r|Win32
{93A5CAA3-5B14-41C4-961A-1D1A93FD9818}.r|Win32.Build.0 = r|Win32
- {93A5CAA3-5B14-41C4-961A-1D1A93FD9818}.Release|Win32.ActiveCfg = r|Win32
- {93A5CAA3-5B14-41C4-961A-1D1A93FD9818}.Release|Win32.Build.0 = r|Win32
{A4C0117F-DBB0-4631-A408-D6E4D964E07C}.d|Win32.ActiveCfg = d|Win32
{A4C0117F-DBB0-4631-A408-D6E4D964E07C}.d|Win32.Build.0 = d|Win32
- {A4C0117F-DBB0-4631-A408-D6E4D964E07C}.Debug|Win32.ActiveCfg = d|Win32
- {A4C0117F-DBB0-4631-A408-D6E4D964E07C}.Debug|Win32.Build.0 = d|Win32
{A4C0117F-DBB0-4631-A408-D6E4D964E07C}.r|Win32.ActiveCfg = r|Win32
{A4C0117F-DBB0-4631-A408-D6E4D964E07C}.r|Win32.Build.0 = r|Win32
- {A4C0117F-DBB0-4631-A408-D6E4D964E07C}.Release|Win32.ActiveCfg = r|Win32
- {A4C0117F-DBB0-4631-A408-D6E4D964E07C}.Release|Win32.Build.0 = r|Win32
{8035D0FD-0157-4F0D-845B-DE9CCB48490D}.d|Win32.ActiveCfg = d|Win32
{8035D0FD-0157-4F0D-845B-DE9CCB48490D}.d|Win32.Build.0 = d|Win32
- {8035D0FD-0157-4F0D-845B-DE9CCB48490D}.Debug|Win32.ActiveCfg = d|Win32
- {8035D0FD-0157-4F0D-845B-DE9CCB48490D}.Debug|Win32.Build.0 = d|Win32
{8035D0FD-0157-4F0D-845B-DE9CCB48490D}.r|Win32.ActiveCfg = r|Win32
{8035D0FD-0157-4F0D-845B-DE9CCB48490D}.r|Win32.Build.0 = r|Win32
- {8035D0FD-0157-4F0D-845B-DE9CCB48490D}.Release|Win32.ActiveCfg = r|Win32
- {8035D0FD-0157-4F0D-845B-DE9CCB48490D}.Release|Win32.Build.0 = r|Win32
{7CCF80F4-FCA6-4ED7-8C52-E92B7A1B7116}.d|Win32.ActiveCfg = d|Win32
{7CCF80F4-FCA6-4ED7-8C52-E92B7A1B7116}.d|Win32.Build.0 = d|Win32
- {7CCF80F4-FCA6-4ED7-8C52-E92B7A1B7116}.Debug|Win32.ActiveCfg = d|Win32
- {7CCF80F4-FCA6-4ED7-8C52-E92B7A1B7116}.Debug|Win32.Build.0 = d|Win32
{7CCF80F4-FCA6-4ED7-8C52-E92B7A1B7116}.r|Win32.ActiveCfg = r|Win32
{7CCF80F4-FCA6-4ED7-8C52-E92B7A1B7116}.r|Win32.Build.0 = r|Win32
- {7CCF80F4-FCA6-4ED7-8C52-E92B7A1B7116}.Release|Win32.ActiveCfg = r|Win32
- {7CCF80F4-FCA6-4ED7-8C52-E92B7A1B7116}.Release|Win32.Build.0 = r|Win32
{D4F03490-B3A7-4389-AB68-1DF9EF82D51F}.d|Win32.ActiveCfg = d|Win32
{D4F03490-B3A7-4389-AB68-1DF9EF82D51F}.d|Win32.Build.0 = d|Win32
- {D4F03490-B3A7-4389-AB68-1DF9EF82D51F}.Debug|Win32.ActiveCfg = d|Win32
- {D4F03490-B3A7-4389-AB68-1DF9EF82D51F}.Debug|Win32.Build.0 = d|Win32
{D4F03490-B3A7-4389-AB68-1DF9EF82D51F}.r|Win32.ActiveCfg = r|Win32
{D4F03490-B3A7-4389-AB68-1DF9EF82D51F}.r|Win32.Build.0 = r|Win32
- {D4F03490-B3A7-4389-AB68-1DF9EF82D51F}.Release|Win32.ActiveCfg = r|Win32
- {D4F03490-B3A7-4389-AB68-1DF9EF82D51F}.Release|Win32.Build.0 = r|Win32
{E3324A8B-EE25-43F7-9895-44E3A8083EA3}.d|Win32.ActiveCfg = d|Win32
{E3324A8B-EE25-43F7-9895-44E3A8083EA3}.d|Win32.Build.0 = d|Win32
- {E3324A8B-EE25-43F7-9895-44E3A8083EA3}.Debug|Win32.ActiveCfg = d|Win32
- {E3324A8B-EE25-43F7-9895-44E3A8083EA3}.Debug|Win32.Build.0 = d|Win32
{E3324A8B-EE25-43F7-9895-44E3A8083EA3}.r|Win32.ActiveCfg = r|Win32
{E3324A8B-EE25-43F7-9895-44E3A8083EA3}.r|Win32.Build.0 = r|Win32
- {E3324A8B-EE25-43F7-9895-44E3A8083EA3}.Release|Win32.ActiveCfg = r|Win32
- {E3324A8B-EE25-43F7-9895-44E3A8083EA3}.Release|Win32.Build.0 = r|Win32
{17C7F7C1-6315-4856-9375-39F0B329FA09}.d|Win32.ActiveCfg = d|Win32
{17C7F7C1-6315-4856-9375-39F0B329FA09}.d|Win32.Build.0 = d|Win32
- {17C7F7C1-6315-4856-9375-39F0B329FA09}.Debug|Win32.ActiveCfg = d|Win32
- {17C7F7C1-6315-4856-9375-39F0B329FA09}.Debug|Win32.Build.0 = d|Win32
{17C7F7C1-6315-4856-9375-39F0B329FA09}.r|Win32.ActiveCfg = r|Win32
{17C7F7C1-6315-4856-9375-39F0B329FA09}.r|Win32.Build.0 = r|Win32
- {17C7F7C1-6315-4856-9375-39F0B329FA09}.Release|Win32.ActiveCfg = r|Win32
- {17C7F7C1-6315-4856-9375-39F0B329FA09}.Release|Win32.Build.0 = r|Win32
{F61DDEF4-A045-4AFD-AA0A-FAF6F6F97A21}.d|Win32.ActiveCfg = d|Win32
{F61DDEF4-A045-4AFD-AA0A-FAF6F6F97A21}.d|Win32.Build.0 = d|Win32
- {F61DDEF4-A045-4AFD-AA0A-FAF6F6F97A21}.Debug|Win32.ActiveCfg = d|Win32
- {F61DDEF4-A045-4AFD-AA0A-FAF6F6F97A21}.Debug|Win32.Build.0 = d|Win32
{F61DDEF4-A045-4AFD-AA0A-FAF6F6F97A21}.r|Win32.ActiveCfg = r|Win32
{F61DDEF4-A045-4AFD-AA0A-FAF6F6F97A21}.r|Win32.Build.0 = r|Win32
- {F61DDEF4-A045-4AFD-AA0A-FAF6F6F97A21}.Release|Win32.ActiveCfg = r|Win32
- {F61DDEF4-A045-4AFD-AA0A-FAF6F6F97A21}.Release|Win32.Build.0 = r|Win32
{431D55CC-8FCA-4298-919C-F3214EFDDA60}.d|Win32.ActiveCfg = d|Win32
{431D55CC-8FCA-4298-919C-F3214EFDDA60}.d|Win32.Build.0 = d|Win32
- {431D55CC-8FCA-4298-919C-F3214EFDDA60}.Debug|Win32.ActiveCfg = d|Win32
- {431D55CC-8FCA-4298-919C-F3214EFDDA60}.Debug|Win32.Build.0 = d|Win32
{431D55CC-8FCA-4298-919C-F3214EFDDA60}.r|Win32.ActiveCfg = r|Win32
{431D55CC-8FCA-4298-919C-F3214EFDDA60}.r|Win32.Build.0 = r|Win32
- {431D55CC-8FCA-4298-919C-F3214EFDDA60}.Release|Win32.ActiveCfg = r|Win32
- {431D55CC-8FCA-4298-919C-F3214EFDDA60}.Release|Win32.Build.0 = r|Win32
{45C60178-D657-45EC-9A99-EEE39C9845BF}.d|Win32.ActiveCfg = d|Win32
{45C60178-D657-45EC-9A99-EEE39C9845BF}.d|Win32.Build.0 = d|Win32
- {45C60178-D657-45EC-9A99-EEE39C9845BF}.Debug|Win32.ActiveCfg = d|Win32
- {45C60178-D657-45EC-9A99-EEE39C9845BF}.Debug|Win32.Build.0 = d|Win32
{45C60178-D657-45EC-9A99-EEE39C9845BF}.r|Win32.ActiveCfg = r|Win32
{45C60178-D657-45EC-9A99-EEE39C9845BF}.r|Win32.Build.0 = r|Win32
- {45C60178-D657-45EC-9A99-EEE39C9845BF}.Release|Win32.ActiveCfg = r|Win32
- {45C60178-D657-45EC-9A99-EEE39C9845BF}.Release|Win32.Build.0 = r|Win32
{45E70482-84C8-4846-A1BF-3C7A1BC94335}.d|Win32.ActiveCfg = d|Win32
{45E70482-84C8-4846-A1BF-3C7A1BC94335}.d|Win32.Build.0 = d|Win32
- {45E70482-84C8-4846-A1BF-3C7A1BC94335}.Debug|Win32.ActiveCfg = d|Win32
- {45E70482-84C8-4846-A1BF-3C7A1BC94335}.Debug|Win32.Build.0 = d|Win32
{45E70482-84C8-4846-A1BF-3C7A1BC94335}.r|Win32.ActiveCfg = r|Win32
{45E70482-84C8-4846-A1BF-3C7A1BC94335}.r|Win32.Build.0 = r|Win32
- {45E70482-84C8-4846-A1BF-3C7A1BC94335}.Release|Win32.ActiveCfg = r|Win32
- {45E70482-84C8-4846-A1BF-3C7A1BC94335}.Release|Win32.Build.0 = r|Win32
{33EB04DB-6651-4F5C-9035-807FF1E38842}.d|Win32.ActiveCfg = d|Win32
{33EB04DB-6651-4F5C-9035-807FF1E38842}.d|Win32.Build.0 = d|Win32
- {33EB04DB-6651-4F5C-9035-807FF1E38842}.Debug|Win32.ActiveCfg = d|Win32
- {33EB04DB-6651-4F5C-9035-807FF1E38842}.Debug|Win32.Build.0 = d|Win32
{33EB04DB-6651-4F5C-9035-807FF1E38842}.r|Win32.ActiveCfg = r|Win32
{33EB04DB-6651-4F5C-9035-807FF1E38842}.r|Win32.Build.0 = r|Win32
- {33EB04DB-6651-4F5C-9035-807FF1E38842}.Release|Win32.ActiveCfg = r|Win32
- {33EB04DB-6651-4F5C-9035-807FF1E38842}.Release|Win32.Build.0 = r|Win32
{AEADDBC1-092C-4180-8D34-12CA97CFB497}.d|Win32.ActiveCfg = d|Win32
{AEADDBC1-092C-4180-8D34-12CA97CFB497}.d|Win32.Build.0 = d|Win32
- {AEADDBC1-092C-4180-8D34-12CA97CFB497}.Debug|Win32.ActiveCfg = d|Win32
- {AEADDBC1-092C-4180-8D34-12CA97CFB497}.Debug|Win32.Build.0 = d|Win32
{AEADDBC1-092C-4180-8D34-12CA97CFB497}.r|Win32.ActiveCfg = r|Win32
{AEADDBC1-092C-4180-8D34-12CA97CFB497}.r|Win32.Build.0 = r|Win32
- {AEADDBC1-092C-4180-8D34-12CA97CFB497}.Release|Win32.ActiveCfg = r|Win32
- {AEADDBC1-092C-4180-8D34-12CA97CFB497}.Release|Win32.Build.0 = r|Win32
{53C05779-2821-431C-93CC-CDFE6942DE3C}.d|Win32.ActiveCfg = d|Win32
{53C05779-2821-431C-93CC-CDFE6942DE3C}.d|Win32.Build.0 = d|Win32
- {53C05779-2821-431C-93CC-CDFE6942DE3C}.Debug|Win32.ActiveCfg = d|Win32
- {53C05779-2821-431C-93CC-CDFE6942DE3C}.Debug|Win32.Build.0 = d|Win32
{53C05779-2821-431C-93CC-CDFE6942DE3C}.r|Win32.ActiveCfg = r|Win32
{53C05779-2821-431C-93CC-CDFE6942DE3C}.r|Win32.Build.0 = r|Win32
- {53C05779-2821-431C-93CC-CDFE6942DE3C}.Release|Win32.ActiveCfg = r|Win32
- {53C05779-2821-431C-93CC-CDFE6942DE3C}.Release|Win32.Build.0 = r|Win32
{3D9AC5B7-C29C-46F5-B3D8-C4388F37DB5C}.d|Win32.ActiveCfg = d|Win32
{3D9AC5B7-C29C-46F5-B3D8-C4388F37DB5C}.d|Win32.Build.0 = d|Win32
- {3D9AC5B7-C29C-46F5-B3D8-C4388F37DB5C}.Debug|Win32.ActiveCfg = d|Win32
- {3D9AC5B7-C29C-46F5-B3D8-C4388F37DB5C}.Debug|Win32.Build.0 = d|Win32
{3D9AC5B7-C29C-46F5-B3D8-C4388F37DB5C}.r|Win32.ActiveCfg = r|Win32
{3D9AC5B7-C29C-46F5-B3D8-C4388F37DB5C}.r|Win32.Build.0 = r|Win32
- {3D9AC5B7-C29C-46F5-B3D8-C4388F37DB5C}.Release|Win32.ActiveCfg = r|Win32
- {3D9AC5B7-C29C-46F5-B3D8-C4388F37DB5C}.Release|Win32.Build.0 = r|Win32
{97021AF5-ED87-4AA8-B116-2D53E5D6D528}.d|Win32.ActiveCfg = d|Win32
{97021AF5-ED87-4AA8-B116-2D53E5D6D528}.d|Win32.Build.0 = d|Win32
- {97021AF5-ED87-4AA8-B116-2D53E5D6D528}.Debug|Win32.ActiveCfg = d|Win32
- {97021AF5-ED87-4AA8-B116-2D53E5D6D528}.Debug|Win32.Build.0 = d|Win32
{97021AF5-ED87-4AA8-B116-2D53E5D6D528}.r|Win32.ActiveCfg = r|Win32
{97021AF5-ED87-4AA8-B116-2D53E5D6D528}.r|Win32.Build.0 = r|Win32
- {97021AF5-ED87-4AA8-B116-2D53E5D6D528}.Release|Win32.ActiveCfg = r|Win32
- {97021AF5-ED87-4AA8-B116-2D53E5D6D528}.Release|Win32.Build.0 = r|Win32
{E2A7291E-515F-4BAD-8E82-F77AA0815B47}.d|Win32.ActiveCfg = d|Win32
{E2A7291E-515F-4BAD-8E82-F77AA0815B47}.d|Win32.Build.0 = d|Win32
- {E2A7291E-515F-4BAD-8E82-F77AA0815B47}.Debug|Win32.ActiveCfg = d|Win32
{E2A7291E-515F-4BAD-8E82-F77AA0815B47}.r|Win32.ActiveCfg = r|Win32
{E2A7291E-515F-4BAD-8E82-F77AA0815B47}.r|Win32.Build.0 = r|Win32
- {E2A7291E-515F-4BAD-8E82-F77AA0815B47}.Release|Win32.ActiveCfg = r|Win32
- {E2A7291E-515F-4BAD-8E82-F77AA0815B47}.Release|Win32.Build.0 = r|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Modified: branches/jcatena-branch/ntoskrnl/ntoskrnl.vcproj
URL:
http://svn.reactos.org/svn/reactos/branches/jcatena-branch/ntoskrnl/ntoskrn…
==============================================================================
--- branches/jcatena-branch/ntoskrnl/ntoskrnl.vcproj [iso-8859-1] (original)
+++ branches/jcatena-branch/ntoskrnl/ntoskrnl.vcproj [iso-8859-1] Thu Feb 4 17:35:49
2010
@@ -63,7 +63,7 @@
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="mma3.lib mm.lib ke.lib ex.lib se.lib ob.lib ps.lib
cm.lib io.lib pnp.lib cc.lib csq.lib cmlib.lib fs.lib rossym.lib wdmguid.lib rt.lib
rtl.lib crtnt.lib cpu-i386.lib dbgp.lib kdw.lib hal.lib bootvid.lib kdcom.lib"
+ AdditionalDependencies="mma3.lib mm.lib $(trapx).lib ke.lib ex.lib se.lib ob.lib
ps.lib cm.lib io.lib pnp.lib cc.lib csq.lib cmlib.lib fs.lib rossym.lib wdmguid.lib rt.lib
rtl.lib crtnt.lib cpu-i386.lib dbgp.lib kdw.lib hal.lib bootvid.lib kdcom.lib"
OutputFile="$(OutDir)/ntoskrnl.exe"
AdditionalLibraryDirectories=""
IgnoreAllDefaultLibraries="true"
@@ -139,7 +139,7 @@
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="mma3.lib mm.lib ke.lib ex.lib se.lib ob.lib ps.lib
cm.lib io.lib pnp.lib cc.lib csq.lib cmlib.lib fs.lib rossym.lib wdmguid.lib rt.lib
rtl.lib crtnt.lib cpu-i386.lib dbgp.lib kdw.lib hal.lib bootvid.lib kdcom.lib"
+ AdditionalDependencies="mma3.lib mm.lib $(trapx).lib ke.lib ex.lib se.lib ob.lib
ps.lib cm.lib io.lib pnp.lib cc.lib csq.lib cmlib.lib fs.lib rossym.lib wdmguid.lib rt.lib
rtl.lib crtnt.lib cpu-i386.lib dbgp.lib kdw.lib hal.lib bootvid.lib kdcom.lib"
OutputFile="$(OutDir)/ntoskrnl.exe"
AdditionalLibraryDirectories=""
IgnoreAllDefaultLibraries="true"
Modified: branches/jcatena-branch/ntoskrnl/trap/i386/TrapStub.h
URL:
http://svn.reactos.org/svn/reactos/branches/jcatena-branch/ntoskrnl/trap/i3…
==============================================================================
--- branches/jcatena-branch/ntoskrnl/trap/i386/TrapStub.h [iso-8859-1] (original)
+++ branches/jcatena-branch/ntoskrnl/trap/i386/TrapStub.h [iso-8859-1] Thu Feb 4 17:35:49
2010
@@ -47,7 +47,7 @@
#if !(TRAP_STUB_FLAGS & TRAPF_NOSAVESEG)
mov KTRAP_FRAME.SegDs[esp], ds
mov KTRAP_FRAME.SegEs[esp], es
-#if (TRAP_STUB_FLAGS & TRAPF_SAVEFS)
+#if !(TRAP_STUB_FLAGS & TRAPF_NOSAVEFS)
mov KTRAP_FRAME.SegFs[esp], fs
#endif
#if !(TRAP_STUB_FLAGS & TRAPF_NOLOADDS)
@@ -88,7 +88,7 @@
#if !(TRAP_STUB_FLAGS & TRAPF_NOSAVESEG)
mov ds, KTRAP_FRAME.SegDs[esp]
mov es, KTRAP_FRAME.SegEs[esp]
-#if (TRAP_STUB_FLAGS & TRAPF_SAVEFS)
+#if !(TRAP_STUB_FLAGS & TRAPF_NOSAVEFS)
mov fs, KTRAP_FRAME.SegFs[esp]
#endif
#endif
@@ -101,10 +101,12 @@
mov edx, KTRAP_FRAME.Eip[esp]
add esp, dword ptr offset KTRAP_FRAME.V86Es
sti
- sysexit
+ CpuSysExit
#endif
mov ecx, KTRAP_FRAME.Ecx[esp]
mov edx, KTRAP_FRAME.Edx[esp]
+
+ add esp, KTRAP_FRAME_EIP
iretd
_ASM_END
Modified: branches/jcatena-branch/ntoskrnl/trap/i386/trap_asm.h
URL:
http://svn.reactos.org/svn/reactos/branches/jcatena-branch/ntoskrnl/trap/i3…
==============================================================================
--- branches/jcatena-branch/ntoskrnl/trap/i386/trap_asm.h [iso-8859-1] (original)
+++ branches/jcatena-branch/ntoskrnl/trap/i386/trap_asm.h [iso-8859-1] Thu Feb 4 17:35:49
2010
@@ -1,57 +1,5 @@
-#if 0
-_INLINEF KiTrapStub(HandlerName, Flags)
-{
- // alloc stack frame
- if (Flags & TRAPF_ERRORCODE)
- _ASM sub esp, KTRAP_FRAME.ErrCode
- else
- _ASM sub esp, KTRAP_FRAME.Eip
- // save volatile regs
- _ASM mov KTRAP_FRAME.Eax[esp], eax
- _ASM mov KTRAP_FRAME.Ecx[esp], ecx
- _ASM mov KTRAP_FRAME.Edx[esp], edx
- // save ds & es
- if (Flags & TRAPF_NOSAVEDSES)
- {
- _ASM mov KTRAP_FRAME.SegDs[esp], ds
- _ASM mov KTRAP_FRAME.SegEs[esp], es
- }
- // save fs
- if (Flags & TRAPF_NOSAVEFS)
- _ASM mov KTRAP_FRAME.SegFs[esp], fs
- // save non volatile regs
- if (Flags & TRAPF_SAVENOVOL)
- {
- _ASM mov KTRAP_FRAME.Esi[esp], ebp
- _ASM mov KTRAP_FRAME.Ebx[esp], ebx
- _ASM mov KTRAP_FRAME.Esi[esp], esi
- _ASM mov KTRAP_FRAME.Esi[esp], edi
- }
+_ONCE
- // call handler
- _ASM mov ecx, esp
- _ASM call HandlerName
+VOID _NORETURN
+KiTrapReturn(IN PKTRAP_FRAME TrapFrame);
- // return
- if (Flags & TRAPF_NOSAVEDSES)
- {
- _ASM mov ds, KTRAP_FRAME.SegDs[esp]
- _ASM mov es, KTRAP_FRAME.SegEs[esp]
- }
- if (Flags & TRAPF_NOSAVEFS)
- _ASM mov fs, KTRAP_FRAME.SegFs[esp]
- if (Flags & TRAPF_SAVENOVOL)
- {
- _ASM mov KTRAP_FRAME.Esi[esp], ebp
- _ASM mov KTRAP_FRAME.Ebx[esp], ebx
- _ASM mov KTRAP_FRAME.Esi[esp], esi
- _ASM mov KTRAP_FRAME.Esi[esp], edi
- }
- _ASM mov eax, KTRAP_FRAME.Eax[esp]
- _ASM mov ecx, KTRAP_FRAME.Ecx[esp]
- _ASM mov edx, KTRAP_FRAME.Edx[esp]
- _ASM add esp, KTRAP_FRAME.Eip
- _ASM iretd
-}
-#endif
-
Modified: branches/jcatena-branch/ntoskrnl/trap/trap.c
URL:
http://svn.reactos.org/svn/reactos/branches/jcatena-branch/ntoskrnl/trap/tr…
==============================================================================
--- branches/jcatena-branch/ntoskrnl/trap/trap.c [iso-8859-1] (original)
+++ branches/jcatena-branch/ntoskrnl/trap/trap.c [iso-8859-1] Thu Feb 4 17:35:49 2010
@@ -93,10 +93,12 @@
#define TRAP_STUB_FLAGS TRAPF_ERRORCODE
#include <TrapStub.h>
+#if 0
// 12 MC machine check
#define TRAP_STUB_NAME KiTrap12
#define TRAP_STUB_FLAGS 0
#include <TrapStub.h>
+#endif
// 13 XM simd exception
#define TRAP_STUB_NAME KiTrap13
@@ -115,7 +117,7 @@
#define TRAP_STUB_FLAGS 0
#include <TrapStub.h>
-#define TRAP_STUB_NAME KiDebugServiceVOID
+#define TRAP_STUB_NAME KiDebugService
#define TRAP_STUB_FLAGS 0
#include <TrapStub.h>
@@ -128,182 +130,12 @@
#define TRAP_STUB_FLAGS TRAPF_FASTSYSCALL
#include <TrapStub.h>
+#if 0
#define TRAP_STUB_NAME KiInterruptTemplate
#define TRAP_STUB_FLAGS TRAPF_VECTOR
#include <TrapStub.h>
+#endif
_NOWARN_POP
-/* TRAP EXIT CODE *************************************************************/
-//
-// Generic Exit Routine
-//
-VOID
-FASTCALL
-KiExitTrap(IN PKTRAP_FRAME TrapFrame, IN UCHAR Skip)
-{
- KTRAP_EXIT_SKIP_BITS SkipBits;
- PULONG ReturnStack;
-
- SkipBits.Bits = Skip;
-
- /* Debugging checks */
- // DPRINTT("DebugChecks\n");
- // KiExitTrapDebugChecks(TrapFrame, SkipBits);
-
- /* Restore the SEH handler chain */
- KeGetPcr()->Tib.ExceptionList = TrapFrame->ExceptionList;
-
- /* Check if the previous mode must be restored */
- if (__builtin_expect(!SkipBits.SkipPreviousMode, 0)) /* More INTS than SYSCALLs */
- {
- /* Restore it */
- KeGetCurrentThread()->PreviousMode = TrapFrame->PreviousPreviousMode;
- }
-
- /* Check if there are active debug registers */
- if (__builtin_expect(TrapFrame->Dr7 & ~DR7_RESERVED_MASK, 0))
- {
- /* Not handled yet */
- DbgPrint("Need Hardware Breakpoint Support!\n");
- DbgBreakPoint();
- while (TRUE);
- }
-
- /* Check if this was a V8086 trap */
- // DPRINTT("V8086\n");
- if (__builtin_expect(TrapFrame->EFlags & EFLAGS_V86_MASK, 0))
- {
- // DPRINTT("V8086 r\n");
- // KiTrapReturn(TrapFrame);
- return;
- }
-
- /* Check if the trap frame was edited */
- if (__builtin_expect(!(TrapFrame->SegCs & FRAME_EDITED), 0))
- {
- /*
- * An edited trap frame happens when we need to modify CS and/or ESP but
- * don't actually have a ring transition. This happens when a kernelmode
- * caller wants to perform an NtContinue to another kernel address, such
- * as in the case of SEH (basically, a longjmp), or to a user address.
- *
- * Therefore, the CPU never saved CS/ESP on the stack because we did not
- * get a trap frame due to a ring transition (there was no interrupt).
- * Even if we didn't want to restore CS to a new value, a problem occurs
- * due to the fact a normal RET would not work if we restored ESP since
- * RET would then try to read the result off the stack.
- *
- * The NT kernel solves this by adding 12 bytes of stack to the exiting
- * trap frame, in which EFLAGS, CS, and EIP are stored, and then saving
- * the ESP that's being requested into the ErrorCode field. It will then
- * exit with an IRET. This fixes both issues, because it gives the stack
- * some space where to hold the return address and then end up with the
- * wanted stack, and it uses IRET which allows a new CS to be inputted.
- *
- */
- // DPRINTT("edited\n");
- /* Set CS that is requested */
- TrapFrame->SegCs = TrapFrame->TempSegCs;
-
- /* First make space on requested stack */
- ReturnStack = (PULONG)(TrapFrame->TempEsp - 12);
- TrapFrame->ErrCode = (ULONG_PTR)ReturnStack;
-
- /* Now copy IRET frame */
- ReturnStack[0] = TrapFrame->Eip;
- ReturnStack[1] = TrapFrame->SegCs;
- ReturnStack[2] = TrapFrame->EFlags;
-
- /* Do special edited return */
- // DPRINTT("KiEditedTrapReturn\n");
- // KiEditedTrapReturn(TrapFrame);
- return;
- }
-
- /* Check if this is a user trap */
- if (__builtin_expect(KiUserTrap(TrapFrame), 1)) /* Ring 3 is where we spend time */
- {
- // DPRINTT("user\n");
- /* Check if segments should be restored */
- if (!SkipBits.SkipSegments)
- {
- /* Restore segments */
- CpuSetGs(TrapFrame->SegGs);
- CpuSetEs(TrapFrame->SegEs);
- CpuSetDs(TrapFrame->SegDs);
- CpuSetFs(TrapFrame->SegFs);
- }
-
- /* Always restore FS since it goes from KPCR to TEB */
- CpuSetFs(TrapFrame->SegFs);
- }
-
- /* Check for system call -- a system call skips volatiles! */
- if (__builtin_expect(SkipBits.SkipVolatiles, 0)) /* More INTs than SYSCALLs */
- {
- // DPRINTT("syscall\n");
- /* Kernel call or user call? */
- if (__builtin_expect(KiUserTrap(TrapFrame), 1)) /* More Ring 3 than 0 */
- {
- /* Is SYSENTER supported and/or enabled, or are we stepping code? */
- if (__builtin_expect((KiFastSystemCallDisable) ||
- (TrapFrame->EFlags & EFLAGS_TF), 0))
- {
- /* Exit normally */
- // DPRINTT("normally KiSystemCallTrapReturn\n");
- KiSystemCallTrapReturn(TrapFrame);
- }
- else
- {
- /* Restore user FS */
- CpuSetFs(KGDT_R3_TEB | RPL_MASK);
-
- /* Remove interrupt flag */
- TrapFrame->EFlags &= ~EFLAGS_INTERRUPT_MASK;
- __writeeflags(TrapFrame->EFlags);
-
- /* Exit through SYSEXIT */
- // DPRINTT("sysexit KiSystemCallSysExitReturn\n");
- // KiSystemCallSysExitReturn(TrapFrame);
- }
- }
- else
- {
- /* Restore EFLags */
- __writeeflags(TrapFrame->EFlags);
-
- /* Call is kernel, so do a jump back since this wasn't a real INT */
- // DPRINTT("kernel KiSystemCallReturn\n");
- // KiSystemCallReturn(TrapFrame);
- }
- }
- else
- {
- // DPRINTT("int KiTrapReturn\n");
- /* Return from interrupt */
- // KiTrapReturn(TrapFrame);
- }
-}
-
-
-
-VOID _FASTCALL
-KiEoiHelper(IN PKTRAP_FRAME TrapFrame)
-{
- // DPRINTT("\n");
- /* Disable interrupts until we return */
- CpuIntDisable();
-
- /* Check for APC delivery */
- KiCheckForApcDelivery(TrapFrame);
-
- /* Now exit the trap for real */
- // DPRINTT("KiExitTrap\n");
- KiExitTrap(TrapFrame, KTE_SKIP_PM_BIT);
- UNREACHABLE;
-}
-
-
-
Modified: branches/jcatena-branch/ntoskrnl/trap/trap.h
URL:
http://svn.reactos.org/svn/reactos/branches/jcatena-branch/ntoskrnl/trap/tr…
==============================================================================
--- branches/jcatena-branch/ntoskrnl/trap/trap.h [iso-8859-1] (original)
+++ branches/jcatena-branch/ntoskrnl/trap/trap.h [iso-8859-1] Thu Feb 4 17:35:49 2010
@@ -1,6 +1,8 @@
_ONCE
-#define DBGTRAPENTRY
+#define DBGTRAP DPRINT1
+// #define DBGTRAPENTRY DPRINT1("\n"); DbgDumpCpu(7|DBG_DUMPCPU_TSS);
DPRINT1("TrapFrame=%p:\n", TrapFrame); DbgDumpMem(TrapFrame, 0x80)
+#define DBGTRAPENTRY DPRINT1("\n"); DbgDumpCpu(7);
DPRINT1("TrapFrame=%p:\n", TrapFrame); DbgDumpMem(TrapFrame,
sizeof(KTRAP_FRAME));
// TRAP_STUB_FLAGS TrapStub x-macro flags
// trap type
@@ -9,8 +11,15 @@
#define TRAPF_FASTSYSCALL 4
// options
#define TRAPF_NOSAVESEG 0x100
-#define TRAPF_SAVEFS 0x200
+#define TRAPF_NOSAVEFS 0x200
#define TRAPF_SAVENOVOL 0x400
#define TRAPF_NOLOADDS 0x800
#include <trap_asm.h>
+
+VOID KiTrap02(VOID);
+
+// temporary
+VOID KiExitTrapDebugChecks(IN PKTRAP_FRAME TrapFrame, IN KTRAP_EXIT_SKIP_BITS SkipBits);
+VOID KiEnterTrap(IN PKTRAP_FRAME TrapFrame);
+VOID KiExitTrap(IN PKTRAP_FRAME TrapFrame, IN UCHAR Skip);
Modified: branches/jcatena-branch/ntoskrnl/trap/trap.vcproj
URL:
http://svn.reactos.org/svn/reactos/branches/jcatena-branch/ntoskrnl/trap/tr…
==============================================================================
--- branches/jcatena-branch/ntoskrnl/trap/trap.vcproj [iso-8859-1] (original)
+++ branches/jcatena-branch/ntoskrnl/trap/trap.vcproj [iso-8859-1] Thu Feb 4 17:35:49
2010
@@ -157,9 +157,17 @@
RelativePath=".\trap.c"
</File>
+ <File
+ RelativePath=".\TrapExit.c"
+ >
+ </File>
<Filter
Name="i386"
+ <File
+ RelativePath=".\i386\trap_asm.c"
+ >
+ </File>
</Filter>
</Filter>
<Filter