From 09504f4242b18f07f31934b6df73953f483c549d Mon Sep 17 00:00:00 2001 From: evb Date: Wed, 3 Feb 2010 23:17:16 +0000 Subject: [PATCH] - Enable RAMDISK support in LLB. - Build commandline for OS Loader (FreeLDR). - Now ready to start loading freeldr.ini svn path=/trunk/; revision=45403 --- reactos/boot/armllb/hw/versatile/hwinit.c | 19 ++++++++++++++++--- reactos/boot/armllb/inc/osloader.h | 2 +- reactos/boot/armllb/main.c | 2 +- reactos/boot/armllb/os/loader.c | 5 +---- reactos/boot/freeldr/freeldr/freeldr.rbuild | 2 +- 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/reactos/boot/armllb/hw/versatile/hwinit.c b/reactos/boot/armllb/hw/versatile/hwinit.c index 184caca9b93..ca04d4789d3 100755 --- a/reactos/boot/armllb/hw/versatile/hwinit.c +++ b/reactos/boot/armllb/hw/versatile/hwinit.c @@ -29,10 +29,23 @@ POSLOADER_INIT NTAPI LlbHwLoadOsLoaderFromRam(VOID) { - ULONG Base, Dummy; + ULONG Base, RootFs, Size; + CHAR CommandLine[64]; - /* On versatile, the loader is loaded with the RAMDISK. Just get the address */ - LlbEnvGetRamDiskInformation(&Base, &Dummy); + /* On versatile, the NAND image is loaded as the RAMDISK */ + LlbEnvGetRamDiskInformation(&Base, &Size); + + /* The LLB is first, which we already have, so skip it */ + Base += 0x10000; // 64 KB (see nandflash) + + /* The OS loader is next, followed by the root file system */ + RootFs = Base + 0x80000; // 512 KB (see nandflash) + + /* Set parameters for the OS loader */ + sprintf(CommandLine, "rdbase=0x%x rdsize=0x%x", RootFs, Size); + LlbSetCommandLine(CommandLine); + + /* Return the OS loader base address */ return (POSLOADER_INIT)Base; } diff --git a/reactos/boot/armllb/inc/osloader.h b/reactos/boot/armllb/inc/osloader.h index 291625e0d97..a62e5fc3d54 100644 --- a/reactos/boot/armllb/inc/osloader.h +++ b/reactos/boot/armllb/inc/osloader.h @@ -94,7 +94,7 @@ LlbLoadOsLoader( VOID NTAPI LlbBoot( - IN PCHAR CommandLine + VOID ); /* EOF */ diff --git a/reactos/boot/armllb/main.c b/reactos/boot/armllb/main.c index 2931debdc71..e18ae4cd2b7 100755 --- a/reactos/boot/armllb/main.c +++ b/reactos/boot/armllb/main.c @@ -29,7 +29,7 @@ LlbStartup(IN ULONG Reserved, printf("ReactOS ARM Low-Level Boot Loader [" __DATE__ " "__TIME__ "]\n"); /* Boot the OS Loader */ - LlbBoot(""); + LlbBoot(); while (TRUE); } diff --git a/reactos/boot/armllb/os/loader.c b/reactos/boot/armllb/os/loader.c index 0853ff0bfce..7c990df9c0a 100755 --- a/reactos/boot/armllb/os/loader.c +++ b/reactos/boot/armllb/os/loader.c @@ -124,7 +124,7 @@ LlbLoadOsLoader(VOID) VOID NTAPI -LlbBoot(IN PCHAR CommandLine) +LlbBoot(VOID) { /* Setup the ARM block */ LlbBuildArmBlock(); @@ -132,9 +132,6 @@ LlbBoot(IN PCHAR CommandLine) /* Build the memory map */ LlbBuildMemoryMap(); - /* Set the command-line */ - LlbSetCommandLine(CommandLine); - /* Load the OS loader */ LlbLoadOsLoader(); diff --git a/reactos/boot/freeldr/freeldr/freeldr.rbuild b/reactos/boot/freeldr/freeldr/freeldr.rbuild index aa63c55b70a..f6fc7c2179a 100644 --- a/reactos/boot/freeldr/freeldr/freeldr.rbuild +++ b/reactos/boot/freeldr/freeldr/freeldr.rbuild @@ -38,7 +38,7 @@ -Wl,--image-base=0x80FFF000 - -Wl,--image-base=0x007FF000 + -Wl,--image-base=0x0080F000 -- 2.17.1