From 046e01014db5f36443d0b36aaec623c05e749ec7 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Wed, 28 Nov 2012 02:00:00 +0100 Subject: [PATCH] Add boot archive base and size and map the boot archive. An archive (ramfs) to be loaded can be specified in the raspberry pi config.txt with a certain base address. We can use this to put our floppy boot archive into memory on startup. During the start procedure we now map that archive so we can later load the kernel from it. --- build/jam/board/raspberry_pi/BoardSetup | 5 +++++ src/system/boot/platform/raspberrypi_arm/Jamfile | 4 +++- src/system/boot/platform/raspberrypi_arm/start.cpp | 5 +++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/build/jam/board/raspberry_pi/BoardSetup b/build/jam/board/raspberry_pi/BoardSetup index c70eb90a3d..ef568f2b09 100644 --- a/build/jam/board/raspberry_pi/BoardSetup +++ b/build/jam/board/raspberry_pi/BoardSetup @@ -9,6 +9,11 @@ HAIKU_BOOT_PLATFORM = raspberrypi_arm ; HAIKU_BOARD_LOADER_BASE = 0x0 ; +HAIKU_BOARD_BOOT_ARCHIVE_BASE = 0x04000000 ; +HAIKU_BOARD_BOOT_ARCHIVE_SIZE = 0x00400000 ; + # TODO: needs to be configured in the config.txt + # ramfsfile=haiku-floppyboot.tgz and ramfsaddr=x + # # Flash image # diff --git a/src/system/boot/platform/raspberrypi_arm/Jamfile b/src/system/boot/platform/raspberrypi_arm/Jamfile index 538ac0f615..7293dbf9a0 100644 --- a/src/system/boot/platform/raspberrypi_arm/Jamfile +++ b/src/system/boot/platform/raspberrypi_arm/Jamfile @@ -12,7 +12,9 @@ UsePrivateHeaders [ FDirName storage ] ; UsePrivateHeaders [ FDirName kernel arch $(TARGET_KERNEL_ARCH) board $(TARGET_BOOT_BOARD) ] ; { - local defines = _BOOT_MODE ; + local defines = _BOOT_MODE + BOOT_ARCHIVE_BASE=$(HAIKU_BOARD_BOOT_ARCHIVE_BASE) + BOOT_ARCHIVE_SIZE=$(HAIKU_BOARD_BOOT_ARCHIVE_SIZE) ; defines = [ FDefines $(defines) ] ; SubDirCcFlags $(defines) ; diff --git a/src/system/boot/platform/raspberrypi_arm/start.cpp b/src/system/boot/platform/raspberrypi_arm/start.cpp index 008ac9229d..daf40aef77 100644 --- a/src/system/boot/platform/raspberrypi_arm/start.cpp +++ b/src/system/boot/platform/raspberrypi_arm/start.cpp @@ -120,6 +120,11 @@ _start(void) mmu_init(); platform_init_video(); + // Map in the boot archive loaded into memory by the firmware. + args.platform.boot_tgz_size = BOOT_ARCHIVE_SIZE; + args.platform.boot_tgz_data = (void*)mmu_map_physical_memory( + BOOT_ARCHIVE_BASE, args.platform.boot_tgz_size, kDefaultPageFlags); + serial_init(); console_init();