u-boot: Fix after multi-loader changes
* Move MMU image to a real image define vs being crammed into the u-boot bootloader Jamfile * ARM not working yet, but better! * x86 still builds Change-Id: I3fb873dbac06fe2db893915b667bf3ce1df44686
This commit is contained in:
@@ -241,6 +241,7 @@ rule KernelArchitectureSetup architecture
|
||||
case ppc :
|
||||
HAIKU_KERNEL_PLATFORM ?= openfirmware ;
|
||||
HAIKU_BOOT_TARGETS += openfirmware ;
|
||||
|
||||
HAIKU_BOOT_FLOPPY_IMAGE_SIZE = 1440 ; # in kB
|
||||
# offset in floppy image (>= sizeof(haiku_loader))
|
||||
HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET = 384 ; # in kB
|
||||
@@ -258,6 +259,16 @@ rule KernelArchitectureSetup architecture
|
||||
HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET = 192 ; # in kB - unused yet
|
||||
HAIKU_BOOT_LOADER_BASE ?= 0x1000000 ;
|
||||
|
||||
# Modern u-boot fill in sane addresses for us.
|
||||
# We only need to fill in the FDT dtb
|
||||
HAIKU_MMC_UBOOT_SCRIPT = "\
|
||||
test -e mmc 0 uEnv.txt && fatload mmc 0 ${scriptaddr} uEnv.txt && env import -t ${scriptaddr} ${filesize} \
|
||||
fatload mmc 0 ${kernel_addr_r} haiku_loader.u-boot \
|
||||
fatload mmc 0 ${ramdisk_addr_r} haiku-floppyboot.tgz.u-boot \
|
||||
fatload mmc 0 ${fdt_addr_r} ${dtb} \
|
||||
fdt addr ${fdt_addr_r} \
|
||||
bootm ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}" ;
|
||||
|
||||
case arm64 :
|
||||
HAIKU_BOOT_PLATFORM ?= efi ;
|
||||
|
||||
|
||||
+11
-1
@@ -56,6 +56,15 @@ HAIKU_INSTALL_TARGETS_VAR on $(HAIKU_CD_BOOT_IMAGE_CONTAINER_NAME)
|
||||
HAIKU_CONTAINER_SYSTEM_DIR_TOKENS on $(HAIKU_CD_BOOT_IMAGE_CONTAINER_NAME)
|
||||
= system ;
|
||||
|
||||
# boot MMC image
|
||||
HAIKU_MMC_BOOT_IMAGE_CONTAINER_NAME = haiku-boot-mmc-container ;
|
||||
HAIKU_CONTAINER_GRIST on $(HAIKU_MMC_BOOT_IMAGE_CONTAINER_NAME) = MMCImage ;
|
||||
# HAIKU_INCLUDE_IN_CONTAINER_VAR -- update only mode not supported
|
||||
HAIKU_INSTALL_TARGETS_VAR on $(HAIKU_MMC_BOOT_IMAGE_CONTAINER_NAME)
|
||||
= HAIKU_MMC_BOOT_IMAGE_INSTALL_TARGETS ;
|
||||
HAIKU_CONTAINER_SYSTEM_DIR_TOKENS on $(HAIKU_MMC_BOOT_IMAGE_CONTAINER_NAME)
|
||||
= system ;
|
||||
|
||||
# Haiku image/install defaults
|
||||
HAIKU_DEFAULT_IMAGE_NAME = haiku.image ;
|
||||
HAIKU_DEFAULT_IMAGE_DIR = $(HAIKU_OUTPUT_DIR) ;
|
||||
@@ -75,7 +84,8 @@ HAIKU_DEFAULT_ANYBOOT_DIR = $(HAIKU_OUTPUT_DIR) ;
|
||||
HAIKU_DEFAULT_ANYBOOT_LABEL ?= Haiku ;
|
||||
|
||||
# Haiku MMC defaults
|
||||
HAIKU_DEFAULT_MMC_IMAGE_NAME = haiku-mmc.image ;
|
||||
#HAIKU_DEFAULT_MMC_NAME = haiku-$(TARGET_KERNEL_ARCH).mmc ;
|
||||
HAIKU_DEFAULT_MMC_NAME = haiku.mmc ;
|
||||
HAIKU_DEFAULT_MMC_DIR = $(HAIKU_OUTPUT_DIR) ;
|
||||
HAIKU_DEFAULT_MMC_LABEL ?= Haiku ;
|
||||
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
# Set anyboot file name and directory defaults.
|
||||
HAIKU_MMC_NAME ?= $(HAIKU_DEFAULT_MMC_NAME) ;
|
||||
HAIKU_MMC_DIR ?= $(HAIKU_DEFAULT_MMC_DIR) ;
|
||||
HAIKU_MMC = $(HAIKU_MMC_NAME) ;
|
||||
HAIKU_MMC_LABEL ?= $(HAIKU_DEFAULT_MMC_LABEL) ;
|
||||
|
||||
# SD/mmc image rule
|
||||
# requires mtools package on linux
|
||||
rule BuildUBootSDImage image : files
|
||||
{
|
||||
Depends $(image) : $(files) $(TARGET_DEVICE_TREES) ;
|
||||
SDIMAGE_BLOCK_SIZE on $(image) = 1048576 ; # 1MiB
|
||||
SDIMAGE_MTOOLS_H on $(image) = 255 ;
|
||||
SDIMAGE_MTOOLS_S on $(image) = 63 ;
|
||||
SDIMAGE_MTOOLS_C on $(image) = 8 ;
|
||||
SDIMAGE_SIZE on $(image) = $(HAIKU_BOOT_SDIMAGE_SIZE) ;
|
||||
SDIMAGE_BEGIN on $(image) = $(HAIKU_BOOT_SDIMAGE_BEGIN:E=63) ;
|
||||
BuildUBootSDImage1 $(image) : $(files) ;
|
||||
}
|
||||
|
||||
actions BuildUBootSDImage1
|
||||
{
|
||||
$(RM) $(1)
|
||||
$(RM) $(1).mtools
|
||||
|
||||
# make an empty image
|
||||
dd of=$(1) \
|
||||
if=/dev/zero \
|
||||
bs=$(SDIMAGE_BLOCK_SIZE) \
|
||||
count=$(SDIMAGE_SIZE)
|
||||
# generate mtools config
|
||||
echo 'drive i: file="$(1)" partition=1 cylinders=$(SDIMAGE_MTOOLS_C)
|
||||
heads=$(SDIMAGE_MTOOLS_H) sectors=$(SDIMAGE_MTOOLS_S)
|
||||
mformat_only' > $(1).mtools
|
||||
# partition it
|
||||
MTOOLSRC=$(1).mtools mpartition -b$(SDIMAGE_BEGIN) -cI -T 0xc i:
|
||||
# format the image
|
||||
MTOOLSRC=$(1).mtools mformat -L 32 -v "HAIKU" i:
|
||||
|
||||
# generate u-boot environment variables
|
||||
echo '$(HAIKU_BOARD_SDIMAGE_UBOOT_UENV)' > uEnv.txt
|
||||
# populate
|
||||
MTOOLSRC=$(1).mtools mcopy $(2[1-]) i:
|
||||
MTOOLSRC=$(1).mtools mcopy uEnv.txt i:
|
||||
# populate fdts
|
||||
MTOOLSRC=$(1).mtools mmd i:\fdt
|
||||
MTOOLSRC=$(1).mtools mcopy $(TARGET_DEVICE_TREES[1-]) i:\fdt\
|
||||
# list content
|
||||
MTOOLSRC=$(1).mtools mdir i:
|
||||
MTOOLSRC=$(1).mtools mdir i:\fdt
|
||||
# cleanup
|
||||
$(RM) $(1).mtools
|
||||
$(RM) uEnv.txt
|
||||
# Add haiku bootstrap partition to MMC image
|
||||
#cat $(2[0]) >> $(1)
|
||||
}
|
||||
|
||||
# SD/mmc image targets
|
||||
BuildUBootSDImage $(HAIKU_MMC_NAME) :
|
||||
$(HAIKU_IMAGE) haiku_loader.u-boot haiku-floppyboot.tgz.u-boot boot.scr ;
|
||||
#BlessSDImage haiku-$(TARGET_KERNEL_ARCH).mmc ;
|
||||
NotFile haiku-mmc-image ;
|
||||
Depends haiku-mmc-image : $(HAIKU_MMC_NAME) ;
|
||||
Reference in New Issue
Block a user