[ros-diffs] [hpoussin] 28778: Make some i386 code conditional Add missing svn:eol-style=native property

hpoussin at svn.reactos.org hpoussin at svn.reactos.org
Sun Sep 2 20:05:17 CEST 2007


Author: hpoussin
Date: Sun Sep  2 22:05:16 2007
New Revision: 28778

URL: http://svn.reactos.org/svn/reactos?rev=28778&view=rev
Log:
Make some i386 code conditional
Add missing svn:eol-style=native property

Modified:
    trunk/reactos/dll/win32/kernel32/except/except.c
    trunk/reactos/dll/win32/kernel32/kernel32.rbuild
    trunk/reactos/dll/win32/kernel32/misc/dllmain.c
    trunk/reactos/dll/win32/kernel32/misc/utils.c
    trunk/reactos/dll/win32/kernel32/thread/fiber.c
    trunk/reactos/lib/pseh/framebased.c
    trunk/reactos/lib/rtl/exception.c
    trunk/reactos/lib/sdk/libcntpr/string/atoi64.c
    trunk/reactos/lib/sdk/libcntpr/string/wtoi64.c
    trunk/reactos/subsystems/win32/win32k/eng/float.c
    trunk/reactos/tools/nci/ncitool.c
    trunk/reactos/tools/ofw_interface/calls.ofw   (props changed)
    trunk/reactos/tools/ofw_interface/ofw_interface.cpp   (props changed)
    trunk/reactos/tools/ofw_interface/ofw_interface.mak   (props changed)
    trunk/reactos/tools/ppc.lost+found/bootcd   (props changed)
    trunk/reactos/tools/ppc.lost+found/hfsmap.lst   (props changed)
    trunk/reactos/tools/ppc.lost+found/link-freeldr   (props changed)
    trunk/reactos/tools/ppc.lost+found/ofboot.b   (props changed)
    trunk/reactos/tools/ppc.lost+found/pmake   (props changed)

Modified: trunk/reactos/dll/win32/kernel32/except/except.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/except/except.c?rev=28778&r1=28777&r2=28778&view=diff
==============================================================================
--- trunk/reactos/dll/win32/kernel32/except/except.c (original)
+++ trunk/reactos/dll/win32/kernel32/except/except.c Sun Sep  2 22:05:16 2007
@@ -124,6 +124,7 @@
    return psz;
 }
 
+#ifdef _M_IX86
 static VOID
 _dump_context(PCONTEXT pc)
 {
@@ -138,6 +139,13 @@
 	    pc->Ebp, pc->Esi, pc->Esp);
    DbgPrint("EDI: %.8x   EFLAGS: %.8x\n", pc->Edi, pc->EFlags);
 }
+#else
+#warning Unknown architecture
+static VOID
+_dump_context(PCONTEXT pc)
+{
+}
+#endif
 
 static LONG
 BasepCheckForReadOnlyResource(IN PVOID Ptr)
@@ -237,9 +245,9 @@
    {
 #ifdef _X86_
       PULONG Frame;
+#endif
       PVOID StartAddr;
       CHAR szMod[128] = "";
-#endif
 
       /* Print a stack trace. */
       DbgPrint("Unhandled exception\n");

Modified: trunk/reactos/dll/win32/kernel32/kernel32.rbuild
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/kernel32.rbuild?rev=28778&r1=28777&r2=28778&view=diff
==============================================================================
--- trunk/reactos/dll/win32/kernel32/kernel32.rbuild (original)
+++ trunk/reactos/dll/win32/kernel32/kernel32.rbuild Sun Sep  2 22:05:16 2007
@@ -108,10 +108,12 @@
 		<file>utils.c</file>
 	</directory>
 	<directory name="thread">
-		<directory name="i386">
-			<file>fiber.S</file>
-			<file>thread.S</file>
-		</directory>
+		<if property="ARCH" value="i386">
+			<directory name="i386">
+				<file>fiber.S</file>
+				<file>thread.S</file>
+			</directory>
+		</if>
 	</directory>
 </module>
 <module name="kernel32" type="win32dll" baseaddress="${BASEADDRESS_KERNEL32}" installbase="system32" installname="kernel32.dll">

Modified: trunk/reactos/dll/win32/kernel32/misc/dllmain.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/misc/dllmain.c?rev=28778&r1=28777&r2=28778&view=diff
==============================================================================
--- trunk/reactos/dll/win32/kernel32/misc/dllmain.c (original)
+++ trunk/reactos/dll/win32/kernel32/misc/dllmain.c Sun Sep  2 22:05:16 2007
@@ -257,6 +257,7 @@
     {
         case DLL_PROCESS_ATTACH:
 
+#ifdef _M_IX86
         /* OK, yes, this is really retarded but it works for now */
         InWindows = NtCurrentPeb()->BeingDebugged;
 
@@ -290,6 +291,7 @@
                 *Eip = (ULONG)BaseProcessStartThunk;
             }
         }
+#endif
 
         /* Don't bother us for each thread */
         LdrDisableThreadCalloutsForDll((PVOID)hDll);

Modified: trunk/reactos/dll/win32/kernel32/misc/utils.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/misc/utils.c?rev=28778&r1=28777&r2=28778&view=diff
==============================================================================
--- trunk/reactos/dll/win32/kernel32/misc/utils.c (original)
+++ trunk/reactos/dll/win32/kernel32/misc/utils.c Sun Sep  2 22:05:16 2007
@@ -9,7 +9,9 @@
 /* INCLUDES ****************************************************************/
 
 #include <k32.h>
+#ifdef _M_IX86
 #include "i386/ketypes.h"
+#endif
 
 #define NDEBUG
 #include "../include/debug.h"
@@ -334,6 +336,7 @@
                        IN PVOID StackAddress,
                        IN ULONG ContextType)
 {
+#ifdef _M_IX86
     DPRINT("BasepInitializeContext: %p\n", Context);
     
     /* Setup the Initial Win32 Thread Context */
@@ -371,6 +374,11 @@
     
     /* Give it some room for the Parameter */
     Context->Esp -= sizeof(PVOID);
+#else
+#warning Unknown architecture
+    UNIMPLEMENTED;
+    DbgBreakPoint();
+#endif
 }
 
 /*

Modified: trunk/reactos/dll/win32/kernel32/thread/fiber.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/thread/fiber.c?rev=28778&r1=28777&r2=28778&view=diff
==============================================================================
--- trunk/reactos/dll/win32/kernel32/thread/fiber.c (original)
+++ trunk/reactos/dll/win32/kernel32/thread/fiber.c Sun Sep  2 22:05:16 2007
@@ -251,12 +251,18 @@
 WINAPI
 BaseFiberStartup(VOID)
 {
+#ifdef _M_IX86
     PFIBER Fiber = GetFiberData();
-    
+
     /* Call the Thread Startup Routine */
     DPRINT1("Starting Fiber\n");
     BaseThreadStartup((LPTHREAD_START_ROUTINE)Fiber->Context.Eax,
                       (LPVOID)Fiber->Context.Ebx);
+#else
+#warning Unknown architecture
+    UNIMPLEMENTED;
+    DbgBreakPoint();
+#endif
 }
 
 /* EOF */

Modified: trunk/reactos/lib/pseh/framebased.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/pseh/framebased.c?rev=28778&r1=28777&r2=28778&view=diff
==============================================================================
--- trunk/reactos/lib/pseh/framebased.c (original)
+++ trunk/reactos/lib/pseh/framebased.c Sun Sep  2 22:05:16 2007
@@ -150,7 +150,7 @@
 	} \
 }
 #else
-#error Unsupported platform.
+#define _SEH_TRACE_CONTEXT(FRAME_, CONTEXT_)
 #endif
 
 #define _SEH_TRACE_UNWIND(FRAME_, ARGS_) \

Modified: trunk/reactos/lib/rtl/exception.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/exception.c?rev=28778&r1=28777&r2=28778&view=diff
==============================================================================
--- trunk/reactos/lib/rtl/exception.c (original)
+++ trunk/reactos/lib/rtl/exception.c Sun Sep  2 22:05:16 2007
@@ -27,9 +27,13 @@
     CONTEXT Context;
     NTSTATUS Status;
 
-    /* Capture the context and fixup ESP */
+    /* Capture the context */
     RtlCaptureContext(&Context);
+
+#ifdef _M_IX86
+    /* Fixup ESP */
     Context.Esp += sizeof(ULONG);
+#endif
 
     /* Save the exception address */
     ExceptionRecord->ExceptionAddress = RtlpGetExceptionAddress();
@@ -75,8 +79,10 @@
      /* Capture the context */
     RtlCaptureContext(&Context);
 
+#ifdef _M_IX86
     /* Add one argument to ESP */
     Context.Esp += sizeof(PVOID);
+#endif
 
     /* Create an exception record */
     ExceptionRecord.ExceptionAddress = RtlpGetExceptionAddress();
@@ -123,10 +129,16 @@
     ULONG i = 0;
 
     /* Get current EBP */
+#if defined(_M_IX86)
 #if defined __GNUC__
     __asm__("mov %%ebp, %0" : "=r" (Stack) : );
 #elif defined(_MSC_VER)
     __asm mov Stack, ebp
+#endif
+#elif defined(_M_MIPS)
+    __asm__("move $sp, %0" : "=r" (Stack) : );
+#else
+#error Unknown architecture
 #endif
 
     /* Set it as the stack begin limit as well */

Modified: trunk/reactos/lib/sdk/libcntpr/string/atoi64.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/libcntpr/string/atoi64.c?rev=28778&r1=28777&r2=28778&view=diff
==============================================================================
--- trunk/reactos/lib/sdk/libcntpr/string/atoi64.c (original)
+++ trunk/reactos/lib/sdk/libcntpr/string/atoi64.c Sun Sep  2 22:05:16 2007
@@ -1,5 +1,6 @@
 #include <string.h>
 #include <ctype.h>
+#include <basetsd.h>
 
 /*
  * @implemented

Modified: trunk/reactos/lib/sdk/libcntpr/string/wtoi64.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/libcntpr/string/wtoi64.c?rev=28778&r1=28777&r2=28778&view=diff
==============================================================================
--- trunk/reactos/lib/sdk/libcntpr/string/wtoi64.c (original)
+++ trunk/reactos/lib/sdk/libcntpr/string/wtoi64.c Sun Sep  2 22:05:16 2007
@@ -1,6 +1,6 @@
 #include <string.h>
 #include <ctype.h>
-
+#include <basetsd.h>
 
 /*
  * @implemented

Modified: trunk/reactos/subsystems/win32/win32k/eng/float.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/eng/float.c?rev=28778&r1=28777&r2=28778&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/eng/float.c (original)
+++ trunk/reactos/subsystems/win32/win32k/eng/float.c Sun Sep  2 22:05:16 2007
@@ -35,6 +35,7 @@
 
 /* DEFINES *****************************************************************/
 
+#ifdef _M_IX86
 #ifdef __GNUC__
 #define FLOAT_TO_INT(in,out)  \
            __asm__ __volatile__ ("fistpl %0" : "=m" (out) : "t" (in) : "st");
@@ -42,6 +43,10 @@
 #define FLOAT_TO_INT(in,out) \
           __asm fld in \
           __asm fistp out
+#endif
+#else
+#define FLOAT_TO_INT(in,out)  \
+          out = (long)in;
 #endif
 
 /* the following deal with IEEE single-precision numbers */

Modified: trunk/reactos/tools/nci/ncitool.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/nci/ncitool.c?rev=28778&r1=28777&r2=28778&view=diff
==============================================================================
--- trunk/reactos/tools/nci/ncitool.c (original)
+++ trunk/reactos/tools/nci/ncitool.c Sun Sep  2 22:05:16 2007
@@ -20,606 +20,618 @@
 
 /* DEFINES  ****************************************************************/
 
-#define INPUT_BUFFER_SIZE 255
+#define INPUT_BUFFER_SIZE 255
 #define Arguments 7
-
-/******* Table Indexes ************/
-#define MAIN_INDEX 0x0
-#define WIN32K_INDEX 0x1000
-
-/******* Argument List ************/
-/* First, define the Databases */
-#define NativeSystemDb 0
-#define NativeGuiDb 1
-
-/* Now the Service Tables */
-#define NtosServiceTable 2
-#define Win32kServiceTable 3
-
-/* And finally, the stub files. */
-#define NtosUserStubs 4
-#define NtosKernelStubs 5
+
+/******* Table Indexes ************/
+#define MAIN_INDEX 0x0
+#define WIN32K_INDEX 0x1000
+
+/******* Argument List ************/
+/* First, define the Databases */
+#define NativeSystemDb 0
+#define NativeGuiDb 1
+
+/* Now the Service Tables */
+#define NtosServiceTable 2
+#define Win32kServiceTable 3
+
+/* And finally, the stub files. */
+#define NtosUserStubs 4
+#define NtosKernelStubs 5
 #define Win32kStubs 6
-
-/********** Stub Code ************/
-
-/*
- * This stubs calls into KUSER_SHARED_DATA where either a 
- * sysenter or interrupt is performed, depending on CPU support.
- */    
-#if defined(__GNUC__)
-#define UserModeStub_x86    "    movl $0x%x, %%eax\n" \
-                            "    movl $KUSER_SHARED_SYSCALL, %%ecx\n" \
-                            "    call *(%%ecx)\n" \
-                            "    ret $0x%x\n\n"
-
-#define UserModeStub_ppc    "    mflr 0\n" \
-			    "    addi 1,1,-16\n" \
-			    "	 li   0,%x\n" \
-			    "    stw  0,1(0)\n" \
-			    "    sc\n" \
-			    "    lwz  0,1(0)\n" \
-			    "    mtlr 0\n" \
-			    "    addi 1,1,16\n" \
-			    "    blr\n"
-#elif defined(_MSC_VER)
-#define UserModeStub_x86    "    asm { \n" \
-                            "        mov eax, %xh\n" \
-                            "        mov ecx, KUSER_SHARED_SYSCALL\n" \
-                            "        call [ecx]\n" \
-                            "        ret %xh\n" \
-                            "    }\n"
-#else
-#error Unknown compiler for inline assembler
-#endif
-
-/*
- * This stub calls KiSystemService directly with a fake INT2E stack.
- * Because EIP is pushed during the call, the handler will return here. 
- */
-#if defined(__GNUC__)
-#define KernelModeStub_x86  "    movl $0x%x, %%eax\n" \
-                            "    leal 4(%%esp), %%edx\n" \
-                            "    pushfl\n" \
-                            "    pushl $KGDT_R0_CODE\n" \
-                            "    call _KiSystemService\n" \
-                            "    ret $0x%x\n\n"
-
-#define KernelModeStub_ppc  "    bl KiSystemService\n" \
-			    "    rfi\n"
-#elif defined(_MSC_VER)
-#define KernelModeStub_x86  "    asm { \n" \
-                            "        mov eax, %xh\n" \
-                            "        lea edx, [esp+4]\n" \
-                            "        pushf\n" \
-                            "        push KGDT_R0_CODE\n" \
-                            "        call _KiSystemService\n" \
-                            "        ret %xh\n" \
-                            "    }\n"
-#else
-#error Unknown compiler for inline assembler
-#endif
-
-/***** Arch Dependent Stuff ******/
-struct ncitool_data_t {
-	const char *arch;
-	int args_to_bytes;
-	const char *km_stub;
-	const char *um_stub;
-	const char *global_header;
-	const char *declaration;
-};
-
-struct ncitool_data_t ncitool_data[] = {
-	{ "i386", 4, KernelModeStub_x86, UserModeStub_x86,
-	  ".global _%s@%d\n", "_%s@%d:\n" },
-	{ "powerpc", 4, KernelModeStub_ppc, UserModeStub_ppc,
-	  "\t.globl %s\n", "%s:\n" },
-	{ 0, }
-};
-int arch_sel = 0;
-#define ARGS_TO_BYTES(x) (x)*(ncitool_data[arch_sel].args_to_bytes)
-#define UserModeStub ncitool_data[arch_sel].um_stub
-#define KernelModeStub ncitool_data[arch_sel].km_stub
-#define GlobalHeader ncitool_data[arch_sel].global_header
-#define Declaration ncitool_data[arch_sel].declaration
-
-/* FUNCTIONS ****************************************************************/
-
-/*++
- * WriteFileHeader 
- *
- *     Prints out the File Header for a Stub File.
- *
- * Params:
- *     StubFile - Stub File to which to write the header.
- *
- *     FileDescription - Description of the Stub file to which to write the header.
- *
- *     FileLocation - Name of the Stub file to which to write the header.
- *
- * Returns:
- *     None.
- *
- * Remarks:
- *     FileLocation is only used for printing the header.
- *
- *--*/
-void 
-WriteFileHeader(FILE * StubFile,
-                char* FileDescription,
-                char* FileLocation)
-{
-    /* This prints out the file header */
-    fprintf(StubFile,
-            "/* FILE:            %s\n"
-            " * COPYRIGHT:       See COPYING in the top level directory\n"
-            " * PURPOSE:         %s\n"
-            " * PROGRAMMER:      Computer Generated File. See tools/nci/ncitool.c\n"
-            " * REMARK:          DO NOT EDIT OR COMMIT MODIFICATIONS TO THIS FILE\n"
-            " */\n\n\n"
-            "#include <ndk/asm.h>\n\n",
-            FileDescription,
-            FileLocation);
-}
-
-/*++
- * WriteFileHeader 
- *
- *     Prints out the File Header for a Stub File.
- *
- * Params:
- *     StubFile - Stub File to which to write the header.
- *
- *     FileDescription - Description of the Stub file to which to write the header.
- *
- *     FileLocation - Name of the Stub file to which to write the header.
- *
- * Returns:
- *     None.
- *
- * Remarks:
- *     FileLocation is only used for printing the header.
- *
- *--*/
-void 
-WriteStubHeader(FILE* StubFile, 
-                char* SyscallName, 
-                unsigned StackBytes)
-{
-    /* Export the function */
-    fprintf(StubFile, GlobalHeader, SyscallName, StackBytes);
-    
-    /* Define it */
-    fprintf(StubFile, Declaration, SyscallName, StackBytes);
-}
-
-    
-/*++
- * WriteKernelModeStub 
- *
- *     Prints out the Kernel Mode Stub for a System Call.
- *
- * Params:
- *     StubFile - Stub File to which to write the header.
- *
- *     SyscallName - Name of System Call for which to add the stub.
- *
- *     StackBytes - Number of bytes on the stack to return after doing the system call.
- *
- *     SyscallId - Service Descriptor Table ID for this System Call.
- *
- * Returns:
- *     None.
- *
- * Remarks:
- *     On i386, StackBytes is the number of arguments x 4.
- *
- *--*/
-void 
-WriteKernelModeStub(FILE* StubFile, 
-                    char* SyscallName, 
-                    unsigned StackBytes,
-                    unsigned int SyscallId)
-{    
-    /* Write the Stub Header and export the Function */
-    WriteStubHeader(StubFile, SyscallName, StackBytes);
-
-    /* Write the Stub Code */
-    fprintf(StubFile, KernelModeStub, SyscallId, StackBytes);
-}
-
-/*++
- * WriteUserModeStub 
- *
- *     Prints out the User Mode Stub for a System Call.
- *
- * Params:
- *     StubFile - Stub File to which to write the header.
- *
- *     SyscallName - Name of System Call for which to add the stub.
- *
- *     StackBytes - Number of bytes on the stack to return after doing the system call.
- *
- *     SyscallId - Service Descriptor Table ID for this System Call.
- *
- * Returns:
- *     None.
- *
- * Remarks:
- *     On i386, StackBytes is the number of arguments x 4.
- *
- *--*/
-void 
-WriteUserModeStub(FILE* StubFile, 
-                  char* SyscallName, 
-                  unsigned StackBytes,
-                  unsigned int SyscallId)
-{   
-    /* Write the Stub Header and export the Function */
-    WriteStubHeader(StubFile, SyscallName, StackBytes);
-
-    /* Write the Stub Code */
-    fprintf(StubFile, UserModeStub, SyscallId, StackBytes);
-}
-
-/*++
- * GetNameAndArgumentsFromDb 
- *
- *     Parses an entry from a System Call Database, extracting
- *     the function's name and arguments that it takes.
- *
- * Params:
- *     Line - Entry from the Database to parse.
- *
- *     NtSyscallName - Output string to which to save the Function Name
- *
- *     SyscallArguments - Output string to which to save the number of
- *                        arguments that the function takes.
- *
- * Returns:
- *     None.
- *
- * Remarks:
- *     On i386, StackBytes is the number of arguments x 4.
- *
- *--*/
-void 
-GetNameAndArgumentsFromDb(char Line[],
-                          char ** NtSyscallName,
-                          char ** SyscallArguments)
-{
-    char *s;
-    char *stmp;
-    
-    /* Remove new line */
-    if ((s = (char *) strchr(Line,'\r')) != NULL) {
-        *s = '\0';
-    }
-        
-    /* Skip comments (#) and empty lines */
-    s = &Line[0];
-    if ((*s) != '#' && (*s) != '\0') {
-            
-        /* Extract the NtXXX name */
-        *NtSyscallName = (char *)strtok(s," \t");
-
-        /* Extract the argument count */
-        *SyscallArguments = (char *)strtok(NULL," \t");
-
-        /* Remove, if present, the trailing LF */
-        if ((stmp = strchr(*SyscallArguments, '\n')) != NULL) {
-            *stmp = '\0';
-        }
-        
-    } else {
-    
-        /* Skip this entry */
-        *NtSyscallName = NULL;
-        *SyscallArguments = NULL;
-    }
-}
-
-/*++
- * CreateStubs 
- *
- *     Parses a System Call Database and creates stubs for all the entries.
- *
- * Params:
- *     SyscallDb - System Call Database to parse.
- *
- *     UserModeFiles - Array of Usermode Stub Files to which to write the stubs.
- *
- *     KernelModeFile - Kernelmode Stub Files to which to write the stubs.
- *
+
+/********** Stub Code ************/
+
+/*
+ * This stubs calls into KUSER_SHARED_DATA where either a 
+ * sysenter or interrupt is performed, depending on CPU support.
+ */    
+#if defined(__GNUC__)
+#define UserModeStub_x86    "    movl $0x%x, %%eax\n" \
+                            "    movl $KUSER_SHARED_SYSCALL, %%ecx\n" \
+                            "    call *(%%ecx)\n" \
+                            "    ret $0x%x\n\n"
+
+#define UserModeStub_ppc    "    mflr 0\n" \
+                            "    addi 1,1,-16\n" \
+                            "    li   0,%x\n" \
+                            "    stw  0,1(0)\n" \
+                            "    sc\n" \
+                            "    lwz  0,1(0)\n" \
+                            "    mtlr 0\n" \
+                            "    addi 1,1,16\n" \
+                            "    blr\n"
+
+#define UserModeStub_mips   "    li $8, KUSER_SHARED_SYSCALL\n" \
+                            "    lw $8,0($8)\n" \
+                            "    j $8\n" \
+                            "    nop\n"
+
+#elif defined(_MSC_VER)
+#define UserModeStub_x86    "    asm { \n" \
+                            "        mov eax, %xh\n" \
+                            "        mov ecx, KUSER_SHARED_SYSCALL\n" \
+                            "        call [ecx]\n" \
+                            "        ret %xh\n" \
+                            "    }\n"
+#else
+#error Unknown compiler for inline assembler
+#endif
+
+/*
+ * This stub calls KiSystemService directly with a fake INT2E stack.
+ * Because EIP is pushed during the call, the handler will return here. 
+ */
+#if defined(__GNUC__)
+#define KernelModeStub_x86  "    movl $0x%x, %%eax\n" \
+                            "    leal 4(%%esp), %%edx\n" \
+                            "    pushfl\n" \
+                            "    pushl $KGDT_R0_CODE\n" \
+                            "    call _KiSystemService\n" \
+                            "    ret $0x%x\n\n"
+
+#define KernelModeStub_ppc  "    bl KiSystemService\n" \
+                            "    rfi\n"
+
+#define KernelModeStub_mips "    j KiSystemService\n" \
+                            "    nop\n"
+
+#elif defined(_MSC_VER)
+#define KernelModeStub_x86  "    asm { \n" \
+                            "        mov eax, %xh\n" \
+                            "        lea edx, [esp+4]\n" \
+                            "        pushf\n" \
+                            "        push KGDT_R0_CODE\n" \
+                            "        call _KiSystemService\n" \
+                            "        ret %xh\n" \
+                            "    }\n"
+#else
+#error Unknown compiler for inline assembler
+#endif
+
+/***** Arch Dependent Stuff ******/
+struct ncitool_data_t {
+	const char *arch;
+	int args_to_bytes;
+	const char *km_stub;
+	const char *um_stub;
+	const char *global_header;
+	const char *declaration;
+};
+
+struct ncitool_data_t ncitool_data[] = {
+	{ "i386", 4, KernelModeStub_x86, UserModeStub_x86,
+	  ".global _%s@%d\n", "_%s@%d:\n" },
+	{ "powerpc", 4, KernelModeStub_ppc, UserModeStub_ppc,
+	  "\t.globl %s\n", "%s:\n" },
+	{ "mips", 4, KernelModeStub_mips, UserModeStub_mips,
+	  "\t.globl %s\n", "%s:\n" },
+	{ 0, }
+};
+int arch_sel = 0;
+#define ARGS_TO_BYTES(x) (x)*(ncitool_data[arch_sel].args_to_bytes)
+#define UserModeStub ncitool_data[arch_sel].um_stub
+#define KernelModeStub ncitool_data[arch_sel].km_stub
+#define GlobalHeader ncitool_data[arch_sel].global_header
+#define Declaration ncitool_data[arch_sel].declaration
+
+/* FUNCTIONS ****************************************************************/
+
+/*++
+ * WriteFileHeader 
+ *
+ *     Prints out the File Header for a Stub File.
+ *
+ * Params:
+ *     StubFile - Stub File to which to write the header.
+ *
+ *     FileDescription - Description of the Stub file to which to write the header.
+ *
+ *     FileLocation - Name of the Stub file to which to write the header.
+ *
+ * Returns:
+ *     None.
+ *
+ * Remarks:
+ *     FileLocation is only used for printing the header.
+ *
+ *--*/
+void 
+WriteFileHeader(FILE * StubFile,
+                char* FileDescription,
+                char* FileLocation)
+{
+    /* This prints out the file header */
+    fprintf(StubFile,
+            "/* FILE:            %s\n"
+            " * COPYRIGHT:       See COPYING in the top level directory\n"
+            " * PURPOSE:         %s\n"
+            " * PROGRAMMER:      Computer Generated File. See tools/nci/ncitool.c\n"
+            " * REMARK:          DO NOT EDIT OR COMMIT MODIFICATIONS TO THIS FILE\n"
+            " */\n\n\n"
+            "#include <ndk/asm.h>\n\n",
+            FileDescription,
+            FileLocation);
+}
+
+/*++
+ * WriteFileHeader 
+ *
+ *     Prints out the File Header for a Stub File.
+ *
+ * Params:
+ *     StubFile - Stub File to which to write the header.
+ *
+ *     FileDescription - Description of the Stub file to which to write the header.
+ *
+ *     FileLocation - Name of the Stub file to which to write the header.
+ *
+ * Returns:
+ *     None.
+ *
+ * Remarks:
+ *     FileLocation is only used for printing the header.
+ *
+ *--*/
+void 
+WriteStubHeader(FILE* StubFile, 
+                char* SyscallName, 
+                unsigned StackBytes)
+{
+    /* Export the function */
+    fprintf(StubFile, GlobalHeader, SyscallName, StackBytes);
+    
+    /* Define it */
+    fprintf(StubFile, Declaration, SyscallName, StackBytes);
+}
+
+    
+/*++
+ * WriteKernelModeStub 
+ *
+ *     Prints out the Kernel Mode Stub for a System Call.
+ *
+ * Params:
+ *     StubFile - Stub File to which to write the header.
+ *
+ *     SyscallName - Name of System Call for which to add the stub.
+ *
+ *     StackBytes - Number of bytes on the stack to return after doing the system call.
+ *
+ *     SyscallId - Service Descriptor Table ID for this System Call.
+ *
+ * Returns:
+ *     None.
+ *
+ * Remarks:
+ *     On i386, StackBytes is the number of arguments x 4.
+ *
+ *--*/
+void 
+WriteKernelModeStub(FILE* StubFile, 
+                    char* SyscallName, 
+                    unsigned StackBytes,
+                    unsigned int SyscallId)
+{    
+    /* Write the Stub Header and export the Function */
+    WriteStubHeader(StubFile, SyscallName, StackBytes);
+
+    /* Write the Stub Code */
+    fprintf(StubFile, KernelModeStub, SyscallId, StackBytes);
+}
+
+/*++
+ * WriteUserModeStub 
+ *
+ *     Prints out the User Mode Stub for a System Call.
+ *
+ * Params:
+ *     StubFile - Stub File to which to write the header.
+ *
+ *     SyscallName - Name of System Call for which to add the stub.
+ *
+ *     StackBytes - Number of bytes on the stack to return after doing the system call.
+ *
+ *     SyscallId - Service Descriptor Table ID for this System Call.
+ *
+ * Returns:
+ *     None.
+ *
+ * Remarks:
+ *     On i386, StackBytes is the number of arguments x 4.
+ *
+ *--*/
+void 
+WriteUserModeStub(FILE* StubFile, 
+                  char* SyscallName, 
+                  unsigned StackBytes,
+                  unsigned int SyscallId)
+{   
+    /* Write the Stub Header and export the Function */
+    WriteStubHeader(StubFile, SyscallName, StackBytes);
+
+    /* Write the Stub Code */
+    fprintf(StubFile, UserModeStub, SyscallId, StackBytes);
+}
+
+/*++
+ * GetNameAndArgumentsFromDb 
+ *
+ *     Parses an entry from a System Call Database, extracting
+ *     the function's name and arguments that it takes.
+ *
+ * Params:
+ *     Line - Entry from the Database to parse.
+ *
+ *     NtSyscallName - Output string to which to save the Function Name
+ *
+ *     SyscallArguments - Output string to which to save the number of
+ *                        arguments that the function takes.
+ *
+ * Returns:
+ *     None.
+ *
+ * Remarks:
+ *     On i386, StackBytes is the number of arguments x 4.
+ *
+ *--*/
+void 
+GetNameAndArgumentsFromDb(char Line[],
+                          char ** NtSyscallName,
+                          char ** SyscallArguments)
+{
+    char *s;
+    char *stmp;
+    
+    /* Remove new line */
+    if ((s = (char *) strchr(Line,'\r')) != NULL) {
+        *s = '\0';
+    }
+        
+    /* Skip comments (#) and empty lines */
+    s = &Line[0];
+    if ((*s) != '#' && (*s) != '\0') {
+            
+        /* Extract the NtXXX name */
+        *NtSyscallName = (char *)strtok(s," \t");
+
+        /* Extract the argument count */
+        *SyscallArguments = (char *)strtok(NULL," \t");
+
+        /* Remove, if present, the trailing LF */
+        if ((stmp = strchr(*SyscallArguments, '\n')) != NULL) {
+            *stmp = '\0';
+        }
+        
+    } else {
+    
+        /* Skip this entry */
+        *NtSyscallName = NULL;
+        *SyscallArguments = NULL;
+    }
+}
+
+/*++
+ * CreateStubs 
+ *
+ *     Parses a System Call Database and creates stubs for all the entries.
+ *
+ * Params:
+ *     SyscallDb - System Call Database to parse.
+ *
+ *     UserModeFiles - Array of Usermode Stub Files to which to write the stubs.
+ *
+ *     KernelModeFile - Kernelmode Stub Files to which to write the stubs.
+ *
  *     Index - Number of first syscall
- *
+ *
  *     UserFiles - Number of Usermode Stub Files to create
- *
+ *
  *     NeedsZw - Write Zw prefix?
- *
- * Returns:
- *     None.
- *
- * Remarks:
- *     None.
- *
- *--*/
-void
-CreateStubs(FILE * SyscallDb,
-            FILE * UserModeFiles[],
-            FILE * KernelModeFile,
-            unsigned Index,
-            unsigned UserFiles,
-            unsigned NeedsZw)
-{
-    char Line[INPUT_BUFFER_SIZE];
-    char *NtSyscallName;
-    char *SyscallArguments;
-    int SyscallId;
-    unsigned StackBytes;
-    
-    /* We loop, incrementing the System Call Index, until the end of the file  */
-    for (SyscallId = 0; ((!feof(SyscallDb)) && (fgets(Line, sizeof(Line), SyscallDb) != NULL));) {
-             
-        /* Extract the Name and Arguments */
-        GetNameAndArgumentsFromDb(Line, &NtSyscallName, &SyscallArguments); 
-        if (SyscallArguments != NULL)
-            StackBytes = ARGS_TO_BYTES(strtoul(SyscallArguments, NULL, 0));
-        else
-            StackBytes = 0;
- 
-        /* Make sure we really extracted something */
-        if (NtSyscallName) {
-     
-            /* Create Usermode Stubs for Nt/Zw syscalls in each Usermode file */
-            int i;
-            for (i= 0; i < UserFiles; i++) {
-    
-                /* Write the Nt Version */
-                WriteUserModeStub(UserModeFiles[i], 
-                                  NtSyscallName, 
-                                  StackBytes, 
-                                  SyscallId | Index);
-
-                /* If a Zw Version is needed (was specified), write it too */
-                if (NeedsZw) {
-
-                    NtSyscallName[0] = 'Z';
-                    NtSyscallName[1] = 'w';
-                    WriteUserModeStub(UserModeFiles[i],
-                                      NtSyscallName,
-                                      StackBytes,
-                                      SyscallId | Index);
-                }
-
-            }
-
-            /* Create the Kernel coutnerparts (only Zw*, Nt* are the real functions!) */
-            if (KernelModeFile) {
-
-                NtSyscallName[0] = 'Z';
-                NtSyscallName[1] = 'w';
-                WriteKernelModeStub(KernelModeFile,
-                                    NtSyscallName,
-                                    StackBytes,
-                                    SyscallId | Index);
-            }
-        
-            /* Only increase if we actually added something */
-            SyscallId++;
-        }
-    }
-}
-
-/*++
- * CreateSystemServiceTable 
- *
- *     Parses a System Call Database and creates a System Call Service Table for it.
- *
- * Params:
- *     SyscallDb - System Call Database to parse.
- *
- *     SyscallTable - File in where to create System Call Service Table.
- *
- *     Name - Name of the Service Table.
- *
- *     FileLocation - Filename containing the Table.
- *
- * Returns:
- *     None.
- *
- * Remarks:
- *     FileLocation is only used for the header generation.
- *
- *--*/
-void
-CreateSystemServiceTable(FILE *SyscallDb, 
-                         FILE *SyscallTable,
-                         char * Name,
-                         char * FileLocation)
-{
-    char Line[INPUT_BUFFER_SIZE];
-    char *NtSyscallName;
-    char *SyscallArguments;
-    int SyscallId;
-
-    /* Print the Header */
-    WriteFileHeader(SyscallTable, "System Call Table for Native API", FileLocation);
-
-    /* First we build the SSDT */
-    fprintf(SyscallTable,"\n\n\n");
-    fprintf(SyscallTable,"ULONG_PTR %sSSDT[] = {\n", Name);
-
-    /* We loop, incrementing the System Call Index, until the end of the file */
-    for (SyscallId = 0; ((!feof(SyscallDb)) && (fgets(Line, sizeof(Line), SyscallDb) != NULL));) {
-
-        /* Extract the Name and Arguments */
-        GetNameAndArgumentsFromDb(Line, &NtSyscallName, &SyscallArguments);
-        
-        /* Make sure we really extracted something */
-        if (NtSyscallName) {
-            
-            /* Add a new line */
-            if (SyscallId > 0) fprintf(SyscallTable,",\n");
-        
-            /* Write the syscall name in the service table. */
-            fprintf(SyscallTable,"\t\t(ULONG_PTR)%s", NtSyscallName);
-            
-            /* Only increase if we actually added something */
-            SyscallId++;
-        }
-    }
-    
-    /* Close the service table (C syntax) */
-    fprintf(SyscallTable,"\n};\n");
-
-    /* Now we build the SSPT */
-    rewind(SyscallDb);
-    fprintf(SyscallTable,"\n\n\n");
-    fprintf(SyscallTable,"UCHAR %sSSPT[] = {\n", Name);
-
-    for (SyscallId = 0; ((!feof(SyscallDb)) && (fgets(Line, sizeof(Line), SyscallDb) != NULL));) {
-
-        /* Extract the Name and Arguments */
-        GetNameAndArgumentsFromDb(Line, &NtSyscallName, &SyscallArguments);
-        
-        /* Make sure we really extracted something */
-        if (NtSyscallName) {
-            
-            /* Add a new line */
-            if (SyscallId > 0) fprintf(SyscallTable,",\n");
-            
-            /* Write the syscall arguments in the argument table. */
-            if (SyscallArguments != NULL)
-                fprintf(SyscallTable,"\t\t%lu * sizeof(void *)",strtoul(SyscallArguments, NULL, 0));
-            else
-                fprintf(SyscallTable,"\t\t0");
-                    
-            /* Only increase if we actually added something */
-            SyscallId++;
-        }
-    }
-    
-    /* Close the service table (C syntax) */
-    fprintf(SyscallTable,"\n};\n");
-
-    /*
-     * We write some useful defines
-     */
-    fprintf(SyscallTable, "\n\n#define MIN_SYSCALL_NUMBER    0\n");
-    fprintf(SyscallTable, "#define MAX_SYSCALL_NUMBER    %d\n", SyscallId - 1);
-    fprintf(SyscallTable, "#define NUMBER_OF_SYSCALLS    %d\n", SyscallId);
-    fprintf(SyscallTable, "ULONG %sNumberOfSysCalls = %d;\n", Name, SyscallId);
-}
-
-void usage(char * argv0)
-{
-    printf("Usage: %s [-arch <arch>] sysfuncs.lst w32ksvc.db napi.h ssdt.h napi.S zw.S win32k.S win32k.S\n"
-           "  sysfuncs.lst  native system functions database\n"
-           "  w32ksvc.db    native graphic functions database\n"
-           "  napi.h        NTOSKRNL service table\n"
-           "  ssdt.h        WIN32K service table\n"
-           "  napi.S        NTDLL stubs\n"
-           "  zw.S          NTOSKRNL Zw stubs\n"
-           "  win32k.S      GDI32 stubs\n"
-           "  win32k.S      USER32 stubs\n"
-           "  -arch is optional, default is %s\n",
-           argv0,
-           ncitool_data[0].arch
-           );
-}
-
-int main(int argc, char* argv[])
-{
-    FILE * Files[Arguments] = { };
-    int FileNumber, ArgOffset = 1;
-    char * OpenType = "r";
-
-    /* Catch architecture argument */
-    if (argc > 3 && !strcmp(argv[1],"-arch")) {
-        for( arch_sel = 0; ncitool_data[arch_sel].arch; arch_sel++ )
-            if (strcmp(argv[2],ncitool_data[arch_sel].arch) == 0)
-                break;
-        if (!ncitool_data[arch_sel].arch) {
-            printf("Invalid arch '%s'\n", argv[2]);
-            usage(argv[0]);
-            return 1;
-        }
-        ArgOffset = 3;
-    }
-    /* Make sure all arguments all there */
-    if (argc != Arguments + ArgOffset) {
-        usage(argv[0]);
-        return(1);
-    }
-  
-    /* Open all Output and bail out if any fail */
-    for (FileNumber = 0; FileNumber < Arguments; FileNumber++) {
-    
-        /* Open the File */
-        if (FileNumber == 2) OpenType = "wb";
-        Files[FileNumber] = fopen(argv[FileNumber + ArgOffset], OpenType);
-        
-        /* Check for failure and error out if so */
-        if (!Files[FileNumber]) {
-            perror(argv[FileNumber + ArgOffset]);
-            return (1);
-        }
-    }
-
-    /* Write the File Headers */
-    WriteFileHeader(Files[NtosUserStubs], 
-                    "System Call Stubs for Native API", 
-                    argv[NtosUserStubs + ArgOffset]);
-    
-    WriteFileHeader(Files[NtosKernelStubs], 
-                    "System Call Stubs for Native API", 
-                    argv[NtosKernelStubs + ArgOffset]);
-    fputs("#include <ndk/asm.h>\n\n", Files[NtosKernelStubs]);
-
+ *
+ * Returns:
+ *     None.
+ *
+ * Remarks:
+ *     None.
+ *
+ *--*/
+void
+CreateStubs(FILE * SyscallDb,
+            FILE * UserModeFiles[],
+            FILE * KernelModeFile,
+            unsigned Index,
+            unsigned UserFiles,
+            unsigned NeedsZw)
+{
+    char Line[INPUT_BUFFER_SIZE];
+    char *NtSyscallName;
+    char *SyscallArguments;
+    int SyscallId;
+    unsigned StackBytes;
+    
+    /* We loop, incrementing the System Call Index, until the end of the file  */
+    for (SyscallId = 0; ((!feof(SyscallDb)) && (fgets(Line, sizeof(Line), SyscallDb) != NULL));) {
+             
+        /* Extract the Name and Arguments */
+        GetNameAndArgumentsFromDb(Line, &NtSyscallName, &SyscallArguments); 
+        if (SyscallArguments != NULL)
+            StackBytes = ARGS_TO_BYTES(strtoul(SyscallArguments, NULL, 0));
+        else
+            StackBytes = 0;
+ 
+        /* Make sure we really extracted something */
+        if (NtSyscallName) {
+     
+            /* Create Usermode Stubs for Nt/Zw syscalls in each Usermode file */
+            int i;
+            for (i= 0; i < UserFiles; i++) {
+    
+                /* Write the Nt Version */
+                WriteUserModeStub(UserModeFiles[i], 
+                                  NtSyscallName, 
+                                  StackBytes, 
+                                  SyscallId | Index);
+
+                /* If a Zw Version is needed (was specified), write it too */
+                if (NeedsZw) {
+
+                    NtSyscallName[0] = 'Z';
+                    NtSyscallName[1] = 'w';
+                    WriteUserModeStub(UserModeFiles[i],
+                                      NtSyscallName,
+                                      StackBytes,
+                                      SyscallId | Index);
+                }
+
+            }
+
+            /* Create the Kernel coutnerparts (only Zw*, Nt* are the real functions!) */
+            if (KernelModeFile) {
+
+                NtSyscallName[0] = 'Z';
+                NtSyscallName[1] = 'w';
+                WriteKernelModeStub(KernelModeFile,
+                                    NtSyscallName,
+                                    StackBytes,
+                                    SyscallId | Index);
+            }
+        
+            /* Only increase if we actually added something */
+            SyscallId++;
+        }
+    }
+}
+
+/*++
+ * CreateSystemServiceTable 
+ *
+ *     Parses a System Call Database and creates a System Call Service Table for it.
+ *
+ * Params:
+ *     SyscallDb - System Call Database to parse.
+ *
+ *     SyscallTable - File in where to create System Call Service Table.
+ *
+ *     Name - Name of the Service Table.
+ *
+ *     FileLocation - Filename containing the Table.
+ *
+ * Returns:
+ *     None.
+ *
+ * Remarks:
+ *     FileLocation is only used for the header generation.
+ *
+ *--*/
+void
+CreateSystemServiceTable(FILE *SyscallDb, 
+                         FILE *SyscallTable,
+                         char * Name,
+                         char * FileLocation)
+{
+    char Line[INPUT_BUFFER_SIZE];
+    char *NtSyscallName;
+    char *SyscallArguments;
+    int SyscallId;
+
+    /* Print the Header */
+    WriteFileHeader(SyscallTable, "System Call Table for Native API", FileLocation);
+
+    /* First we build the SSDT */
+    fprintf(SyscallTable,"\n\n\n");
+    fprintf(SyscallTable,"ULONG_PTR %sSSDT[] = {\n", Name);
+
+    /* We loop, incrementing the System Call Index, until the end of the file */
+    for (SyscallId = 0; ((!feof(SyscallDb)) && (fgets(Line, sizeof(Line), SyscallDb) != NULL));) {
+
+        /* Extract the Name and Arguments */
+        GetNameAndArgumentsFromDb(Line, &NtSyscallName, &SyscallArguments);
+        
+        /* Make sure we really extracted something */
+        if (NtSyscallName) {
+            
+            /* Add a new line */
+            if (SyscallId > 0) fprintf(SyscallTable,",\n");
+        
+            /* Write the syscall name in the service table. */
+            fprintf(SyscallTable,"\t\t(ULONG_PTR)%s", NtSyscallName);
+            
+            /* Only increase if we actually added something */
+            SyscallId++;
+        }
+    }
+    
+    /* Close the service table (C syntax) */
+    fprintf(SyscallTable,"\n};\n");
+
+    /* Now we build the SSPT */
+    rewind(SyscallDb);
+    fprintf(SyscallTable,"\n\n\n");
+    fprintf(SyscallTable,"UCHAR %sSSPT[] = {\n", Name);
+
+    for (SyscallId = 0; ((!feof(SyscallDb)) && (fgets(Line, sizeof(Line), SyscallDb) != NULL));) {
+
+        /* Extract the Name and Arguments */
+        GetNameAndArgumentsFromDb(Line, &NtSyscallName, &SyscallArguments);
+        
+        /* Make sure we really extracted something */
+        if (NtSyscallName) {
+            
+            /* Add a new line */
+            if (SyscallId > 0) fprintf(SyscallTable,",\n");
+            
+            /* Write the syscall arguments in the argument table. */
+            if (SyscallArguments != NULL)
+                fprintf(SyscallTable,"\t\t%lu * sizeof(void *)",strtoul(SyscallArguments, NULL, 0));
+            else
+                fprintf(SyscallTable,"\t\t0");
+                    
+            /* Only increase if we actually added something */
+            SyscallId++;
+        }
+    }
+    
+    /* Close the service table (C syntax) */
+    fprintf(SyscallTable,"\n};\n");
+
+    /*
+     * We write some useful defines
+     */
+    fprintf(SyscallTable, "\n\n#define MIN_SYSCALL_NUMBER    0\n");
+    fprintf(SyscallTable, "#define MAX_SYSCALL_NUMBER    %d\n", SyscallId - 1);
+    fprintf(SyscallTable, "#define NUMBER_OF_SYSCALLS    %d\n", SyscallId);
+    fprintf(SyscallTable, "ULONG %sNumberOfSysCalls = %d;\n", Name, SyscallId);
+}
+
+void usage(char * argv0)
+{
+    printf("Usage: %s [-arch <arch>] sysfuncs.lst w32ksvc.db napi.h ssdt.h napi.S zw.S win32k.S win32k.S\n"
+           "  sysfuncs.lst  native system functions database\n"
+           "  w32ksvc.db    native graphic functions database\n"
+           "  napi.h        NTOSKRNL service table\n"
+           "  ssdt.h        WIN32K service table\n"
+           "  napi.S        NTDLL stubs\n"
+           "  zw.S          NTOSKRNL Zw stubs\n"
+           "  win32k.S      GDI32 stubs\n"
+           "  win32k.S      USER32 stubs\n"
+           "  -arch is optional, default is %s\n",
+           argv0,
+           ncitool_data[0].arch
+           );
+}
+
+int main(int argc, char* argv[])
+{
+    FILE * Files[Arguments] = { };
+    int FileNumber, ArgOffset = 1;
+    char * OpenType = "r";
+
+    /* Catch architecture argument */
+    if (argc > 3 && !strcmp(argv[1],"-arch")) {
+        for( arch_sel = 0; ncitool_data[arch_sel].arch; arch_sel++ )
+            if (strcmp(argv[2],ncitool_data[arch_sel].arch) == 0)
+                break;
+        if (!ncitool_data[arch_sel].arch) {
+            printf("Invalid arch '%s'\n", argv[2]);
+            usage(argv[0]);
+            return 1;
+        }
+        ArgOffset = 3;
+    }
+    /* Make sure all arguments all there */
+    if (argc != Arguments + ArgOffset) {
+        usage(argv[0]);
+        return(1);
+    }
+  
+    /* Open all Output and bail out if any fail */
+    for (FileNumber = 0; FileNumber < Arguments; FileNumber++) {
+    
+        /* Open the File */
+        if (FileNumber == 2) OpenType = "wb";
+        Files[FileNumber] = fopen(argv[FileNumber + ArgOffset], OpenType);
+        
+        /* Check for failure and error out if so */
+        if (!Files[FileNumber]) {
+            perror(argv[FileNumber + ArgOffset]);
+            return (1);
+        }
+    }
+
+    /* Write the File Headers */
+    WriteFileHeader(Files[NtosUserStubs], 
+                    "System Call Stubs for Native API", 
+                    argv[NtosUserStubs + ArgOffset]);
+    
+    WriteFileHeader(Files[NtosKernelStubs], 
+                    "System Call Stubs for Native API", 
+                    argv[NtosKernelStubs + ArgOffset]);
+    fputs("#include <ndk/asm.h>\n\n", Files[NtosKernelStubs]);
+
     WriteFileHeader(Files[Win32kStubs], 
-                    "System Call Stubs for Native API", 
+                    "System Call Stubs for Native API", 
                     argv[Win32kStubs + ArgOffset]);
-
-    /* Create the System Stubs */
-    CreateStubs(Files[NativeSystemDb],
-                &Files[NtosUserStubs], 
-                Files[NtosKernelStubs], 
-                MAIN_INDEX, 
+
+    /* Create the System Stubs */
+    CreateStubs(Files[NativeSystemDb],
+                &Files[NtosUserStubs], 
+                Files[NtosKernelStubs], 
+                MAIN_INDEX, 
+                1,
+                1);
+
+    /* Create the Graphics Stubs */
+    CreateStubs(Files[NativeGuiDb], 
+                &Files[Win32kStubs], 
+                NULL, 
+                WIN32K_INDEX, 
                 1,
-                1);
-
-    /* Create the Graphics Stubs */
-    CreateStubs(Files[NativeGuiDb], 
-                &Files[Win32kStubs], 
-                NULL, 
-                WIN32K_INDEX, 
-                1,
-                0);
-
-    /* Rewind the databases */
-    rewind(Files[NativeSystemDb]);
-    rewind(Files[NativeGuiDb]);
-
-    /* Create the Service Tables */
-    CreateSystemServiceTable(Files[NativeSystemDb], 
-                            Files[NtosServiceTable],
-                            "Main",
-                            argv[NtosServiceTable + ArgOffset]);
-    
-    CreateSystemServiceTable(Files[NativeGuiDb], 
-                            Files[Win32kServiceTable],
-                            "Win32k",
-                            argv[Win32kServiceTable + ArgOffset]);
-
-    /* Close all files */
-    for (FileNumber = 0; FileNumber < Arguments-ArgOffset; FileNumber++) {
-    
-        /* Close the File */
-        fclose(Files[FileNumber]);
-        
-    }
-
-    return(0);
-}
+                0);
+
+    /* Rewind the databases */
+    rewind(Files[NativeSystemDb]);
+    rewind(Files[NativeGuiDb]);
+
+    /* Create the Service Tables */
+    CreateSystemServiceTable(Files[NativeSystemDb], 
+                            Files[NtosServiceTable],
+                            "Main",
+                            argv[NtosServiceTable + ArgOffset]);
+    
+    CreateSystemServiceTable(Files[NativeGuiDb], 
+                            Files[Win32kServiceTable],
+                            "Win32k",
+                            argv[Win32kServiceTable + ArgOffset]);
+
+    /* Close all files */
+    for (FileNumber = 0; FileNumber < Arguments-ArgOffset; FileNumber++) {
+    
+        /* Close the File */
+        fclose(Files[FileNumber]);
+        
+    }
+
+    return(0);
+}

Propchange: trunk/reactos/tools/ofw_interface/calls.ofw
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/reactos/tools/ofw_interface/ofw_interface.cpp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/reactos/tools/ofw_interface/ofw_interface.mak
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/reactos/tools/ppc.lost+found/bootcd
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/reactos/tools/ppc.lost+found/hfsmap.lst
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/reactos/tools/ppc.lost+found/link-freeldr
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/reactos/tools/ppc.lost+found/ofboot.b
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: trunk/reactos/tools/ppc.lost+found/pmake
------------------------------------------------------------------------------
    svn:eol-style = native




More information about the Ros-diffs mailing list