- Move NCI generated files to arch-specific directories
[reactos.git] / reactos / tools / nci / ncitool.c
index 712a597..908c3cd 100644 (file)
@@ -51,7 +51,7 @@
 #if defined(__GNUC__)
 #define UserModeStub_x86    "    movl $0x%x, %%eax\n" \
                             "    movl $KUSER_SHARED_SYSCALL, %%ecx\n" \
 #if defined(__GNUC__)
 #define UserModeStub_x86    "    movl $0x%x, %%eax\n" \
                             "    movl $KUSER_SHARED_SYSCALL, %%ecx\n" \
-                            "    call *%%ecx\n" \
+                            "    call *(%%ecx)\n" \
                             "    ret $0x%x\n\n"
 
 #define UserModeStub_ppc    "    mflr 0\n" \
                             "    ret $0x%x\n\n"
 
 #define UserModeStub_ppc    "    mflr 0\n" \
@@ -112,11 +112,11 @@ struct ncitool_data_t {
 };
 
 struct ncitool_data_t ncitool_data[] = {
 };
 
 struct ncitool_data_t ncitool_data[] = {
-       { "x86", 4, KernelModeStub_x86, UserModeStub_x86,
+       { "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" },
          ".global _%s@%d\n", "_%s@%d:\n" },
        { "powerpc", 4, KernelModeStub_ppc, UserModeStub_ppc,
          "\t.globl %s\n", "%s:\n" },
-       { 0 }
+       { 0, }
 };
 int arch_sel = 0;
 #define ARGS_TO_BYTES(x) 4*(ncitool_data[arch_sel].args_to_bytes)
 };
 int arch_sel = 0;
 #define ARGS_TO_BYTES(x) 4*(ncitool_data[arch_sel].args_to_bytes)
@@ -525,8 +525,9 @@ void usage(char * argv0)
            "  zw.S          NTOSKRNL Zw stubs\n"
            "  win32k.S      GDI32 stubs\n"
            "  win32k.S      USER32 stubs\n"
            "  zw.S          NTOSKRNL Zw stubs\n"
            "  win32k.S      GDI32 stubs\n"
            "  win32k.S      USER32 stubs\n"
-          "  -arch is optional, default is x86\n",
-           argv0
+           "  -arch is optional, default is %s\n",
+           argv0,
+           ncitool_data[0].arch
            );
 }
 
            );
 }
 
@@ -538,14 +539,15 @@ int main(int argc, char* argv[])
 
     /* Catch architecture argument */
     if (argc > 3 && !strcmp(argv[1],"-arch")) {
 
     /* Catch architecture argument */
     if (argc > 3 && !strcmp(argv[1],"-arch")) {
-       int i;
-       for( i = 0; ncitool_data[arch_sel].arch && strcmp(argv[2],ncitool_data[i].arch); i++ );
-       if (!ncitool_data[arch_sel].arch) {
-           usage(argv[0]);
-           return 1;
-       }
-       arch_sel = i;
-       ArgOffset = 3;
+        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) {
     }
     /* Make sure all arguments all there */
     if (argc != Arguments + ArgOffset) {
@@ -565,7 +567,6 @@ int main(int argc, char* argv[])
             perror(argv[FileNumber + ArgOffset]);
             return (1);
         }
             perror(argv[FileNumber + ArgOffset]);
             return (1);
         }
-    
     }
 
     /* Write the File Headers */
     }
 
     /* Write the File Headers */