Sync to trunk head (35333)
[reactos.git] / reactos / boot / freeldr / freeldr / reactos / setupldr.c
index 2dcd86d..dcc4bc0 100644 (file)
@@ -68,20 +68,20 @@ VOID RunLoader(VOID)
 
   /* Setup multiboot information structure */
   LoaderBlock.CommandLine = reactos_kernel_cmdline;
-  LoaderBlock.PageDirectoryStart = (ULONG)&PageDirectoryStart;
-  LoaderBlock.PageDirectoryEnd = (ULONG)&PageDirectoryEnd;
+  LoaderBlock.PageDirectoryStart = (ULONG_PTR)&PageDirectoryStart;
+  LoaderBlock.PageDirectoryEnd = (ULONG_PTR)&PageDirectoryEnd;
   LoaderBlock.ModsCount = 0;
   LoaderBlock.ModsAddr = reactos_modules;
   LoaderBlock.MmapLength = (unsigned long)MachGetMemoryMap((PBIOS_MEMORY_MAP)reactos_memory_map, 32) * sizeof(memory_map_t);
   if (LoaderBlock.MmapLength)
   {
-#ifdef _M_IX86
+#if defined (_M_IX86) || defined (_M_AMD64)
       ULONG i;
 #endif
       LoaderBlock.Flags |= MB_FLAGS_MEM_INFO | MB_FLAGS_MMAP_INFO;
-      LoaderBlock.MmapAddr = (unsigned long)&reactos_memory_map;
+      LoaderBlock.MmapAddr = (ULONG_PTR)&reactos_memory_map;
       reactos_memory_map_descriptor_size = sizeof(memory_map_t); // GetBiosMemoryMap uses a fixed value of 24
-#ifdef _M_IX86
+#if defined (_M_IX86) || defined (_M_AMD64)
       for (i=0; i<(LoaderBlock.MmapLength/sizeof(memory_map_t)); i++)
       {
           if (BiosMemoryUsable == reactos_memory_map[i].type &&
@@ -113,7 +113,7 @@ VOID RunLoader(VOID)
 
   /* Detect hardware */
   UiDrawStatusText("Detecting hardware...");
-  LoaderBlock.ArchExtra = (ULONG)MachHwDetect();
+  LoaderBlock.ArchExtra = (ULONG_PTR)MachHwDetect();
   UiDrawStatusText("");
 
   /* set boot device */
@@ -289,6 +289,17 @@ VOID RunLoader(VOID)
       return;
     }
 
+  /* Load fastfat.sys (could be loaded by the setup prog!) */
+  if (!LoadDriver(SourcePath, "fastfat.sys"))
+    return;
+
+  /* Load ext2.sys (could be loaded by the setup prog!) */
+  if (!LoadDriver(SourcePath, "ext2.sys"))
+  {
+      DbgPrint((DPRINT_WARNING, "Could not load ext2\n"));
+//    return;
+  }
+
     /* Load additional files specified in txtsetup.inf */
     if (InfFindFirstLine(InfHandle,
                          "SourceDisksFiles",
@@ -304,7 +315,10 @@ VOID RunLoader(VOID)
                 if (strcmp(Media, "x") == 0)
                 {
                     if (!FrLdrLoadDriver((PCHAR)DriverName,0))
+                    {
+                        DbgPrint((DPRINT_WARNING, "could not load %s, %s\n", SourcePath, DriverName));
                         return;
+                    }
                 }
             }
         } while (InfFindNextLine(&InfContext, &InfContext));