From e4202a6eec9dd2140bca8f209cfc57e5815fbe94 Mon Sep 17 00:00:00 2001 From: ReactOS Portable Systems Group Date: Sun, 13 Jul 2008 08:20:02 +0000 Subject: [PATCH] - Make sure this is XIP (Execute in Place) boot and not ramdisk boot before warning the user. Silences an incorrect debug print during ramdisk boot. svn path=/trunk/; revision=34454 --- reactos/ntoskrnl/ex/xipdisp.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/ex/xipdisp.c b/reactos/ntoskrnl/ex/xipdisp.c index c767e4af296..9f1a48171dd 100644 --- a/reactos/ntoskrnl/ex/xipdisp.c +++ b/reactos/ntoskrnl/ex/xipdisp.c @@ -42,7 +42,7 @@ VOID NTAPI XIPInit(IN PLOADER_PARAMETER_BLOCK LoaderBlock) { - PCHAR CommandLine, XipBoot, XipRom, XipMegs, XipVerbose; + PCHAR CommandLine, XipBoot, XipRom, XipMegs, XipVerbose, XipRam; PMEMORY_ALLOCATION_DESCRIPTOR XipDescriptor; /* Get the command line */ @@ -51,6 +51,7 @@ XIPInit(IN PLOADER_PARAMETER_BLOCK LoaderBlock) /* Get XIP settings */ XipBoot = strstr(CommandLine, "XIPBOOT"); + XipRam = strstr(CommandLine, "XIPRAM="); XipRom = strstr(CommandLine, "XIPROM="); XipMegs = strstr(CommandLine, "XIPMEGS="); XipVerbose = strstr(CommandLine, "XIPVERBOSE"); @@ -69,6 +70,12 @@ XIPInit(IN PLOADER_PARAMETER_BLOCK LoaderBlock) /* Find the XIP memory descriptor */ XipDescriptor = XIPpFindMemoryDescriptor(LoaderBlock); if (!XipDescriptor) return; + + // + // Make sure this is really XIP, and not RAM Disk -- also validate XIP + // Basically, either this is a ROM boot or a RAM boot, but not both nor none + // + if (!((ULONG_PTR)XipRom ^ (ULONG_PTR)XipRam)) return; /* FIXME: TODO */ DPRINT1("ReactOS does not yet support eXecute In Place boot technology\n");