SVN maintenance:
Add svn:eol-style = native
Add svn:keywords = author date id revision
Modified: trunk/reactos/ntoskrnl/kd/kdinit.c
Modified: trunk/reactos/ntoskrnl/kdbg/i386/longjmp.S
Modified: trunk/reactos/ntoskrnl/kdbg/i386/setjmp.S
Modified: trunk/reactos/ntoskrnl/kdbg/kdb_expr.c
Modified: trunk/reactos/ntoskrnl/kdbg/kdb_string.c

Modified: trunk/reactos/ntoskrnl/kd/kdinit.c
--- trunk/reactos/ntoskrnl/kd/kdinit.c	2005-04-28 23:11:04 UTC (rev 14854)
+++ trunk/reactos/ntoskrnl/kd/kdinit.c	2005-04-28 23:14:54 UTC (rev 14855)
@@ -103,7 +103,7 @@
             KdpDebugMode.Serial = TRUE;
             
             /* Set the port to use */
-            SerialPortInfo.ComPort = Value;
+            SerialPortInfo.ComPort = Value;
             KdpPort = Value;
         }
     }
Property changes on: trunk/reactos/ntoskrnl/kd/kdinit.c
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native
Property changes on: trunk/reactos/ntoskrnl/kd/kdio.c
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native
Property changes on: trunk/reactos/ntoskrnl/kd/kdmain.c
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Modified: trunk/reactos/ntoskrnl/kdbg/i386/longjmp.S
--- trunk/reactos/ntoskrnl/kdbg/i386/longjmp.S	2005-04-28 23:11:04 UTC (rev 14854)
+++ trunk/reactos/ntoskrnl/kdbg/i386/longjmp.S	2005-04-28 23:14:54 UTC (rev 14855)
@@ -1,70 +1,70 @@
-        .file   "longjmp.S"
-/*
- * Copyright (C) 1998, 1999, Jonathan S. Shapiro.
- *
- * This file is part of the EROS Operating System.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2,
- * or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-        /*
-         * typedef struct {
-         *  unsigned long ebx, esi, edi;
-         *  unsigned long ebp;
-         *  unsigned long sp;
-         *  unsigned long pc;
-         * } jmp_buf[1];
-         */
-        
-        /*
-         * On entry, the stack to longjmp looks like:
-         *
-         *     value
-         *     ptr to jmp_buf
-         *     return PC
-         */
-
-.globl _longjmp
-_longjmp:
-        pushl   %ebp
-        movl    %esp,%ebp
-
-        movl    8(%ebp),%ecx            /* address of jmp_buf to ecx */
-        movl    12(%ebp),%eax           /* return value to %eax */
-        testl   %eax,%eax
-        jne     1f
-        incl    %eax                    /* return 1 if handed 0 */
-
-1:      
-        movl    (%ecx),%ebx             /* restore %ebx */
-        movl    4(%ecx),%esi            /* restore %esi */
-        movl    8(%ecx),%edi            /* restore %edi */
-        
-        /*
-         * From this instant on we are not running in a valid frame
-         */
-        
-        movl    12(%ecx),%ebp           /* restore %ebp */
-        movl    16(%ecx),%esp           /* restore %esp */
-        /* movl 20(%ecx),%eax           return PC */
-
-        /*
-         * Since we are abandoning the stack in any case, 
-         * there isn't much point in doing the usual return 
-         * discipline.
-         */
-        
-        jmpl    *20(%ecx)
-	
+        .file   "longjmp.S"
+/*
+ * Copyright (C) 1998, 1999, Jonathan S. Shapiro.
+ *
+ * This file is part of the EROS Operating System.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2,
+ * or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+        /*
+         * typedef struct {
+         *  unsigned long ebx, esi, edi;
+         *  unsigned long ebp;
+         *  unsigned long sp;
+         *  unsigned long pc;
+         * } jmp_buf[1];
+         */
+        
+        /*
+         * On entry, the stack to longjmp looks like:
+         *
+         *     value
+         *     ptr to jmp_buf
+         *     return PC
+         */
+
+.globl _longjmp
+_longjmp:
+        pushl   %ebp
+        movl    %esp,%ebp
+
+        movl    8(%ebp),%ecx            /* address of jmp_buf to ecx */
+        movl    12(%ebp),%eax           /* return value to %eax */
+        testl   %eax,%eax
+        jne     1f
+        incl    %eax                    /* return 1 if handed 0 */
+
+1:      
+        movl    (%ecx),%ebx             /* restore %ebx */
+        movl    4(%ecx),%esi            /* restore %esi */
+        movl    8(%ecx),%edi            /* restore %edi */
+        
+        /*
+         * From this instant on we are not running in a valid frame
+         */
+        
+        movl    12(%ecx),%ebp           /* restore %ebp */
+        movl    16(%ecx),%esp           /* restore %esp */
+        /* movl 20(%ecx),%eax           return PC */
+
+        /*
+         * Since we are abandoning the stack in any case, 
+         * there isn't much point in doing the usual return 
+         * discipline.
+         */
+        
+        jmpl    *20(%ecx)
+	
Property changes on: trunk/reactos/ntoskrnl/kdbg/i386/longjmp.S
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Modified: trunk/reactos/ntoskrnl/kdbg/i386/setjmp.S
--- trunk/reactos/ntoskrnl/kdbg/i386/setjmp.S	2005-04-28 23:11:04 UTC (rev 14854)
+++ trunk/reactos/ntoskrnl/kdbg/i386/setjmp.S	2005-04-28 23:14:54 UTC (rev 14855)
@@ -1,59 +1,59 @@
-        .file   "setjmp.S"
-/*
- * Copyright (C) 1998, 1999, Jonathan S. Shapiro.
- *
- * This file is part of the EROS Operating System.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2,
- * or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-/* #include <eros/i486/asm.h> */
-        
-        
-        /*
-         * typedef struct {
-         *  unsigned long ebx, esi, edi;
-         *  unsigned long ebp;
-         *  unsigned long sp;
-         *  unsigned long pc;
-         * } jmp_buf[1];
-         */
-        
-        /*
-         * On entry, the stack to setjmp looks like:
-         *
-         *     ptr to jmp_buf
-         *     return PC
-         */
-.globl _setjmp
-_setjmp:	
-        pushl   %ebp
-        movl    %esp,%ebp
-        
-        movl    0x8(%ebp),%eax          /* address of jmp_buf to eax */
-        movl    %ebx,(%eax)             /* save %ebx */
-        movl    %esi,4(%eax)            /* save %esi */
-        movl    %edi,8(%eax)            /* save %edi */
-        leal    8(%ebp),%edx            /* calling proc's esp, not ours! */
-        movl    %edx,16(%eax)
-        movl    4(%ebp), %edx           /* save return PC */
-        movl    %edx,20(%eax)
-        movl    0(%ebp),%edx            /* calling proc's ebp, not ours! */
-        movl    %edx,12(%eax)
-
-        xorl    %eax,%eax               /* return 0 the first time */
-        leave
-        ret	$4
-
+        .file   "setjmp.S"
+/*
+ * Copyright (C) 1998, 1999, Jonathan S. Shapiro.
+ *
+ * This file is part of the EROS Operating System.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2,
+ * or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/* #include <eros/i486/asm.h> */
+        
+        
+        /*
+         * typedef struct {
+         *  unsigned long ebx, esi, edi;
+         *  unsigned long ebp;
+         *  unsigned long sp;
+         *  unsigned long pc;
+         * } jmp_buf[1];
+         */
+        
+        /*
+         * On entry, the stack to setjmp looks like:
+         *
+         *     ptr to jmp_buf
+         *     return PC
+         */
+.globl _setjmp
+_setjmp:	
+        pushl   %ebp
+        movl    %esp,%ebp
+        
+        movl    0x8(%ebp),%eax          /* address of jmp_buf to eax */
+        movl    %ebx,(%eax)             /* save %ebx */
+        movl    %esi,4(%eax)            /* save %esi */
+        movl    %edi,8(%eax)            /* save %edi */
+        leal    8(%ebp),%edx            /* calling proc's esp, not ours! */
+        movl    %edx,16(%eax)
+        movl    4(%ebp), %edx           /* save return PC */
+        movl    %edx,20(%eax)
+        movl    0(%ebp),%edx            /* calling proc's ebp, not ours! */
+        movl    %edx,12(%eax)
+
+        xorl    %eax,%eax               /* return 0 the first time */
+        leave
+        ret	$4
+
Property changes on: trunk/reactos/ntoskrnl/kdbg/i386/setjmp.S
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native
Property changes on: trunk/reactos/ntoskrnl/kdbg/kdb_cli.c
___________________________________________________________________
Name: svn:keywords
   + author date id revision
Name: svn:eol-style
   + native

Modified: trunk/reactos/ntoskrnl/kdbg/kdb_expr.c
--- trunk/reactos/ntoskrnl/kdbg/kdb_expr.c	2005-04-28 23:11:04 UTC (rev 14854)
+++ trunk/reactos/ntoskrnl/kdbg/kdb_expr.c	2005-04-28 23:14:54 UTC (rev 14855)
@@ -1,1081 +1,1081 @@
-/*
- *  ReactOS kernel
- *  Copyright (C) 2005 ReactOS Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-/* $Id$
- *
- * PROJECT:         ReactOS kernel
- * FILE:            ntoskrnl/dbg/kdb_expr.c
- * PURPOSE:         Kernel debugger expression evaluation
- * PROGRAMMER:      Gregor Anich (blight@blight.eu.org)
- * UPDATE HISTORY:
- *                  Created 15/01/2005
- */
-
-/* Note:
- *
- * The given expression is parsed and stored in reverse polish notation,
- * then it is evaluated and the result is returned.
- */
-
-/* INCLUDES ******************************************************************/
-
-#include <ntoskrnl.h>
-#include <internal/kdb.h>
-#define NDEBUG
-#include <internal/debug.h>
-
-/* TYPES *********************************************************************/
-typedef enum _RPN_OP_TYPE
-{
-   RpnOpNop,
-   RpnOpBinaryOperator,
-   RpnOpUnaryOperator,
-   RpnOpImmediate,
-   RpnOpRegister,
-   RpnOpDereference
-} RPN_OP_TYPE;
-
-typedef ULONGLONG (*RPN_BINARY_OPERATOR)(ULONGLONG a, ULONGLONG b);
-
-typedef struct _RPN_OP
-{
-   RPN_OP_TYPE  Type;
-   ULONG        CharacterOffset;
-   union {
-      /* RpnOpBinaryOperator */
-      RPN_BINARY_OPERATOR  BinaryOperator;
-      /* RpnOpImmediate */
-      ULONGLONG            Immediate;
-      /* RpnOpRegister */
-      UCHAR                Register;
-      /* RpnOpDereference */
-      UCHAR                DerefMemorySize;
-   } Data;
-} RPN_OP, *PRPN_OP;
-
-typedef struct _RPN_STACK
-{
-   ULONG   Size;     /* Number of RPN_OPs on Ops */
-   ULONG   Sp;       /* Stack pointer */
-   RPN_OP  Ops[1];   /* Array of RPN_OPs */
-} RPN_STACK, *PRPN_STACK;
-
-/* DEFINES *******************************************************************/
-#define stricmp _stricmp
-
-#ifndef RTL_FIELD_SIZE
-# define RTL_FIELD_SIZE(type, field) (sizeof(((type *)0)->field))
-#endif
-
-#define CONST_STRCPY(dst, src) \
-        do { if ((dst) != NULL) { memcpy(dst, src, sizeof(src)); } } while (0);
-
-#define RPN_OP_STACK_SIZE     256
-#define RPN_VALUE_STACK_SIZE  256
-
-/* GLOBALS *******************************************************************/
-STATIC struct { ULONG Size; ULONG Sp; RPN_OP Ops[RPN_OP_STACK_SIZE]; } RpnStack = { RPN_OP_STACK_SIZE, 0 };
-
-STATIC CONST struct { PCHAR Name; UCHAR Offset; UCHAR Size; } RegisterToTrapFrame[] =
-{
-   {"eip",     FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Eip),     RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Eip)},
-   {"eflags",  FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Eflags),  RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Eflags)},
-   {"eax",     FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Eax),     RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Eax)},
-   {"ebx",     FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Ebx),     RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Ebx)},
-   {"ecx",     FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Ecx),     RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Ecx)},
-   {"edx",     FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Edx),     RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Edx)},
-   {"esi",     FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Esi),     RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Esi)},
-   {"edi",     FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Edi),     RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Edi)},
-   {"esp",     FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Esp),     RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Esp)},
-   {"ebp",     FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Ebp),     RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Ebp)},
-   {"cs",      FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Cs),      2 }, /* Use only the lower 2 bytes */
-   {"ds",      FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Ds),      RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Ds)},
-   {"es",      FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Es),      RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Es)},
-   {"fs",      FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Fs),      RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Fs)},
-   {"gs",      FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Gs),      RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Gs)},
-   {"ss",      FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Ss),      RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Ss)},
-   {"dr0",     FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Dr0),     RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Dr0)},
-   {"dr1",     FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Dr1),     RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Dr1)},
-   {"dr2",     FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Dr2),     RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Dr2)},
-   {"dr3",     FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Dr3),     RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Dr3)},
-   {"dr6",     FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Dr6),     RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Dr6)},
-   {"dr7",     FIELD_OFFSET(KDB_KTRAP_FRAME, Tf.Dr7),     RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Tf.Dr7)},
-   {"cr0",     FIELD_OFFSET(KDB_KTRAP_FRAME, Cr0),        RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Cr0)},
-   {"cr2",     FIELD_OFFSET(KDB_KTRAP_FRAME, Cr2),        RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Cr2)},
-   {"cr3",     FIELD_OFFSET(KDB_KTRAP_FRAME, Cr3),        RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Cr3)},
-   {"cr4",     FIELD_OFFSET(KDB_KTRAP_FRAME, Cr4),        RTL_FIELD_SIZE(KDB_KTRAP_FRAME, Cr4)}
-};
-STATIC CONST INT RegisterToTrapFrameCount =
-                     sizeof (RegisterToTrapFrame) / sizeof (RegisterToTrapFrame[0]);
-
-/* FUNCTIONS *****************************************************************/
-
-ULONGLONG
-RpnBinaryOperatorAdd(ULONGLONG a, ULONGLONG b)
-{
-   return a + b;
-}
-
-ULONGLONG
-RpnBinaryOperatorSub(ULONGLONG a, ULONGLONG b)
-{
-   return a - b;
-}
-
-ULONGLONG
-RpnBinaryOperatorMul(ULONGLONG a, ULONGLONG b)
-{
-   return a * b;
-}
-
-ULONGLONG
-RpnBinaryOperatorDiv(ULONGLONG a, ULONGLONG b)
-{
-
-   return a / b;
-}
-
-ULONGLONG
-RpnBinaryOperatorMod(ULONGLONG a, ULONGLONG b)
-{
-   return a % b;
-}
-
-ULONGLONG
-RpnBinaryOperatorEquals(ULONGLONG a, ULONGLONG b)
-{
-   return (a == b);
-}
-
-ULONGLONG
-RpnBinaryOperatorNotEquals(ULONGLONG a, ULONGLONG b)
-{
-   return (a != b);
-}
-
-ULONGLONG
-RpnBinaryOperatorLessThan(ULONGLONG a, ULONGLONG b)
-{
-   return (a < b);
-}
-
-ULONGLONG
-RpnBinaryOperatorLessThanOrEquals(ULONGLONG a, ULONGLONG b)
-{
-   return (a <= b);
-}
-
-ULONGLONG
-RpnBinaryOperatorGreaterThan(ULONGLONG a, ULONGLONG b)
-{
-   return (a > b);
-}
-
-ULONGLONG
-RpnBinaryOperatorGreaterThanOrEquals(ULONGLONG a, ULONGLONG b)
-{
-   return (a >= b);
-}
-
-/*!\brief Dumps the given RPN stack content
- *
- * \param Stack  Pointer to a RPN_STACK structure.
- */
-VOID
-RpnpDumpStack(
-   IN PRPN_STACK Stack)
-{
-   ULONG ul;
-
-   ASSERT(Stack != NULL);
-   DbgPrint("\nStack size: %ld\n", Stack->Sp);
-   for (ul = 0; ul < Stack->Sp; ul++)
-   {
-      PRPN_OP Op = Stack->Ops + ul;
-      switch (Op->Type)
-      {
-      case RpnOpNop:
-         DbgPrint("NOP,");
-         break;
-         
-      case RpnOpImmediate:
-         DbgPrint("0x%I64x,", Op->Data.Immediate);
-         break;
-         
-      case RpnOpBinaryOperator:
-         if (Op->Data.BinaryOperator == RpnBinaryOperatorAdd)
-            DbgPrint("+,");
-         else if (Op->Data.BinaryOperator == RpnBinaryOperatorSub)
-            DbgPrint("-,");
-         else if (Op->Data.BinaryOperator == RpnBinaryOperatorMul)
-            DbgPrint("*,");
-         else if (Op->Data.BinaryOperator == RpnBinaryOperatorDiv)
-            DbgPrint("/,");
-         else if (Op->Data.BinaryOperator == RpnBinaryOperatorMod)
-            DbgPrint("%%,");
-         else if (Op->Data.BinaryOperator == RpnBinaryOperatorEquals)
-            DbgPrint("==,");
-         else if (Op->Data.BinaryOperator == RpnBinaryOperatorNotEquals)
-            DbgPrint("!=,");
-         else if (Op->Data.BinaryOperator == RpnBinaryOperatorLessThan)
-            DbgPrint("<,");
-         else if (Op->Data.BinaryOperator == RpnBinaryOperatorLessThanOrEquals)
-            DbgPrint("<=,");
-         else if (Op->Data.BinaryOperator == RpnBinaryOperatorGreaterThan)
-            DbgPrint(">,");
-         else if (Op->Data.BinaryOperator == RpnBinaryOperatorGreaterThanOrEquals)
-            DbgPrint(">=,");
-         else
-            DbgPrint("UNKNOWN OP,");
-         break;
-         
-      case RpnOpRegister:
-         DbgPrint("%s,", RegisterToTrapFrame[Op->Data.Register].Name);
-         break;
-         
-      case RpnOpDereference:
-         DbgPrint("[%s],",
-                (Op->Data.DerefMemorySize == 1) ? ("byte") :
-                ((Op->Data.DerefMemorySize == 2) ? ("word") :
-                 ((Op->Data.DerefMemorySize == 4) ? ("dword") : ("qword"))
-                )
-               );
-         break;
-         
-      default:
-         DbgPrint("\nUnsupported Type: %d\n", Op->Type);
-         ul = Stack->Sp;
-         break;
-      }
-   }
-   DbgPrint("\n");
-}
-
-/*!\brief Clears the given RPN stack.
- *
- * \param Stack  Pointer to a RPN_STACK structure.
- */
-STATIC VOID
-RpnpClearStack(
-   OUT PRPN_STACK Stack)
-{
-   ASSERT(Stack != NULL);
-   Stack->Sp = 0;
-}
-
-/*!\brief Pushes an RPN_OP onto the stack.
- *
- * \param Stack  Pointer to a RPN_STACK structure.
- * \param Op     RPN_OP to be copied onto the stack.
- */
-STATIC BOOLEAN
-RpnpPushStack(
-   IN OUT PRPN_STACK Stack,
-   IN     PRPN_OP Op)
-{
-   ASSERT(Stack != NULL);
-   ASSERT(Op != NULL);
-
-   if (Stack->Sp >= Stack->Size)
-      return FALSE;
-
-   memcpy(Stack->Ops + Stack->Sp, Op, sizeof (RPN_OP));
-   Stack->Sp++;
-   return TRUE;
-}
-
-/*!\brief Pops the top op from the stack.
- *
- * \param Stack  Pointer to a RPN_STACK structure.
- * \param Op     Pointer to an RPN_OP to store the popped op into (can be NULL).
- *
- * \retval TRUE   Success.
- * \retval FALSE  Failure (stack empty)
- */
-STATIC BOOLEAN
-RpnpPopStack(
-   IN OUT PRPN_STACK Stack,
-   OUT    PRPN_OP Op  OPTIONAL)
-{
-   ASSERT(Stack != NULL);
-
-   if (Stack->Sp == 0)
-      return FALSE;
-
-   Stack->Sp--;
-   if (Op != NULL)
-      memcpy(Op, Stack->Ops + Stack->Sp, sizeof (RPN_OP));
-   return TRUE;
-}
-
-/*!\brief Gets the top op from the stack (not popping it)
- *
- * \param Stack  Pointer to a RPN_STACK structure.
- * \param Op     Pointer to an RPN_OP to copy the top op into.
- *
- * \retval TRUE   Success.
- * \retval FALSE  Failure (stack empty)
- */
-STATIC BOOLEAN
-RpnpTopStack(
-   IN  PRPN_STACK Stack,
-   OUT PRPN_OP Op)
-{
-   ASSERT(Stack != NULL);
-   ASSERT(Op != NULL);
-
-   if (Stack->Sp == 0)
-      return FALSE;
-
-   memcpy(Op, Stack->Ops + Stack->Sp - 1, sizeof (RPN_OP));
-   return TRUE;
-}
-
-/*!\brief Parses an expression.
- *
- * This functions parses the given expression until the end of string or a closing
- * brace is found. As the function parses the string it pushes RPN_OPs onto the
- * stack.
- *
- * Examples: 1+2*3 ; eax+10 ; (eax+16) * (ebx+4) ; dword[eax]
- *
- * \param Stack            Pointer to a RPN_STACK structure.
- * \param Expression       String to parse.
- * \param CharacterOffset  Character offset of the subexpression from the beginning of the expression.
- * \param End              On success End is set to the character at which parsing stopped.
- * \param ErrOffset        On failure this is set to the character offset at which the error occoured.
- * \param ErrMsg           On failure a message describing the problem is copied into this buffer (128 bytes)
- *
- * \retval TRUE   Success.
- * \retval FALSE  Failure.
- */
-STATIC BOOLEAN
-RpnpParseExpression(
-   IN  PRPN_STACK Stack,
-   IN  PCHAR Expression,
-   OUT PCHAR *End  OPTIONAL,
-   IN  ULONG CharacterOffset,
-   OUT PLONG ErrOffset  OPTIONAL,
-   OUT PCHAR ErrMsg  OPTIONAL)
-{
-   PCHAR p = Expression;
-   PCHAR pend;
-   PCHAR Operator = NULL;
-   LONG OperatorOffset = -1;
-   RPN_OP RpnOp;
-   RPN_OP PoppedOperator;
-   BOOLEAN HavePoppedOperator = FALSE;
-   RPN_OP ComparativeOp;
-   BOOLEAN ComparativeOpFilled = FALSE;
-   BOOLEAN IsComparativeOp;
-   INT i, i2;
-   ULONG ul;
-   UCHAR MemorySize;
-   CHAR Buffer[16];
-   BOOLEAN First;
-
-   ASSERT(Stack != NULL);
-   ASSERT(Expression != NULL);
-
-   First = TRUE;
-   for (;;)
-   {
-      /* Skip whitespace */
-      while (isspace(*p))
-      {
-         p++;
-         CharacterOffset++;
-      }
-      
-      /* Check for end of expression */
-      if (p[0] == '\0' || p[0] == ')' || p[0] == ']')
-         break;
-
-      if (!First)
-      {
-         /* Remember operator */
-         Operator = p++;
-         OperatorOffset = CharacterOffset++;;
-      
-         /* Pop operator (to get the right operator precedence) */
-         HavePoppedOperator = FALSE;
-         if (*Operator == '*' || *Operator == '/' || *Operator == '%')
-         {
-            if (RpnpTopStack(Stack, &PoppedOperator) &&
-                PoppedOperator.Type == RpnOpBinaryOperator &&
-                (PoppedOperator.Data.BinaryOperator == RpnBinaryOperatorAdd ||
-                PoppedOperator.Data.BinaryOperator == RpnBinaryOperatorSub))
-            {
-               RpnpPopStack(Stack, NULL);
-               HavePoppedOperator = TRUE;
-            }
-            else if (PoppedOperator.Type == RpnOpNop)
-            {
-               RpnpPopStack(Stack, NULL);
-               /* Discard the NOP - it was only pushed to indicate there was a
-                * closing brace, so the previous operator shouldn't be popped.
-                */
-            }
-         }
-         else if ((Operator[0] == '=' && Operator[1] == '=') ||
-                  (Operator[0] == '!' && Operator[1] == '=') ||
-                  Operator[0] == '<' || Operator[0] == '>')
-         {
-            if (Operator[0] == '=' || Operator[0] == '!' ||
-                (Operator[0] == '<' && Operator[1] == '=') ||
-                (Operator[0] == '>' && Operator[1] == '='))
-            {
-               p++;
-               CharacterOffset++;
-            }
-#if 0
-            /* Parse rest of expression */
-            if (!RpnpParseExpression(Stack, p + 1, &pend, CharacterOffset + 1,
-                                     ErrOffset, ErrMsg))
-            {
-               return FALSE;
-            }
-            else if (pend == p + 1)
-            {
-               CONST_STRCPY(ErrMsg, "Expression expected");
-               if (ErrOffset != NULL)
-                  *ErrOffset = CharacterOffset + 1;
-               return FALSE;
-            }
-            goto end_of_expression; /* return */
-#endif
-         }
-         else if (Operator[0] != '+' && Operator[0] != '-')
-         {
-            CONST_STRCPY(ErrMsg, "Operator expected");
-            if (ErrOffset != NULL)
-               *ErrOffset = OperatorOffset;
-            return FALSE;
-         }
-
-         /* Skip whitespace */
-         while (isspace(*p))
-         {
-            p++;
-            CharacterOffset++;
-         }
-      }
-
-      /* Get operand */
-      MemorySize = sizeof(ULONG_PTR); /* default to pointer size */
-get_operand:
-      i = strcspn(p, "+-*/%()[]<>!=");
-      if (i > 0)
-      {
-         i2 = i;
-
-         /* Copy register name/memory size */
-         while (isspace(p[--i2]));
-         i2 = min(i2 + 1, sizeof (Buffer) - 1);
-         strncpy(Buffer, p, i2);
-         Buffer[i2] = '\0';
-
-         /* Memory size prefix */
-         if (p[i] == '[')
-         {
-            if (stricmp(Buffer, "byte") == 0)
-               MemorySize = 1;
-            else if (stricmp(Buffer, "word") == 0)
-               MemorySize = 2;
-            else if (stricmp(Buffer, "dword") == 0)
-               MemorySize = 4;
-            else if (stricmp(Buffer, "qword") == 0)
-               MemorySize = 8;
-            else
-            {
-               CONST_STRCPY(ErrMsg, "Invalid memory size prefix");
-               if (ErrOffset != NULL)
-                  *ErrOffset = CharacterOffset;
-               return FALSE;
-            }
-            
-            p += i;
-            CharacterOffset += i;
-            goto get_operand;
-         }
-
-         /* Try to find register */
-         for (i = 0; i < RegisterToTrapFrameCount; i++)
-         {
-            if (stricmp(RegisterToTrapFrame[i].Name, Buffer) == 0)
-               break;
-         }
-         if (i < RegisterToTrapFrameCount)
-         {
-            RpnOp.Type = RpnOpRegister;
-            RpnOp.CharacterOffset = CharacterOffset;
-            RpnOp.Data.Register = i;
-            i = strlen(RegisterToTrapFrame[i].Name);
-            CharacterOffset += i;
-            p += i;
-         }
-         else
-         {
-            /* Immediate value */
-            /* FIXME: Need string to ULONGLONG function */
-            ul = strtoul(p, &pend, 0);
-            if (p != pend)
-            {
-               RpnOp.Type = RpnOpImmediate;
-               RpnOp.CharacterOffset = CharacterOffset;
-               RpnOp.Data.Immediate = (ULONGLONG)ul;
-               CharacterOffset += pend - p;
-               p = pend;
-            }
-            else
-            {
-               CONST_STRCPY(ErrMsg, "Operand expected");
-               if (ErrOffset != NULL)
-                  *ErrOffset = CharacterOffset;
-               return FALSE;
-            }
-         }
-
-         /* Push operand */
-         if (!RpnpPushStack(Stack, &RpnOp))
-         {
-            CONST_STRCPY(ErrMsg, "RPN op stack overflow");
-            if (ErrOffset != NULL)
-               *ErrOffset = -1;
-            return FALSE;
-         }
-      }
-      else if (i == 0)
-      {
-         if (p[0] == '(' || p[0] == '[') /* subexpression */
-         {
-            if (!RpnpParseExpression(Stack, p + 1, &pend, CharacterOffset + 1,
-                                     ErrOffset, ErrMsg))
-            {
-               return FALSE;
-            }
-            else if (pend == p + 1)
-            {
-               CONST_STRCPY(ErrMsg, "Expression expected");
-               if (ErrOffset != NULL)
-                  *ErrOffset = CharacterOffset + 1;
-               return FALSE;
-            }
-
-            if (p[0] == '[') /* dereference */
-            {
-               ASSERT(MemorySize == 1 || MemorySize == 2 ||
-                      MemorySize == 4 || MemorySize == 8);
-               if (pend[0] != ']')
-               {
-                  CONST_STRCPY(ErrMsg, "']' expected");
-                  if (ErrOffset != NULL)
-                     *ErrOffset = CharacterOffset + (pend - p);
-                  return FALSE;
-               }
-               RpnOp.Type = RpnOpDereference;
-               RpnOp.CharacterOffset = CharacterOffset;
-               RpnOp.Data.DerefMemorySize = MemorySize;
-               if (!RpnpPushStack(Stack, &RpnOp))
-               {
-                  CONST_STRCPY(ErrMsg, "RPN op stack overflow");
-                  if (ErrOffset != NULL)
-                     *ErrOffset = -1;
-                  return FALSE;
-               }
-            }
-            else /* p[0] == '(' */
-            {
-               if (pend[0] != ')')
-               {
-                  CONST_STRCPY(ErrMsg, "')' expected");
-                  if (ErrOffset != NULL)
-                     *ErrOffset = CharacterOffset + (pend - p);
-                  return FALSE;
-               }
-            }
-
-            /* Push a "nop" to prevent popping of the + operator (which would
-             * result in (10+10)/2 beeing evaluated as 15)
-             */
-            RpnOp.Type = RpnOpNop;
-            if (!RpnpPushStack(Stack, &RpnOp))
-            {
-               CONST_STRCPY(ErrMsg, "RPN op stack overflow");
-               if (ErrOffset != NULL)
-                  *ErrOffset = -1;
-               return FALSE;
-            }
-
-            /* Skip closing brace/bracket */
-            pend++;
-            
-            CharacterOffset += pend - p;
-            p = pend;
-         }
-         else if (First && p[0] == '-') /* Allow expressions like "- eax" */
-         {
-            RpnOp.Type = RpnOpImmediate;
-            RpnOp.CharacterOffset = CharacterOffset;
-            RpnOp.Data.Immediate = 0;
-            if (!RpnpPushStack(Stack, &RpnOp))
-            {
-               CONST_STRCPY(ErrMsg, "RPN op stack overflow");
-               if (ErrOffset != NULL)
-                  *ErrOffset = -1;
-               return FALSE;
-            }
-         }
-         else
-         {
-            CONST_STRCPY(ErrMsg, "Operand expected");
-            if (ErrOffset != NULL)
-               *ErrOffset = CharacterOffset;
-            return FALSE;
-         }
-      }
-      else
-      {
-         CONST_STRCPY(ErrMsg, "strcspn() failed");
-         if (ErrOffset != NULL)
-            *ErrOffset = -1;
-         return FALSE;
-      }
-
-      if (!First)
-      {
-         /* Push operator */
-         RpnOp.CharacterOffset = OperatorOffset;
-         RpnOp.Type = RpnOpBinaryOperator;
-         IsComparativeOp = FALSE;
-         switch (*Operator)
-         {
-         case '+':
-            RpnOp.Data.BinaryOperator = RpnBinaryOperatorAdd;
-            break;
-
-         case '-':
-            RpnOp.Data.BinaryOperator = RpnBinaryOperatorSub;
-            break;
-
-         case '*':
-            RpnOp.Data.BinaryOperator = RpnBinaryOperatorMul;
-            break;
[truncated at 1000 lines; 1749 more skipped]