Author: ros-arm-bringup Date: Sun Jun 29 21:42:12 2008 New Revision: 34204
URL: http://svn.reactos.org/svn/reactos?rev=34204&view=rev Log: - Add RAM disk support to FreeLDR and to the NTLDR emulation layer in the kernel for non-clean archs (ppc and x86)
Modified: trunk/reactos/boot/freeldr/freeldr/reactos/reactos.c trunk/reactos/include/reactos/rosldr.h trunk/reactos/ntoskrnl/ke/freeldr.c
Modified: trunk/reactos/boot/freeldr/freeldr/reactos/reactos.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/reacto... ============================================================================== --- trunk/reactos/boot/freeldr/freeldr/reactos/reactos.c [iso-8859-1] (original) +++ trunk/reactos/boot/freeldr/freeldr/reactos/reactos.c [iso-8859-1] Sun Jun 29 21:42:12 2008 @@ -601,6 +601,8 @@ LoaderBlock.ModsCount = 0; LoaderBlock.ModsAddr = reactos_modules; LoaderBlock.DrivesAddr = reactos_arc_disk_info; + LoaderBlock.RdAddr = (ULONG)gRamDiskBase; + LoaderBlock.RdLength = gRamDiskSize; LoaderBlock.MmapLength = (unsigned long)MachGetMemoryMap((PBIOS_MEMORY_MAP)reactos_memory_map, 32) * sizeof(memory_map_t); if (LoaderBlock.MmapLength) {
Modified: trunk/reactos/include/reactos/rosldr.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/rosldr.h?re... ============================================================================== --- trunk/reactos/include/reactos/rosldr.h [iso-8859-1] (original) +++ trunk/reactos/include/reactos/rosldr.h [iso-8859-1] Sun Jun 29 21:42:12 2008 @@ -35,6 +35,8 @@ UCHAR Syms[12]; ULONG MmapLength; ULONG MmapAddr; + ULONG RdLength; + ULONG RdAddr; ULONG DrivesCount; PARC_DISK_SIGNATURE DrivesAddr; ULONG ConfigTable;
Modified: trunk/reactos/ntoskrnl/ke/freeldr.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/freeldr.c?rev=3... ============================================================================== --- trunk/reactos/ntoskrnl/ke/freeldr.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ke/freeldr.c [iso-8859-1] Sun Jun 29 21:42:12 2008 @@ -1148,6 +1148,21 @@ KERNEL_DESCRIPTOR_PAGE(RosEntry->ModEnd), 0, &Base); + + // + // Check if we have a ramdisk + // + if ((RosLoaderBlock->RdAddr) && (RosLoaderBlock->RdLength)) + { + // + // Build a descriptor for it + // + KiRosAllocateNtDescriptor(LoaderXIPRom, + KERNEL_DESCRIPTOR_PAGE(RosLoaderBlock->RdAddr), + (RosLoaderBlock->RdLength + PAGE_SIZE - 1) >> PAGE_SHIFT, + 0, + &Base); + }
/* Setup command line */ LoaderBlock->LoadOptions = BldrCommandLine;