[haiku-commits] haiku: hrev56225 - src/system/boot/platform/u-boot/arch/arm build/jam/board build/jam/board/rpi2 build/jam/board/overo build/jam/board/beagleboard

  • From: waddlesplash <waddlesplash@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 28 Jun 2022 16:27:55 +0000 (UTC)

hrev56225 adds 1 changeset to branch 'master'
old head: 7c09ef12550b2d3ba32086de3b612308e5c326cd
new head: 63816858af9119229552e9e51967e8d1b6410de6
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=63816858af91+%5E7c09ef12550b

----------------------------------------------------------------------------

63816858af91: boot/platform/u-boot: Drop ARM support.
  
  Newer versions of u-boot support EFI natively, which is what we
  have been making use of instead.
  
  There may be some use for the "native" u-boot loader still on PowerPC,
  but otherwise the EFI support is much more advanced and even in u-boot
  supports as or more features than "native" loaders, so there is no
  reason to keep this around.

                              [ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev56225
Commit:      63816858af9119229552e9e51967e8d1b6410de6
URL:         https://git.haiku-os.org/haiku/commit/?id=63816858af91
Author:      Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date:        Tue Jun 28 16:27:06 2022 UTC

----------------------------------------------------------------------------

21 files changed, 2 insertions(+), 2682 deletions(-)
build/jam/board/beagleboard/BoardSetup           |  80 --
build/jam/board/beaglebone/BoardSetup            |  60 --
build/jam/board/cubieboard4/BoardSetup           |  72 --
build/jam/board/neo_freerunner/BoardSetup        |  77 --
build/jam/board/overo/BoardSetup                 | 101 ---
build/jam/board/rpi2/BoardSetup                  |  74 --
build/jam/board/rpi2/config.txt                  |  25 -
src/system/boot/arch/arm/Jamfile                 |   2 +-
src/system/boot/arch/riscv64/Jamfile             |   2 +-
src/system/boot/platform/u-boot/arch/arm/Jamfile |  48 --
.../platform/u-boot/arch/arm/arch_framebuffer.h  |  60 --
.../u-boot/arch/arm/arch_framebuffer_920.cpp     |  96 ---
.../u-boot/arch/arm/arch_framebuffer_bcm2835.cpp | 201 -----
.../u-boot/arch/arm/arch_framebuffer_omap3.cpp   | 383 ---------
.../u-boot/arch/arm/arch_framebuffer_pxa.cpp     | 230 ------
.../boot/platform/u-boot/arch/arm/arch_mailbox.h |  50 --
.../u-boot/arch/arm/arch_mailbox_bcm2835.cpp     |  98 ---
.../boot/platform/u-boot/arch/arm/arch_mmu.cpp   | 816 -------------------
.../platform/u-boot/arch/arm/arch_start_kernel.S |  38 -
src/system/boot/platform/u-boot/arch/arm/shell.S |  94 ---
src/system/ldscripts/arm/boot_loader_u-boot.ld   |  77 --

----------------------------------------------------------------------------

diff --git a/build/jam/board/beagleboard/BoardSetup 
b/build/jam/board/beagleboard/BoardSetup
deleted file mode 100644
index e94aa8af94..0000000000
--- a/build/jam/board/beagleboard/BoardSetup
+++ /dev/null
@@ -1,80 +0,0 @@
-# BeagleBoard board-specific definitions
-
-HAIKU_BOARD_DESCRIPTION = "BeagleBoard" ;
-HAIKU_BOARD_FDT_NAME = "omap3-beagle-xm" ;
-
-
-#
-# Various hardcoded addresses
-#
-
-# load address for haiku_loader
-HAIKU_BOARD_LOADER_BASE = 0x80800000 ;
-# entry points (raw binary, and netbsd loader emulation)
-HAIKU_BOARD_LOADER_ENTRY_RAW = $(HAIKU_BOARD_LOADER_BASE) ;
-HAIKU_BOARD_LOADER_ENTRY_NBSD = `printf \"obase=16;ibase=16;8 + %x\\n\" 
$(HAIKU_BOARD_LOADER_BASE)|bc` ;
-HAIKU_BOARD_LOADER_ENTRY_LINUX = `printf \"obase=16;ibase=16;10 + %x\\n\" 
$(HAIKU_BOARD_LOADER_BASE)|bc` ;
-
-HAIKU_BOARD_LOADER_ENTRY = $(HAIKU_BOARD_LOADER_ENTRY_NBSD) ;
-HAIKU_BOARD_LOADER_FAKE_OS = netbsd ;
-
-# load address for haiku_loader uimage
-# (must be different than real load address)
-HAIKU_BOARD_LOADER_UIBASE = 0x82800000 ;
-
-#
-# Flash image
-#
-
-# OMAP x-loader image, must be first file on FAT partition
-HAIKU_BOARD_MLO_IMAGE ?= MLO ;
-HAIKU_BOARD_MLO_IMAGE_URL =
-       http://downloads.angstrom-distribution.org/demo/beagleboard/MLO ;;
-
-# u-boot binary image filename, to build the flash image
-# XXX: Locate it somehow (for now just put it in generated/)
-HAIKU_BOARD_UBOOT_IMAGE ?= u-boot.img ;
-HAIKU_BOARD_UBOOT_IMAGE_URL =
-       http://downloads.angstrom-distribution.org/demo/beagleboard/u-boot.img ;;
-
-#
-# mmc/SD image
-#
-
-# in MB
-HAIKU_BOARD_SDIMAGE_SIZE = 64 ;
-
-# in MB
-HAIKU_BOARD_SDIMAGE_FAT_SIZE = 32 ;
-
-mloFile = [ DownloadFile $(HAIKU_BOARD_MLO_IMAGE)
-        : $(HAIKU_BOARD_MLO_IMAGE_URL) ] ;
-
-ubootFile = [ DownloadFile $(HAIKU_BOARD_UBOOT_IMAGE)
-        : $(HAIKU_BOARD_UBOOT_IMAGE_URL) ] ;
-
-# U-Boot environment
-# We load the uImage 2MB above its final destination, bootm will decode
-# it to the proper location. Our image is smaller than 2MB so this works.
-#HAIKU_BOARD_SDIMAGE_UBOOT_UENV_NAME = uEnv.txt ;
-HAIKU_BOARD_SDIMAGE_UBOOT_UENV = "uenvcmd=run loadImage; run mmcboot; \
-               loadImage=fatload mmc0 0 $(HAIKU_BOARD_LOADER_UIBASE) 
haiku_loader_linux.ub; fatload mmc 0 0x80100000 
/fdt/$(HAIKU_BOARD_FDT_NAME).dtb; fatload mmc 0 0x81200000 
haiku-floppyboot.tgz.ub; \
-               mmcboot=bootm $(HAIKU_BOARD_LOADER_UIBASE) 0x81200000 
0x80100000" ;
-
-HAIKU_BOARD_SDIMAGE_FILES =
-       $(mloFile)
-       $(ubootFile)
-       haiku_loader_nbsd.ub
-       haiku_loader_linux.ub
-       haiku-floppyboot.tgz.ub
-;
-
-
-#
-# gcc flags for the specific cpu
-
-local flags = -mcpu=cortex-a8 -mfpu=vfpv3 -mfloat-abi=hard ;
-
-HAIKU_ASFLAGS_$(HAIKU_PACKAGING_ARCH) += $(flags) ;
-HAIKU_CCFLAGS_$(HAIKU_PACKAGING_ARCH) += $(flags) ;
-HAIKU_C++FLAGS_$(HAIKU_PACKAGING_ARCH) += $(flags) ;
diff --git a/build/jam/board/beaglebone/BoardSetup 
b/build/jam/board/beaglebone/BoardSetup
deleted file mode 100644
index 363c9e88bb..0000000000
--- a/build/jam/board/beaglebone/BoardSetup
+++ /dev/null
@@ -1,60 +0,0 @@
-# BeagleBone board-specific definitions
-
-HAIKU_BOARD_DESCRIPTION = "BeagleBone" ;
-HAIKU_BOARD_FDT_NAME = "boneblack" ;
-
-# Not that many in the wild
-#HAIKU_BOARD_FDT_NAME = "beaglebone" ;
-
-
-#
-# Various hardcoded addresses
-#
-
-# load address for haiku_loader
-HAIKU_BOARD_LOADER_BASE = 0x80800000 ;
-HAIKU_BOARD_LOADER_ENTRY_RAW = $(HAIKU_BOARD_LOADER_BASE) ;
-HAIKU_BOARD_LOADER_ENTRY_NBSD = `printf \"obase=16;ibase=16;8 + %x\\n\" 
$(HAIKU_BOARD_LOADER_BASE)|bc` ;
-HAIKU_BOARD_LOADER_ENTRY_LINUX = `printf \"obase=16;ibase=16;10 + %x\\n\" 
$(HAIKU_BOARD_LOADER_BASE)|bc` ;
-
-#
-# mmc/SD image
-#
-
-# in MB
-HAIKU_BOARD_SDIMAGE_SIZE = 64 ;
-HAIKU_BOARD_SDIMAGE_FAT_SIZE = 32 ;
-
-# OMAP x-loader image, must be first file on FAT partition
-HAIKU_BOARD_MLO_IMAGE_URL = 
https://github.com/haiku/firmware/raw/master/arm/beaglebone ;;
-mloFile = [ DownloadFile MLO : $(HAIKU_BOARD_MLO_IMAGE_URL)/MLO ] ;
-
-# u-boot image
-HAIKU_BOARD_UBOOT_IMAGE_URL = 
https://github.com/haiku/firmware/raw/master/arm/beaglebone ;;
-ubootFile = [ DownloadFile u-boot.img : 
$(HAIKU_BOARD_UBOOT_IMAGE_URL)/u-boot.img ] ;
-
-# U-Boot environment
-HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT_NAME = boot.scr ;
-HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT = "\
-fatload mmc 0 ${fdt_addr_r} /fdt/$(HAIKU_BOARD_FDT_NAME).dtb \
-    fdt addr ${fdt_addr_r} \
-    fatload mmc 0 ${ramdisk_addr_r} haiku-floppyboot.tgz.ub \
-    fatload mmc 0 ${kernel_addr_r} haiku_loader_linux.ub \
-    bootm ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}" ;
-
-HAIKU_BOARD_SDIMAGE_FILES =
-       $(mloFile)
-       $(ubootFile)
-       haiku_loader_linux.ub
-       haiku-floppyboot.tgz.ub
-    $(HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT_NAME)
-;
-
-#
-# gcc flags for the specific cpu
-
-local flags = -mcpu=cortex-a8 -mfpu=vfpv3 -mfloat-abi=hard ;
-
-HAIKU_ASFLAGS_$(HAIKU_PACKAGING_ARCH) += $(flags) ;
-HAIKU_CCFLAGS_$(HAIKU_PACKAGING_ARCH) += $(flags) ;
-HAIKU_C++FLAGS_$(HAIKU_PACKAGING_ARCH) += $(flags) ;
diff --git a/build/jam/board/cubieboard4/BoardSetup 
b/build/jam/board/cubieboard4/BoardSetup
deleted file mode 100644
index aea73c3fa0..0000000000
--- a/build/jam/board/cubieboard4/BoardSetup
+++ /dev/null
@@ -1,72 +0,0 @@
-# Cubieboard 4 board-specific definitions
-# This likely could be easily used for other Allwinner chipsets
-
-HAIKU_BOARD_DESCRIPTION = "Cubieboard 4 (CC-A80)" ;
-HAIKU_BOARD_FDT_NAME = "cubieboard4" ;
-
-#
-# Various hardcoded addresses
-#
-
-# 0x20000000 = SDRAM start
-# 0x20007800 = haiku_loader_linux.ub
-# 0x20087800 = BASE
-
-HAIKU_BOARD_LOADER_BASE = 0x20087800 ;
-HAIKU_BOARD_LOADER_ENTRY_RAW = $(HAIKU_BOARD_LOADER_BASE) ;
-HAIKU_BOARD_LOADER_ENTRY_NBSD = `printf \"obase=16;ibase=16;8 + %x\\n\" 
$(HAIKU_BOARD_LOADER_BASE)|bc` ;
-HAIKU_BOARD_LOADER_ENTRY_LINUX = `printf \"obase=16;ibase=16;10 + %x\\n\" 
$(HAIKU_BOARD_LOADER_BASE)|bc` ;
-
-#
-# mmc/SD image
-#
-
-HAIKU_BOARD_FIRMWARE_URL = 
"https://github.com/cubieboard/CC-A80-binaries/raw/master/bin" ;;
-
-# u-boot image
-# Dear Cubbieboard, add fdt_addr_r, ramdisk_addr_r, kernel_addr_r to u-boot
-HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT_NAME = boot.scr ;
-HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT = "\
-    fatload mmc 0 0x20800000 haiku-floppyboot.tgz.ub \
-    fatload mmc 0 0x20007800 haiku_loader_linux.ub \
-    bootm 0x20007800 0x20800000" ;
-
-HAIKU_BOARD_SDIMAGE_FAT_SIZE = 32 ;
-HAIKU_BOARD_SDIMAGE_FILES = 
-       haiku_loader_linux.ub
-       haiku-floppyboot.tgz.ub
-       $(HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT_NAME)
-;
-
-HAIKU_BOARD_SDIMAGE_BEGIN = 40950 ; # 512-byte sectors (divisible by 63)
-HAIKU_BOARD_SDIMAGE_SIZE = 128 ; # MiB
-
-boot0File = [ DownloadFile sdcard-boot0 : 
$(HAIKU_BOARD_FIRMWARE_URL)/sdcard-boot0 ] ;
-boot1File = [ DownloadFile sdcard-boot1 : 
$(HAIKU_BOARD_FIRMWARE_URL)/sdcard-boot1 ] ;
-
-# The Allwinner chips require an SD card "blessed" with
-# the boot0 SPL and boot1 (u-boot) at a fixed location on
-# the SD card. (Dear AW, please support loading from FAT)
-HAIKU_BOARD_SDIMAGE_BOOT0_FILE = $(boot0File) ;
-HAIKU_BOARD_SDIMAGE_BOOT0_SEEK = 8192 ;
-HAIKU_BOARD_SDIMAGE_BOOT1_FILE = $(boot1File) ;
-HAIKU_BOARD_SDIMAGE_BOOT1_SEEK = 19554304 ;
-
-#
-# gcc flags for the specific cpu
-#
-
-local flags = -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard ;
-
-HAIKU_ASFLAGS_$(HAIKU_PACKAGING_ARCH) += $(flags) ;
-HAIKU_CCFLAGS_$(HAIKU_PACKAGING_ARCH) += $(flags) ;
-HAIKU_C++FLAGS_$(HAIKU_PACKAGING_ARCH) += $(flags) ;
-
-# Workaround for ld using 32k for alignment despite forcing it in the config...
-# should definitely not be needed!
-HAIKU_KERNEL_LINKFLAGS +=
-    -Wl,-z -Wl,max-page-size=0x1000
-    -Wl,-z -Wl,common-page-size=0x1000 ;
-HAIKU_LINKFLAGS_$(HAIKU_PACKAGING_ARCH) +=
-    -Wl,-z -Wl,max-page-size=0x1000
-    -Wl,-z -Wl,common-page-size=0x1000 ;
diff --git a/build/jam/board/neo_freerunner/BoardSetup 
b/build/jam/board/neo_freerunner/BoardSetup
deleted file mode 100644
index f1f92ac696..0000000000
--- a/build/jam/board/neo_freerunner/BoardSetup
+++ /dev/null
@@ -1,77 +0,0 @@
-# Gumstix Verdex board-specific definitions
-
-HAIKU_BOARD_DESCRIPTION = "Openmoko Neo FreeRunner" ;
-
-#
-# Various hardcoded addresses
-#
-
-# load address for haiku_loader
-HAIKU_BOARD_LOADER_BASE = 0x32000000 ;
-# entry points (raw binary, and netbsd loader emulation)
-HAIKU_BOARD_LOADER_ENTRY_RAW = 0x32000000 ;
-HAIKU_BOARD_LOADER_ENTRY_NBSD = 0x32000008 ;
-
-HAIKU_BOARD_LOADER_ENTRY = $(HAIKU_BOARD_LOADER_ENTRY_NBSD) ;
-HAIKU_BOARD_LOADER_FAKE_OS = netbsd ;
-
-# load address for haiku_loader uimage
-# (must be different than real load address)
-HAIKU_BOARD_LOADER_UIBASE = 0x34000000 ;
-
-#
-# Flash image
-#
-
-# u-boot binary image filename, to build the flash image
-# XXX: Locate it somehow (for now just put it in generated/)
-#HAIKU_BOARD_UBOOT_IMAGE ?= u-boot-verdex-400-r1604.bin ;
-#HAIKU_BOARD_UBOOT_IMAGE_URL =
-#      http://www.gumstix.net/feeds/u-boot/u-boot-verdex-400-r1604.bin ;;
-
-
-#
-# mmc/SD image
-#
-
-# in MB
-HAIKU_BOARD_SDIMAGE_SIZE = 256 ;
-
-# in MB
-HAIKU_BOARD_SDIMAGE_FAT_SIZE = 32 ;
-
-# autoboot script
-HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT_NAME = uImage.bin ;
-
-HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT = "\
-if mmcinit; then \
-       neo backlight off; \
-       fatload mmc 0 $(HAIKU_BOARD_LOADER_UIBASE) haiku_loader_nbsd.ub; \
-       neo backlight on; \
-       bootm $(HAIKU_BOARD_LOADER_UIBASE); \
-fi" ;
-
-HAIKU_BOARD_SDIMAGE_FILES =
-       haiku_loader
-       haiku_loader.ub
-       haiku_loader_nbsd.ub
-       $(HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT_NAME)
-;
-
-
-#
-# gcc flags for the specific cpu
-#
-
-HAIKU_CCFLAGS_$(HAIKU_PACKAGING_ARCH) += -mcpu=arm920t ;
-HAIKU_C++FLAGS_$(HAIKU_PACKAGING_ARCH) += -mcpu=arm920t ;
-
-# Workaround for ld using 32k for alignment despite forcing it in the config...
-# should definitely not be needed!
-HAIKU_KERNEL_LINKFLAGS +=
-       -Wl,-z -Wl,max-page-size=0x1000
-       -Wl,-z -Wl,common-page-size=0x1000 ;
-HAIKU_LINKFLAGS_$(HAIKU_PACKAGING_ARCH) +=
-       -Wl,-z -Wl,max-page-size=0x1000
-       -Wl,-z -Wl,common-page-size=0x1000 ;
-
diff --git a/build/jam/board/overo/BoardSetup b/build/jam/board/overo/BoardSetup
deleted file mode 100644
index 7e911d7504..0000000000
--- a/build/jam/board/overo/BoardSetup
+++ /dev/null
@@ -1,101 +0,0 @@
-# Gumstix Overo board-specific definitions
-
-HAIKU_BOARD_DESCRIPTION = "Gumstix Overo" ;
-HAIKU_BOARD_FDT_NAME = "omap3-overo-tobi" ;
-
-#
-# Various hardcoded addresses
-#
-
-# load address for haiku_loader
-HAIKU_BOARD_LOADER_BASE = 0x80800000 ;
-# entry points (raw binary, and netbsd loader emulation)
-HAIKU_BOARD_LOADER_ENTRY_RAW = 0x80800000 ;
-HAIKU_BOARD_LOADER_ENTRY_NBSD = 0x80800008 ;
-HAIKU_BOARD_LOADER_ENTRY_LINUX = 0x80800010 ;
-
-HAIKU_BOARD_LOADER_ENTRY = $(HAIKU_BOARD_LOADER_ENTRY_NBSD) ;
-HAIKU_BOARD_LOADER_FAKE_OS = netbsd ;
-
-# load address for haiku_loader uimage
-# (must be different than real load address)
-HAIKU_BOARD_LOADER_UIBASE = 0x82800000 ;
-
-#
-# Flash image
-#
-
-# cf. http://gumstix.org/how-to/70-writing-images-to-flash.html
-
-# OMAP x-loader image, must be first file in Flash image
-HAIKU_BOARD_MLO_IMAGE ?= MLO ;
-HAIKU_BOARD_MLO_IMAGE_URL =
-       http://cumulus.gumstix.org/images/angstrom/developer/current/MLO ;;
-
-# u-boot binary image filename, to build the flash image
-# XXX: Locate it somehow (for now just put it in generated/)
-HAIKU_BOARD_UBOOT_IMAGE ?= u-boot.bin ;
-HAIKU_BOARD_UBOOT_IMAGE_URL =
-       http://cumulus.gumstix.org/images/angstrom/developer/current/u-boot.bin ;
;
-
-mloFile = [ DownloadFile $(HAIKU_BOARD_MLO_IMAGE)
-        : $(HAIKU_BOARD_MLO_IMAGE_URL) ] ;
-
-ubootFile = [ DownloadFile $(HAIKU_BOARD_UBOOT_IMAGE)
-        : $(HAIKU_BOARD_UBOOT_IMAGE_URL) ] ;
-
-FLASH_IMAGE_PARTS =
-       $(mloFile)
-       $(ubootFile)
-       ;
-
-# flash offsets:
-# in kB
-FLASH_IMAGE_LOADER_OFFSET = 31744 ;
-
-FLASH_OFFSET on $(mloFile) = 0 ;
-FLASH_OFFSET on $(ubootFile) = 512 ;
-
-
-#
-# mmc/SD image
-#
-
-# in MB
-HAIKU_BOARD_SDIMAGE_SIZE = 256 ;
-
-# in MB
-HAIKU_BOARD_SDIMAGE_FAT_SIZE = 32 ;
-
-# autoboot script
-HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT_NAME = boot.scr ;
-HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT = "\
-setenv bootargs debug_screen true; \
-if mmc rescan; then \
-       fatload mmc 0 0x80100000 /fdt/$(HAIKU_BOARD_FDT_NAME).dtb ; \
-       fatload mmc 0 0x81200000 haiku-floppyboot.tgz.ub; \
-       fatload mmc 0 $(HAIKU_BOARD_LOADER_UIBASE) haiku_loader_linux.ub; \
-       bootm $(HAIKU_BOARD_LOADER_UIBASE) 0x81200000 0x80100000; \
-fi" ;
-
-HAIKU_BOARD_SDIMAGE_FILES =
-       $(mloFile)
-       $(ubootFile)
-       haiku_loader
-       haiku_loader.ub
-       haiku_loader_linux.ub
-       haiku_loader_nbsd.ub
-       haiku-floppyboot.tgz.ub
-       $(HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT_NAME)
-;
-
-
-#
-# gcc flags for the specific cpu
-#
-
-local flags = -mcpu=cortex-a8 -mfpu=vfpv3 -mfloat-abi=hard ;
-
-HAIKU_ASFLAGS_$(HAIKU_PACKAGING_ARCH) += $(flags) ;
-HAIKU_CCFLAGS_$(HAIKU_PACKAGING_ARCH) += $(flags) ;
-HAIKU_C++FLAGS_$(HAIKU_PACKAGING_ARCH) += $(flags) ;
diff --git a/build/jam/board/rpi2/BoardSetup b/build/jam/board/rpi2/BoardSetup
deleted file mode 100644
index 75ed9c8587..0000000000
--- a/build/jam/board/rpi2/BoardSetup
+++ /dev/null
@@ -1,74 +0,0 @@
-# Raspberry Pi 2 board-specific definitions
-
-HAIKU_BOARD_DESCRIPTION = "Raspberry Pi 2" ;
-HAIKU_BOARD_FDT_NAME = "rpi2" ;
-
-#
-# Various hardcoded addresses
-#
-
-HAIKU_BOARD_LOADER_BASE = 0x00080000 ;
-HAIKU_BOARD_LOADER_ENTRY_RAW = $(HAIKU_BOARD_LOADER_BASE) ;
-HAIKU_BOARD_LOADER_ENTRY_NBSD = `printf \"obase=16;ibase=16;8 + %x\\n\" 
$(HAIKU_BOARD_LOADER_BASE)|bc` ;
-HAIKU_BOARD_LOADER_ENTRY_LINUX = `printf \"obase=16;ibase=16;10 + %x\\n\" 
$(HAIKU_BOARD_LOADER_BASE)|bc` ;
-
-#
-# mmc/SD image
-#
-
-# u-boot image
-HAIKU_BOARD_UBOOT_IMAGE_URL = 
https://github.com/haiku/firmware/raw/master/arm/rpi2 ;;
-ubootFile = [ DownloadFile u-boot.bin : 
$(HAIKU_BOARD_UBOOT_IMAGE_URL)/u-boot.bin ] ;
-configFile = [ DownloadFile config.txt : 
$(HAIKU_BOARD_UBOOT_IMAGE_URL)/config.txt ] ;
-
-# Raspberry Pi foundation loader
-HAIKU_BOARD_FIRMWARE_URL = 
https://github.com/raspberrypi/firmware/raw/master/boot ;;
-bootcodeFile = [ DownloadFile bootcode.bin : 
$(HAIKU_BOARD_FIRMWARE_URL)/bootcode.bin ] ;
-startFile = [ DownloadFile start.elf : $(HAIKU_BOARD_FIRMWARE_URL)/start.elf ] 
;
-licenseFile = [ DownloadFile LICENCE.broadcom : 
$(HAIKU_BOARD_FIRMWARE_URL)/LICENCE.broadcom ] ;
-
-HAIKU_BOARD_FIRMWARE_FILES =
-       $(bootcodeFile)
-       $(startFile)
-       $(licenseFile)
-;
-
-HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT_NAME = boot.scr ;
-HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT = "\
-fatload mmc 0 ${fdt_addr_r} /fdt/$(HAIKU_BOARD_FDT_NAME).dtb \
-    fdt addr ${fdt_addr_r} \
-    fatload mmc 0 ${ramdisk_addr_r} haiku-floppyboot.tgz.ub \
-    fatload mmc 0 ${kernel_addr_r} haiku_loader_linux.ub \
-    bootm ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}" ;
-
-HAIKU_BOARD_SDIMAGE_FAT_SIZE = 32 ;
-HAIKU_BOARD_SDIMAGE_FILES = 
-       $(HAIKU_BOARD_FIRMWARE_FILES)
-       $(configFile)
-       $(ubootFile)
-       haiku_loader_linux.ub
-       haiku-floppyboot.tgz.ub
-       $(HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT_NAME)
-;
-
-HAIKU_BOARD_SDIMAGE_SIZE = 128 ;
-
-#
-# gcc flags for the specific cpu
-#
-
-local flags = -march=armv7-a -mfloat-abi=hard ;
-
-HAIKU_ASFLAGS_$(HAIKU_PACKAGING_ARCH) += $(flags) ;
-HAIKU_CCFLAGS_$(HAIKU_PACKAGING_ARCH) += $(flags) ;
-HAIKU_C++FLAGS_$(HAIKU_PACKAGING_ARCH) += $(flags) ;
-
-# Workaround for ld using 32k for alignment despite forcing it in the config...
-# should definitely not be needed!
-HAIKU_KERNEL_LINKFLAGS +=
-       -Wl,-z -Wl,max-page-size=0x1000
-       -Wl,-z -Wl,common-page-size=0x1000 ;
-HAIKU_LINKFLAGS_$(HAIKU_PACKAGING_ARCH) +=
-       -Wl,-z -Wl,max-page-size=0x1000
-       -Wl,-z -Wl,common-page-size=0x1000 ;
-
diff --git a/build/jam/board/rpi2/config.txt b/build/jam/board/rpi2/config.txt
deleted file mode 100644
index d7e54cf586..0000000000
--- a/build/jam/board/rpi2/config.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-##### CPU Speed
-#arm_freq 700
-
-##### Memory layout
-#gpu_mem 64
-
-# Memory based on model.. overrides gpu_mem
-#gpu_mem_256 64
-#gpu_mem_512 64
-
-##### Low level
-kernel=haiku_loader
-kernel_address=0x0
-ramfsfile=haiku-floppyboot.tgz
-ramfsaddr=0x04000000
-
-# Skip boot tags for non-linux platforms
-disable_commandline_tags=1
-#device_tree=bcm2835.dtb
-#device_tree_address=0x100
-
-##### UART Settings
-# Default is 115200
-#init_uart_baud=9600
-#init_uart_clock=
diff --git a/src/system/boot/arch/arm/Jamfile b/src/system/boot/arch/arm/Jamfile
index a1f25f9a9a..66d81b7d91 100644
--- a/src/system/boot/arch/arm/Jamfile
+++ b/src/system/boot/arch/arm/Jamfile
@@ -24,7 +24,7 @@ local kernelGenericDriverSources =
 ;
 
 local platform ;
-for platform in [ MultiBootSubDirSetup u-boot efi ] {
+for platform in [ MultiBootSubDirSetup efi ] {
     on $(platform) {
                DEFINES += _BOOT_MODE ;
                BootMergeObject [ FGristFiles boot_arch_$(TARGET_KERNEL_ARCH).o 
] :
diff --git a/src/system/boot/arch/riscv64/Jamfile 
b/src/system/boot/arch/riscv64/Jamfile
index b9fee173bf..94a5c810d0 100644
--- a/src/system/boot/arch/riscv64/Jamfile
+++ b/src/system/boot/arch/riscv64/Jamfile
@@ -32,7 +32,7 @@ local kernelGenericDriverSources =
 ;
 
 local platform ;
-for platform in [ MultiBootSubDirSetup u-boot efi riscv ] {
+for platform in [ MultiBootSubDirSetup efi riscv ] {
        on $(platform) {
                DEFINES += _BOOT_MODE ;
                BootMergeObject [ FGristFiles boot_arch_$(TARGET_KERNEL_ARCH).o 
] :
diff --git a/src/system/boot/platform/u-boot/arch/arm/Jamfile 
b/src/system/boot/platform/u-boot/arch/arm/Jamfile
deleted file mode 100644
index 6ce1f5cef7..0000000000
--- a/src/system/boot/platform/u-boot/arch/arm/Jamfile
+++ /dev/null
@@ -1,48 +0,0 @@
-SubDir HAIKU_TOP src system boot platform u-boot arch arm ;
-
-SubDirHdrs $(HAIKU_TOP) src system boot platform $(TARGET_BOOT_PLATFORM) ;
-SubDirHdrs $(HAIKU_TOP) src system boot arch $(TARGET_KERNEL_ARCH_DIR) ;
-SubDirHdrs $(HAIKU_TOP) src add-ons kernel bus_managers fdt ;
-
-UseLibraryHeaders [ FDirName libfdt ] ;
-
-UsePrivateSystemHeaders ;
-UsePrivateHeaders kernel [ FDirName kernel platform u-boot ] ;
-UsePrivateHeaders kernel [ FDirName kernel arch $(TARGET_KERNEL_ARCH_DIR) ]
-       [ FDirName kernel boot platform $(HAIKU_BOOT_PLATFORM) ] ;
-
-SubDirC++Flags -fno-rtti ;
-
-# Things we borrow from the kernel due to lack of bios services
-local kernelArchDriverSources =
-       #arch_uart_8250.cpp
-       arch_uart_8250_omap.cpp
-       arch_uart_pl011.cpp
-;
-
-BootMergeObject boot_platform_u-boot_arm.o :
-       # must come first to have _start_* at correct locations
-       shell.S
-
-       # Kernel entry calls
-       arch_start_kernel.S
-
-       # Framebuffer drivers
-       arch_framebuffer_920.cpp
-       arch_framebuffer_bcm2835.cpp
-       arch_framebuffer_omap3.cpp
-       arch_framebuffer_pxa.cpp
-
-       $(kernelArchDriverSources)
-
-       # Mailbox drivers
-       arch_mailbox_bcm2835.cpp
-
-       # u-boot mmu setup
-       arch_mmu.cpp
-;
-
-SEARCH on [ FGristFiles $(kernelArchDriverSources) ]
-       = [ FDirName $(HAIKU_TOP) src system kernel arch 
$(TARGET_KERNEL_ARCH_DIR) ] ;
-#SEARCH on [ FGristFiles arch_cpu_asm.S ]
-#    = [ FDirName $(HAIKU_TOP) src system kernel arch 
$(TARGET_KERNEL_ARCH_DIR) ] ;
diff --git a/src/system/boot/platform/u-boot/arch/arm/arch_framebuffer.h 
b/src/system/boot/platform/u-boot/arch/arm/arch_framebuffer.h
deleted file mode 100644
index 86b5ec99bc..0000000000
--- a/src/system/boot/platform/u-boot/arch/arm/arch_framebuffer.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2011-2012 Haiku, Inc. All rights reserved.
- * Distributed under the terms of the MIT License.
- *
- * Authors:
- *             Alexander von Gluck IV, kallisti5@xxxxxxxxxxx
- */
-#ifndef _ARCH_FRAMEBUFFER_H
-#define _ARCH_FRAMEBUFFER_H
-
-
-#include <boot/platform.h>
-#include <SupportDefs.h>
-
-
-#define TRACE_VIDEO
-#ifdef TRACE_VIDEO
-#   define TRACE(x...) dprintf(x)
-#      define CALLED() dprintf("%s()\n", __func__);
-#else
-#   define TRACE(x...) ;
-#      define CALLED() ;
-#endif
-#define ERROR(x...) dprintf(x)
-
-
-class ArchFramebuffer {
-public:
-                                                       ArchFramebuffer(addr_t 
base)
-                                                               :
-                                                               fBase(base) {};
-                                                       ~ArchFramebuffer() {};
-
-       virtual status_t                Init() { return B_OK; };
-       virtual status_t                Probe() { return B_OK; };
-       virtual status_t                SetDefaultMode() { return B_OK; };
-       virtual status_t                SetVideoMode(int width, int height, int 
depth)
-                                                               { return B_OK; 
};
-
-       virtual addr_t                  Base() { return fBase; };
-                       addr_t                  PhysicalBase() { return 
fPhysicalBase; };
-                       size_t                  Size() { return fSize; };
-
-                       int                             Width() { return 
fCurrentWidth; };
-                       int                             Height() { return 
fCurrentHeight; };
-                       int                             Depth() { return 
fCurrentDepth; };
-                       int                             BytesPerRow() { return 
fCurrentBytesPerRow; };
-
-protected:
-                       addr_t                  fBase;
-                       phys_addr_t             fPhysicalBase;
-                       size_t                  fSize;
-                       int                             fCurrentWidth;
-                       int                             fCurrentHeight;
-                       int                             fCurrentDepth;
-                       int                             fCurrentBytesPerRow;
-};
-
-
-#endif /* _ARCH_FRAMEBUFFER_H */
diff --git a/src/system/boot/platform/u-boot/arch/arm/arch_framebuffer_920.cpp 
b/src/system/boot/platform/u-boot/arch/arm/arch_framebuffer_920.cpp
deleted file mode 100644
index c9762e508d..0000000000
--- a/src/system/boot/platform/u-boot/arch/arm/arch_framebuffer_920.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright 2009-2012 Haiku, Inc. All rights reserved.
- * Distributed under the terms of the MIT License.
- *
- * Authors:
- *             François Revol, revol@xxxxxxx
- *             Alexander von Gluck IV, kallisti5@xxxxxxxxxxx
- */
-
-
-#include "arch_framebuffer.h"
-
-#include <arch/cpu.h>
-#include <boot/stage2.h>
-#include <boot/platform.h>
-#include <boot/menu.h>
-#include <boot/kernel_args.h>
-#include <boot/platform/generic/video.h>
-#include <drivers/driver_settings.h>
-
-
-class ArchFBArm920 : public ArchFramebuffer {
-public:
-                                                       ArchFBArm920(addr_t 
base)
-                                                               : 
ArchFramebuffer(base) {}
-                                                       ~ArchFBArm920() {}
-                       status_t                Init();
-                       status_t                Probe();
-                       status_t                SetDefaultMode();
-                       status_t                SetVideoMode(int width, int 
height, int depth);
-};
-
-extern "C" ArchFramebuffer *arch_get_fb_arm_920(addr_t base)
-{
-       return new ArchFBArm920(base);
-}
-
-status_t
-ArchFBArm920::Init()
-{
-       gKernelArgs.frame_buffer.enabled = true;
-
-#warning TODO: ARM920 init
-       return B_OK;
-}
-
-
-status_t
-ArchFBArm920::Probe()
-{
-#if 0
-       // TODO: More dynamic framebuffer base?
-       if (!fBase) {
-               int err = platform_allocate_region(&gFrameBufferBase,
-                       gKernelArgs.frame_buffer.physical_buffer.size, 0, 
false);
-               if (err < B_OK)
-                       return err;
-               gKernelArgs.frame_buffer.physical_buffer.start
-                       = (addr_t)gFrameBufferBase;
-               dprintf("video framebuffer: %p\n", gFrameBufferBase);
-       }
-#else
-       gKernelArgs.frame_buffer.physical_buffer.start = fBase;
-#endif
-
-       gKernelArgs.frame_buffer.depth = 16;
-       gKernelArgs.frame_buffer.width = 1024;
-       gKernelArgs.frame_buffer.height = 768;
-       gKernelArgs.frame_buffer.bytes_per_row = gKernelArgs.frame_buffer.width 
* 2;
-       gKernelArgs.frame_buffer.physical_buffer.size
-               = gKernelArgs.frame_buffer.width
-               * gKernelArgs.frame_buffer.height
-               * gKernelArgs.frame_buffer.depth / 8;
-
-       dprintf("video mode: %ux%ux%u\n", gKernelArgs.frame_buffer.width,
-               gKernelArgs.frame_buffer.height, 
gKernelArgs.frame_buffer.depth);
-
-       return B_OK;
-}
-
-
-status_t
-ArchFBArm920::SetDefaultMode()
-{
-       return SetVideoMode(gKernelArgs.frame_buffer.width,
-               gKernelArgs.frame_buffer.height,
-               gKernelArgs.frame_buffer.depth);
-}
-
-
-status_t
-ArchFBArm920::SetVideoMode(int width, int height, int depth)
-{
-       #warning TODO: ArchFBArm920 SetVideoMode
-       return B_OK;
-}
diff --git 
a/src/system/boot/platform/u-boot/arch/arm/arch_framebuffer_bcm2835.cpp 
b/src/system/boot/platform/u-boot/arch/arm/arch_framebuffer_bcm2835.cpp
deleted file mode 100644
index afbb039509..0000000000
--- a/src/system/boot/platform/u-boot/arch/arm/arch_framebuffer_bcm2835.cpp
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright 2012-2015 Haiku, Inc. All rights reserved.
- * Distributed under the terms of the MIT License.
- *
- * Authors:
- *             Michael Lotz, mmlr@xxxxxxxx
- *             François Revol, revol@xxxxxxx
- *             Alexander von Gluck IV, kallisti5@xxxxxxxxxxx
- */
-
-
-#include "arch_framebuffer.h"
-
-#include <arch/arm/bcm283X.h>
-#include <arch/cpu.h>
-#include <boot/stage2.h>
-#include <boot/platform.h>
-#include <boot/menu.h>
-#include <boot/kernel_args.h>
-#include <boot/platform/generic/video.h>
-#include <util/list.h>
-#include <drivers/driver_settings.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "arch_mailbox.h"
-#include "fdt_support.h"
-#include "mmu.h"
-
-
-//XXX
-extern "C" bool
-mmu_get_virtual_mapping(addr_t virtualAddress, phys_addr_t *_physicalAddress);
-
-extern "C" ArchMailbox*
-arch_get_mailbox_arm_bcm2835(addr_t base);
-
-
-extern void* gFDT;
-
-
-struct framebuffer_config {
-       uint32  width;
-       uint32  height;
-       uint32  virtual_width;
-       uint32  virtual_height;
-       uint32  bytes_per_row;                  // from GPU
-       uint32  bits_per_pixel;
-       uint32  x_offset;
-       uint32  y_offset;
-       uint32  frame_buffer_address;   // from GPU
-       uint32  screen_size;                    // from GPU
-       uint16  color_map[256];
-};
-
-
-static framebuffer_config sFramebufferConfig __attribute__((aligned(16)));
-
-
-class ArchFBArmBCM2835 : public ArchFramebuffer {
-public:
-                                                       ArchFBArmBCM2835(addr_t 
base)
-                                                               : 
ArchFramebuffer(base) {}
-                                                       ~ArchFBArmBCM2835() {}
-
-virtual        status_t                        Init();
-virtual        status_t                        Probe();
-virtual        status_t                        SetDefaultMode();
-virtual        status_t                        SetVideoMode(int width, int 
height, int depth);
-private:
-               ArchMailbox*            fMailbox;
-};
-
-
-extern "C" ArchFramebuffer*
-arch_get_fb_arm_bcm2835(addr_t base)
-{
-    return new ArchFBArmBCM2835(base);
-}
-
-
-status_t
-ArchFBArmBCM2835::Init()
-{
-       if (!gFDT) {
-               dprintf("ERROR: FDT access is unavailable!");
-               return B_ERROR;
-       }
-       phys_addr_t mboxBase = fdt_get_device_reg_byname(gFDT, "/axi/mbox");
-       if (!mboxBase) {
-               dprintf("ERROR: /axi/mbox is unavailable!");
-               return B_ERROR;
-       }
-       fMailbox = arch_get_mailbox_arm_bcm2835(mboxBase);
-
-       if (fMailbox == NULL) {
-               dprintf("ERROR: Broadcom mailbox is unavailable!");
-               return B_ERROR;
-       }
-
-       gKernelArgs.frame_buffer.enabled = true;
-       return B_OK;
-}
-
-
-status_t
-ArchFBArmBCM2835::Probe()
-{
-       return B_OK;
-}
-
-
-status_t
-ArchFBArmBCM2835::SetDefaultMode()
-{
-       status_t result;
-       do {
-               result = SetVideoMode(1920, 1080, 16);
-       } while (result != B_OK);
-
-       return B_OK;
-}
-
-
-status_t
-ArchFBArmBCM2835::SetVideoMode(int width, int height, int depth)
-{
-       //debug_assert(((uint32)&sFramebufferConfig & 0x0f) == 0);
-
-       sFramebufferConfig.width = width;
-       sFramebufferConfig.height = height;
-       sFramebufferConfig.virtual_width = sFramebufferConfig.width;
-       sFramebufferConfig.virtual_height = sFramebufferConfig.height;
-       sFramebufferConfig.bytes_per_row = 0; // from GPU
-       sFramebufferConfig.bits_per_pixel = depth;
-       sFramebufferConfig.x_offset = 0;
-       sFramebufferConfig.y_offset = 0;
-       sFramebufferConfig.frame_buffer_address = 0; // from GPU
-       sFramebufferConfig.screen_size = 0; // from GPU
-
-       if (depth < 16) {
-               const int colorMapEntries = sizeof(sFramebufferConfig.color_map)
-                       / sizeof(sFramebufferConfig.color_map[0]);
-               for (int i = 0; i < colorMapEntries; i++)
-                       sFramebufferConfig.color_map[i] = 0x1111 * i;
-       }
-
-       status_t result = fMailbox->Write(ARM_MAILBOX_CHANNEL_FRAMEBUFFER,
-               (uint32)&sFramebufferConfig | BCM283X_VIDEO_CORE_L2_COHERENT);
-       if (result != B_OK)
-               return result;
-
-       uint32 value;
-       result = fMailbox->Read(ARM_MAILBOX_CHANNEL_FRAMEBUFFER, value);
-       if (result != B_OK)
-               return result;
-
-       if (value != 0) {
-               dprintf("failed to configure framebuffer: %" B_PRIx32 "\n", 
value);
-               return B_ERROR;
-       }
-
-       if (sFramebufferConfig.frame_buffer_address == 0) {
-               dprintf("didn't get the framebuffer address\n");
-               return B_ERROR;
-       }
-
-       //debug_assert(sFramebufferConfig.x_offset == 0
-       //      && sFramebufferConfig.y_offset == 0
-       //      && sFramebufferConfig.width == (uint32)width
-       //      && sFramebufferConfig.height == (uint32)height
-       //      && sFramebufferConfig.virtual_width == sFramebufferConfig.width
-       //      && sFramebufferConfig.virtual_height == 
sFramebufferConfig.height
-       //      && sFramebufferConfig.bits_per_pixel == (uint32)depth
-       //      && sFramebufferConfig.bytes_per_row
-       //              >= sFramebufferConfig.bits_per_pixel / 8
-       //                      * sFramebufferConfig.width
-       //      && sFramebufferConfig.screen_size >= 
sFramebufferConfig.bytes_per_row
-       //              * sFramebufferConfig.height);
-
-       fPhysicalBase
-               = 
BCM283X_BUS_TO_PHYSICAL(sFramebufferConfig.frame_buffer_address);
-       fSize = sFramebufferConfig.screen_size;
-
-       fBase = (addr_t)mmu_map_physical_memory(fPhysicalBase, fSize, 
kDefaultPageFlags);
-
-       dprintf("video framebuffer: va: %p pa: %p\n", (void *)fBase,
-               (void *)fPhysicalBase);
-
-       fCurrentWidth = width;
-       fCurrentHeight = height;
-       fCurrentDepth = depth;
-       fCurrentBytesPerRow = sFramebufferConfig.bytes_per_row;
-
-       gKernelArgs.frame_buffer.physical_buffer.start = (addr_t)fPhysicalBase;
-
-       return B_OK;
-}
-
diff --git 
a/src/system/boot/platform/u-boot/arch/arm/arch_framebuffer_omap3.cpp 
b/src/system/boot/platform/u-boot/arch/arm/arch_framebuffer_omap3.cpp
deleted file mode 100644
index 57c499f793..0000000000
--- a/src/system/boot/platform/u-boot/arch/arm/arch_framebuffer_omap3.cpp
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * Copyright 2009-2012 Haiku, Inc. All rights reserved.
- * Distributed under the terms of the MIT License.
- *
- * Authors:
- *      François Revol, revol@xxxxxxx
- *      Alexander von Gluck IV, kallisti5@xxxxxxxxxxx
- */
-
-
-#include "arch_framebuffer.h"
-
-#include <arch/arm/omap3.h>
-#include <arch/cpu.h>
-#include <boot/stage2.h>
-#include <boot/platform.h>
-#include <boot/menu.h>
-#include <boot/kernel_args.h>
-#include <boot/platform/generic/video.h>
-#include <util/list.h>
-#include <drivers/driver_settings.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "graphics/omap/omap3_regs.h"
-
-
-//XXX
-extern "C" addr_t mmu_map_physical_memory(addr_t physicalAddress, size_t size,
-       uint32 flags);
-extern "C" bool
-mmu_get_virtual_mapping(addr_t virtualAddress, phys_addr_t *_physicalAddress);
-
-
-#define write_io_32(a, v) ((*(vuint32 *)a) = v)
-#define read_io_32(a) (*(vuint32 *)a)
-
-#define dumpr(a) dprintf("LCC:%s:0x%lx\n", #a, read_io_32(a))
-
-
-class ArchFBArmOmap3 : public ArchFramebuffer {
-public:
-                                                       ArchFBArmOmap3(addr_t 
base)
-                                                               : 
ArchFramebuffer(base) {}
-                                                       ~ArchFBArmOmap3() {}
-
-                       status_t                Init();
-                       status_t                Probe();
-                       status_t                SetDefaultMode();
-                       status_t                SetVideoMode(int width, int 
height, int depth);
-};
-
-extern "C" ArchFramebuffer *arch_get_fb_arm_omap3(addr_t base)
-{
-       return new ArchFBArmOmap3(base);
-}
-
-
-//     #pragma mark -
-
-
-struct video_mode {
-       short width, height;
-       const char *name;
-       uint32 dispc_timing_h;
-       uint32 dispc_timing_v;
-       uint32 dispc_divisor;
-       uint32 dss_divisor;
-};
-
-// Master clock (PLL4) is 864 Mhz, and changing it is a pita since it
-// cascades to other devices. 
-// Pixel clock is 864 / cm_clksel_dss.dss1_alwan_fclk / 
dispc_divisor.divisor.pcd
-// So most of these modes are just approximate (1280x1024 is correct)
-// List must be in ascending order.
-struct video_mode modes[] = {
-       {
-               640, 480, "640x480-71",
-               (128 << DISPCB_HBP) | (24 << DISPCB_HFP) | (40 << DISPCB_HSW),
-               (28 << DISPCB_VBP) | (9 << DISPCB_VFP) | (3 << DISPCB_VSW),
-               2, 14
-       },
-       {
-               800, 600, "800x600-59",
-               (88 << DISPCB_HBP) | (40 << DISPCB_HFP) | (128 << DISPCB_HSW),
-               (23 << DISPCB_VBP) | (1 << DISPCB_VFP) | (4 << DISPCB_VSW),
-               2, 11
-       },                
-       {
-               1024, 768, "1024x768-61",
-               (160 << DISPCB_HBP) | (24 << DISPCB_HFP) | (136 << DISPCB_HSW),
-               (29 << DISPCB_VBP) | (3 << DISPCB_VFP) | (6 << DISPCB_VSW),
-               1, 13
-       },
-       {
-               1280, 1024, "1280x1024-60",
-               (248 << DISPCB_HBP) | (48 << DISPCB_HFP) | (112 << DISPCB_HSW),
-               (38 << DISPCB_VBP) | (1 << DISPCB_VFP) | (3 << DISPCB_VSW),
-               1, 8
-       },
-};
-
-
-static inline void
-setaddr(uint32 reg, unsigned int v)
-{
-       *((volatile uint32 *)(reg)) = v;
-}
-
-
-static inline void
-modaddr(unsigned int reg, unsigned int m, unsigned int v)
-{
-       uint32 o;
-
-       o = *((volatile uint32 *)(reg));
-       o &= ~m;
-       o |= v;
-       *((volatile uint32 *)(reg)) = o;
-}
-
-
-static inline
-void setreg(uint32 base, unsigned int reg, unsigned int v)
-{
-       *((volatile uint32 *)(base + reg)) = v;
-}
-
-
-static inline
-uint32 readreg(uint32 base, unsigned int reg)
-{
-       return *((volatile uint32 *)(base + reg));
-}
-
-
-static inline void
-modreg(uint32 base, unsigned int reg, unsigned int m, unsigned int v)
-{
-       uint32 o;
-
-       o = *((volatile uint32 *)(base + reg));
-       o &= ~m;
-       o |= v;
-       *((volatile uint32 *)(base + reg)) = o;
-}
-
-
-// init beagle gpio for video
-static void
-omap_beagle_init(void)
-{
-       // setup GPIO stuff, i can't find any references to these
-       setreg(GPIO1_BASE, GPIO_OE, 0xfefffedf);
-       setreg(GPIO1_BASE, GPIO_SETDATAOUT, 0x01000120);
-       // DVI-D is enabled by GPIO 170?
-}
-
-
-static void
-omap_clock_init(void)
-{
-       // sets pixel clock to 72MHz
-
-       // sys_clk = 26.0 Mhz
-       // DPLL4 = sys_clk * 432 / 13 = 864
-       // DSS1_ALWON_FCLK = 864 / 6 = 144
-       // Pixel clock (DISPC_DIVISOR) = 144 / 2 = 72Mhz
-       // and also VENC clock = 864 / 16 = 54MHz
-
-       // The clock multiplier/divider cannot be changed
-       // without affecting other system clocks - do don't.
-
-       // pll4 clock multiplier/divider
-       setaddr(CM_CLKSEL2_PLL, (432 << 8) | 12);
-       // tv clock divider, dss1 alwon fclk divider
-       setaddr(CM_CLKSEL_DSS, (16 << 8) | 6);
-       // core/peripheral PLL to 1MHz
-       setaddr(CM_CLKEN_PLL, 0x00370037);
-}
-
-
-static void
-omap_dss_init(void)
-{
-       setreg(DSS_BASE, DSS_SYSCONFIG, DSS_AUTOIDLE);
-       // Select DSS1 ALWON as clock source
-       setreg(DSS_BASE, DSS_CONTROL, DSS_VENC_OUT_SEL | DSS_DAC_POWERDN_BGZ
-               | DSS_DAC_DEMEN | DSS_VENC_CLOCK_4X_ENABLE);
-}
-
-
-static void
-omap_dispc_init(void)
-{
-       uint32 DISPC = DISPC_BASE;
-
-       setreg(DISPC, DISPC_SYSCONFIG,
-               DISPC_MIDLEMODE_SMART
-               | DISPC_SIDLEMODE_SMART
-               | DISPC_ENWAKEUP
-               | DISPC_AUTOIDLE);
-
-       setreg(DISPC, DISPC_CONFIG, DISPC_LOADMODE_FRAME);
-
-       // LCD default colour = black
-       setreg(DISPC, DISPC_DEFAULT_COLOR0, 0x000000);
-
-       setreg(DISPC, DISPC_POL_FREQ,
-               DISPC_POL_IPC
-               | DISPC_POL_IHS
-               | DISPC_POL_IVS
-               | (2<<DISPCB_POL_ACBI)
-               | (8<<DISPCB_POL_ACB));
-
-       // Set pixel clock divisor = 2
-       setreg(DISPC, DISPC_DIVISOR,
-               (1<<DISPCB_DIVISOR_LCD)
-               | (2<<DISPCB_DIVISOR_PCD));
-
-       // Disable graphical output
-       setreg(DISPC, DISPC_GFX_ATTRIBUTES, 0);
-
-       // Turn on the LCD output
-       setreg(DISPC, DISPC_CONTROL,
-               DISPC_GPOUT1
-               | DISPC_GPOUT0
-               | DISPC_TFTDATALINES_24
-               | DISPC_STDITHERENABLE
-               | DISPC_GOLCD
-               | DISPC_STNTFT
-               | DISPC_LCDENABLE
-               );
-
-       while ((readreg(DISPC, DISPC_CONTROL) & DISPC_GOLCD))
-               ;
-}
-
-
-static void
-omap_set_lcd_mode(int w, int h)
-{
-       uint32 DISPC = DISPC_BASE;
-       unsigned int i;
-       struct video_mode *m;
-
-       dprintf("omap3: set_lcd_mode %d,%d\n", w, h);
-
-       for (i = 0; i < sizeof(modes) / sizeof(modes[0]); i++) {
-               if (w <= modes[i].width
-                       && h <= modes[i].height)
-               goto found;
-       }
-       i -= 1;
-found:
-       m = &modes[i];
-
-       dprintf("omap3: found mode[%s]\n", m->name);
-
-       setreg(DISPC, DISPC_SIZE_LCD, (m->width - 1) | ((m->height - 1) << 16));
-       setreg(DISPC, DISPC_TIMING_H, m->dispc_timing_h);
-       setreg(DISPC, DISPC_TIMING_V, m->dispc_timing_v);
-
-       modreg(DISPC, DISPC_DIVISOR, 0xffff, m->dispc_divisor);
-       modaddr(CM_CLKSEL_DSS, 0x3f, m->dss_divisor);
-
-       // Tell hardware to update, and wait for it
-       modreg(DISPC, DISPC_CONTROL,
-               DISPC_GOLCD,
-               DISPC_GOLCD);
-
-       while ((readreg(DISPC, DISPC_CONTROL) & DISPC_GOLCD))
-               ;
-}
-
-
-static void
-omap_attach_framebuffer(addr_t data, int width, int height, int depth)
-{
-       uint32 DISPC = DISPC_BASE;
-       uint32 gsize = ((height - 1) << 16) | (width - 1);
-
-       dprintf("omap3: attach bitmap (%d,%d) to screen\n", width, height);
-
-       setreg(DISPC, DISPC_GFX_BA0, (uint32)data);
-       setreg(DISPC, DISPC_GFX_BA1, (uint32)data);
-       setreg(DISPC, DISPC_GFX_POSITION, 0);
-       setreg(DISPC, DISPC_GFX_SIZE, gsize);
-       setreg(DISPC, DISPC_GFX_FIFO_THRESHOLD, (0x3ff << 16) | 0x3c0);
-       setreg(DISPC, DISPC_GFX_ROW_INC, 1);
-       setreg(DISPC, DISPC_GFX_PIXEL_INC, 1);
-       setreg(DISPC, DISPC_GFX_WINDOW_SKIP, 0);
-       setreg(DISPC, DISPC_GFX_ATTRIBUTES, DISPC_GFXFORMAT_RGB16
-               | DISPC_GFXBURSTSIZE_16x32 | DISPC_GFXENABLE);
-
-       // Tell hardware to update, and wait for it
-       modreg(DISPC, DISPC_CONTROL, DISPC_GOLCD, DISPC_GOLCD);
-
-       while ((readreg(DISPC, DISPC_CONTROL) & DISPC_GOLCD))
-               ;
-}
-
-
-status_t
-ArchFBArmOmap3::Init()
-{
-       gKernelArgs.frame_buffer.enabled = true;
-
-       setreg(DISPC_BASE, DISPC_IRQENABLE, 0x00000);
-       setreg(DISPC_BASE, DISPC_IRQSTATUS, 0x1ffff);
-
-       omap_beagle_init();
-       omap_clock_init();
-       omap_dss_init();
-       omap_dispc_init();
-
-       return B_OK;
-}
-
-
-status_t
-ArchFBArmOmap3::Probe()
-{
-
-       gKernelArgs.frame_buffer.depth = 16;
-       gKernelArgs.frame_buffer.width = 1024;
-       gKernelArgs.frame_buffer.height = 768;
-       gKernelArgs.frame_buffer.bytes_per_row = gKernelArgs.frame_buffer.width 
* 2;
-       gKernelArgs.frame_buffer.physical_buffer.size
-               = gKernelArgs.frame_buffer.width
-               * gKernelArgs.frame_buffer.height
-               * gKernelArgs.frame_buffer.depth / 8;
-
-#if 1
-       //dprintf("fBase %p\n", (void *)fBase);
-       if (!fBase || true) {
-               fBase = 0;
-               int err = platform_allocate_region((void **)&fBase,
-                       gKernelArgs.frame_buffer.physical_buffer.size, 0, 
false);
-               if (err < B_OK) return err;
-               if (!mmu_get_virtual_mapping(fBase, &fPhysicalBase))
-                       return B_ERROR;
-               gKernelArgs.frame_buffer.physical_buffer.start
-                       = (addr_t)fPhysicalBase;
-               dprintf("video framebuffer: va: %p pa: %p\n", (void *)fBase,
-                       (void *)fPhysicalBase);
-       }
-#else
-       // TODO: More dynamic framebuffer base?
-       fPhysicalBase = fBase;
-       gKernelArgs.frame_buffer.physical_buffer.start = fPhysicalBase;
-#endif
-
-       TRACE("video mode: %ux%ux%u\n", gKernelArgs.frame_buffer.width,
-               gKernelArgs.frame_buffer.height, 
gKernelArgs.frame_buffer.depth);
-
-       return B_OK;
-}
-
-
-status_t
-ArchFBArmOmap3::SetVideoMode(int width, int height, int depth)
-{
-       TRACE("%s: %dx%d@%d\n", __func__, width, height, depth);
-
-       omap_set_lcd_mode(width, height);
-       omap_attach_framebuffer(fPhysicalBase, width, height, depth);
-
-       return B_OK;
-}
-
-
-status_t
-ArchFBArmOmap3::SetDefaultMode()
-{
-       CALLED();
-
-       return SetVideoMode(gKernelArgs.frame_buffer.width,
-               gKernelArgs.frame_buffer.height,
-               gKernelArgs.frame_buffer.depth);
-}
diff --git a/src/system/boot/platform/u-boot/arch/arm/arch_framebuffer_pxa.cpp 
b/src/system/boot/platform/u-boot/arch/arm/arch_framebuffer_pxa.cpp
deleted file mode 100644
index 9c2048b80c..0000000000
--- a/src/system/boot/platform/u-boot/arch/arm/arch_framebuffer_pxa.cpp
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Copyright 2009-2012 Haiku, Inc. All rights reserved.
- * Distributed under the terms of the MIT License.
- *
- * Authors:
- *      François Revol, revol@xxxxxxx
- *      Alexander von Gluck IV, kallisti5@xxxxxxxxxxx
- */
-
-
-#include "arch_framebuffer.h"
-
-#include <arch/arm/pxa270.h>
-#include <arch/cpu.h>
-#include <boot/stage2.h>
-#include <boot/platform.h>
-#include <boot/menu.h>
-#include <boot/kernel_args.h>
-#include <boot/platform/generic/video.h>
-#include <util/list.h>
-#include <drivers/driver_settings.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-
-//XXX
-extern "C" addr_t mmu_map_physical_memory(addr_t physicalAddress, size_t size,
-       uint32 flags);
-
-
-class ArchFBArmPxa270 : public ArchFramebuffer {
-public:
-                                                       ArchFBArmPxa270(addr_t 
base)
-                                                               : 
ArchFramebuffer(base) {}
-                                                       ~ArchFBArmPxa270() {}
-                       status_t                Init();
-                       status_t                Probe();
-                       status_t                SetDefaultMode();
-                       status_t                SetVideoMode(int width, int 
height, int depth);
-};
-
-extern "C" ArchFramebuffer *arch_get_fb_arm_pxa270(addr_t base)
-{
-       return new ArchFBArmPxa270(base);
-}
-
-
-//  #pragma mark -
-
-
-#define write_io_32(a, v) ((*(vuint32 *)a) = v)
-#define read_io_32(a) (*(vuint32 *)a)
-
-#define dumpr(a) dprintf("LCC:%s:0x%lx\n", #a, read_io_32(a))
-
-
-static struct pxa27x_lcd_dma_descriptor sVideoDMADesc;
-static uint32 scratch[128] __attribute__((aligned(16)));
-
-
-status_t
-ArchFBArmPxa270::Init()
-{
-       gKernelArgs.frame_buffer.enabled = true;
-       return B_OK;
-}
-
-
-status_t
-ArchFBArmPxa270::Probe()
-{
-       CALLED();
-
-#if 0
-       // TODO: More dynamic framebuffer base?
-       if (!fBase) {
-               // XXX: realloc if larger !!!
-               err = platform_allocate_region(&gFrameBufferBase, fbSize, 0, 
false);
-dprintf("error %08x\n", err);
-               if (err < B_OK)
-                       return err;
-               gKernelArgs.frame_buffer.physical_buffer.start
-                       = (addr_t)gFrameBufferBase;
-/*
-               gFrameBufferBase = (void *)mmu_map_physical_memory(
-                       0xa8000000, fbSize, 0);
-               if (gFrameBufferBase == NULL)
-                       return B_NO_MEMORY;
-               gKernelArgs.frame_buffer.physical_buffer.start
-                       = (addr_t)gFrameBufferBase; // 0xa8000000;
-*/
-       }
-#else
-       gKernelArgs.frame_buffer.physical_buffer.start = fBase;
-#endif
-
-       uint32 bppCode;
-       uint32 pixelFormat;
-       struct pxa27x_lcd_dma_descriptor *dma;
-
-       // check if LCD controller is enabled
-       if (!(read_io_32(LCCR0) & 0x00000001)) {
-               // not enabled, so return suggested mode
-               gKernelArgs.frame_buffer.depth = 32;
-               gKernelArgs.frame_buffer.width = 640;
-               gKernelArgs.frame_buffer.height = 480;
-               return B_NO_INIT;
-       }
-
-       pixelFormat = bppCode = read_io_32(LCCR3);
-       bppCode = ((bppCode >> 26) & 0x08) | ((bppCode >> 24) & 0x07);
-       pixelFormat >>= 30;
-
-       dma = (struct pxa27x_lcd_dma_descriptor *)(read_io_32(FDADR0) & ~0x0f);
-       if (!dma)
-               return B_ERROR;
-
-       switch (bppCode) {
-               case 2:
-                       gKernelArgs.frame_buffer.depth = 4;
-                       break;
-               case 3:
-                       gKernelArgs.frame_buffer.depth = 8;
-                       break;
-               case 4:
-                       gKernelArgs.frame_buffer.depth = 16;
-                       break;
-               case 9:
-               case 10:
-                       gKernelArgs.frame_buffer.depth = 32; // RGB888
-                       break;
-               default:
-                       return B_ERROR;
-       }
-
-       gKernelArgs.frame_buffer.physical_buffer.start = (dma->fsadr & ~0x0f);
-       gKernelArgs.frame_buffer.width = (read_io_32(LCCR1) & ((1 << 10) - 1)) 
+ 1;
-       gKernelArgs.frame_buffer.height = (read_io_32(LCCR2) & ((1 << 10) - 1)) 
+ 1;
-       gKernelArgs.frame_buffer.bytes_per_row = gKernelArgs.frame_buffer.width
-               * sizeof(uint32);
-       gKernelArgs.frame_buffer.physical_buffer.size
-               = gKernelArgs.frame_buffer.width
-               * gKernelArgs.frame_buffer.height
-               * gKernelArgs.frame_buffer.depth / 8;
-
-       dprintf("video mode: %ux%ux%u\n", gKernelArgs.frame_buffer.width,
-               gKernelArgs.frame_buffer.height, 
gKernelArgs.frame_buffer.depth);
-
-       return B_OK;
-}
-
-
-status_t
-ArchFBArmPxa270::SetVideoMode(int width, int height, int depth)
-{
-       dprintf("%s(%d, %d, %d)\n", __FUNCTION__, width, height, depth);
-
-       void *fb;
-       uint32 fbSize = width * height * depth / 8;
-
-       fb = (void*)fBase;
-
-       dprintf("fb @ %p\n", fb);
-
-       sVideoDMADesc.fdadr = ((uint32)&sVideoDMADesc & ~0x0f) | 0x01;
-       sVideoDMADesc.fsadr = (uint32)(fb) & ~0x0f;
-       sVideoDMADesc.fidr = 0;
-       sVideoDMADesc.ldcmd = fbSize;
-
-       // if not already enabled, set a default mode
-       if (!(read_io_32(LCCR0) & 0x00000001)) {
-               int bpp;
-               int pdfor;
-               dprintf("Setting video mode\n");
-               switch (depth) {
-                       case 4:
-                               bpp = 2;
-                               break;
-                       case 8:
-                               bpp = 3;
-                               break;
-                       case 16:
-                               bpp = 3;
-                               break;
-                       case 32:
-                               bpp = 9;
-                               pdfor = 0x3;
-                               break;
-                       default:
-                               return EINVAL;
-               }
-               write_io_32(LCCR1, (0 << 0) | (width - 1));
-               write_io_32(LCCR2, (0 << 0) | (height - 1));
-               write_io_32(LCCR3, (pdfor << 30) | ((bpp >> 3) << 29)
-                       | ((bpp & 0x07) << 24));
-               write_io_32(FDADR0, sVideoDMADesc.fdadr);
-               write_io_32(LCCR0, read_io_32(LCCR0) | 0x01800001);     // no 
ints +ENB
-               write_io_32(FBR0, sVideoDMADesc.fdadr);
-               dumpr(LCCR0);
-               dumpr(LCCR1);
-               dumpr(LCCR2);
-               dumpr(LCCR3);
-               dumpr(LCCR4);
-       } else
-               return B_OK; // assume we're already setup
-
-       // clear the video memory
-       memset((void *)fb, 0, fbSize);
-
-       // XXX test pattern
-       for (int i = 0; i < 128; i++) {
-               ((uint32 *)fb)[i + 16] = 0x000000ff << ((i%4) * 8);
-               scratch[i] = 0x000000ff << ((i%4) * 8);
-       }
-
-       // update framebuffer descriptor
-       return Probe();
-}
-
-
-status_t
-ArchFBArmPxa270::SetDefaultMode()
-{
-       CALLED();
-       return SetVideoMode(gKernelArgs.frame_buffer.width,
-               gKernelArgs.frame_buffer.height,
-               gKernelArgs.frame_buffer.depth);
-}
diff --git a/src/system/boot/platform/u-boot/arch/arm/arch_mailbox.h 
b/src/system/boot/platform/u-boot/arch/arm/arch_mailbox.h
deleted file mode 100644
index bab49a680b..0000000000
--- a/src/system/boot/platform/u-boot/arch/arm/arch_mailbox.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright 2011-2015 Haiku, Inc. All rights reserved.
- * Distributed under the terms of the MIT License.
- *
- * Authors:
- *             Alexander von Gluck IV, kallisti5@xxxxxxxxxxx
- */
-#ifndef _ARCH_MAILBOX_H
-#define _ARCH_MAILBOX_H
-
-
-#include <boot/platform.h>
-#include <SupportDefs.h>
-
-
-#define TRACE_MAILBOX
-#ifdef TRACE_MAILBOX
-#   define TRACE(x...) dprintf(x)
-#      define CALLED() dprintf("%s()\n", __func__);
-#else
-#   define TRACE(x...) ;
-#      define CALLED() ;
-#endif
-#define ERROR(x...) dprintf(x)
-
-
-class ArchMailbox {
-public:
-                                                       ArchMailbox(addr_t base)
-                                                               :
-                                                               fBase(base) {};
-                                                       ~ArchMailbox() {};
-
-       virtual status_t                Init() { return B_OK; };
-       virtual status_t                Probe() { return B_OK; };
-
-       virtual addr_t                  Base() { return fBase; };
-                       addr_t                  PhysicalBase() { return 
fPhysicalBase; };
-
-       virtual status_t                Write(uint8 channel, uint32 value) { 
return B_OK; };
-       virtual status_t                Read(uint8 channel, uint32& value) { 
return B_OK; };
-
-
-protected:
-                       addr_t                  fBase;
-                       addr_t                  fPhysicalBase;
-};
-
-
-#endif /* _ARCH_MAILBOX_H */
diff --git a/src/system/boot/platform/u-boot/arch/arm/arch_mailbox_bcm2835.cpp 
b/src/system/boot/platform/u-boot/arch/arm/arch_mailbox_bcm2835.cpp
deleted file mode 100644
index 757ad304d4..0000000000
--- a/src/system/boot/platform/u-boot/arch/arm/arch_mailbox_bcm2835.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright 2012 Haiku, Inc. All rights reserved.
- * Distributed under the terms of the MIT License.
- *
- * Authors:
- *             Michael Lotz, mmlr@xxxxxxxx
- *             François Revol, revol@xxxxxxx
- *             Alexander von Gluck IV, kallisti5@xxxxxxxxxxx
- */
-
-
-#include "arch_mailbox.h"
-
-#include <atomic>
-#include <arch/arm/bcm283X.h>
-
-#include "arch_cpu.h"
-
-
-class ArchMailboxArmBCM2835 final : public ArchMailbox {
-public:
-                                                       
ArchMailboxArmBCM2835(addr_t base)
-                                                               :
-                                                               
ArchMailbox(base) {}
-                                                       
~ArchMailboxArmBCM2835() {}
-
-virtual status_t                       Write(uint8 channel, uint32 value) 
override;
-virtual status_t                       Read(uint8 channel, uint32& value) 
override;
-
-private:
-               auto&                           GetRegister(unsigned reg);
-               void                            RegisterWrite(addr_t reg, 
uint32 value);
-               uint32                          RegisterRead(addr_t reg);
-};
-
-
-extern "C" ArchMailbox*
-arch_get_mailbox_arm_bcm2835(addr_t base)
-{
-       return new ArchMailboxArmBCM2835(base);
-}
-
-
-status_t
-ArchMailboxArmBCM2835::Write(uint8 channel, uint32 value)
-{
-       // We have to wait for the mailbox to drain if it is marked full.
-       while ((RegisterRead(ARM_MAILBOX_STATUS) & ARM_MAILBOX_FULL) != 0)
-               ;
-
-       value &= ARM_MAILBOX_DATA_MASK;
-       RegisterWrite(ARM_MAILBOX_WRITE, value | channel);
-       return B_OK;
-}
-
-
-status_t
-ArchMailboxArmBCM2835::Read(uint8 channel, uint32& value)
-{
-       while (true) {
-               // Wait for something to arrive in the mailbox.
-               if ((RegisterRead(ARM_MAILBOX_STATUS) & ARM_MAILBOX_EMPTY) != 0)
-                       continue;
-
-               value = RegisterRead(ARM_MAILBOX_READ);
-               if ((value & ARM_MAILBOX_CHANNEL_MASK) != channel) {
-                       // Not for us, retry.
-                       continue;
-               }
-
-               break;
-       }
-
-       value &= ARM_MAILBOX_DATA_MASK;
-       return B_OK;
-}
-
-
-inline auto&
-ArchMailboxArmBCM2835::GetRegister(unsigned reg)
-{
-       auto addr = fBase + reg;
-       return *reinterpret_cast<std::atomic<uint32_t>*>(addr);
-}
-
-
-inline uint32
-ArchMailboxArmBCM2835::RegisterRead(addr_t reg)
-{
-       return GetRegister(reg).load(std::memory_order_acquire);
-}
-
-
-inline void
-ArchMailboxArmBCM2835::RegisterWrite(addr_t reg, uint32 value)
-{
-       GetRegister(reg).store(value, std::memory_order_release);
-}
diff --git a/src/system/boot/platform/u-boot/arch/arm/arch_mmu.cpp 
b/src/system/boot/platform/u-boot/arch/arm/arch_mmu.cpp
deleted file mode 100644
index 7d03af9773..0000000000
--- a/src/system/boot/platform/u-boot/arch/arm/arch_mmu.cpp
+++ /dev/null
@@ -1,816 +0,0 @@
-/*
- * Copyright 2004-2008, Axel Dörfler, axeld@xxxxxxxxxxxxxxxx.
- * Based on code written by Travis Geiselbrecht for NewOS.
- *
- * Distributed under the terms of the MIT License.
- */
-
-
-#include "mmu.h"
-
-#include <boot/platform.h>
-#include <boot/stdio.h>
-#include <boot/kernel_args.h>
-#include <boot/stage2.h>
-#include <arch/cpu.h>
-#include <arch_kernel.h>
-#include <arm_mmu.h>
-#include <kernel.h>
-
-#include <OS.h>
-
-#include <string.h>
-
-#include "fdt_support.h"
-
-extern "C" {
-#include <fdt.h>
-#include <libfdt.h>
-#include <libfdt_env.h>
-};
-
-
-#define TRACE_MMU
-#ifdef TRACE_MMU
-#      define TRACE(x) dprintf x
-#else
-#      define TRACE(x) ;
-#endif
-
-#define TRACE_MEMORY_MAP
-       // Define this to print the memory map to serial debug,
-       // You also need to define ENABLE_SERIAL in serial.cpp
-       // for output to work.
-
-/*
-TODO:
-       -recycle bit!
-*/
-
-/*!    The (physical) memory layout of the boot loader is currently as follows:
-        0x00000000                     u-boot (run from NOR flash)
-        0xa0000000                     u-boot stuff like kernel arguments afaik
-        0xa0100000 - 0xa0ffffff        boot.tgz (up to 15MB probably never 
needed so big...)
-        0xa1000000 - 0xa1ffffff        pagetables
-        0xa2000000 - ?                 code (up to 1MB)
-        0xa2100000                     boot loader heap / free physical memory
-
-       The kernel is mapped at KERNEL_LOAD_BASE, all other stuff mapped by the
-       loader (kernel args, modules, driver settings, ...) comes after
-       0x80020000 which means that there is currently only 2 MB reserved for
-       the kernel itself (see kMaxKernelSize).
-*/
-
-
-// 8 MB for the kernel, kernel args, modules, driver settings, ...
-static const size_t kMaxKernelSize = 0x800000;
-
-// Start and end of ourselfs (from ld script)
-extern int _start, _end;
-
-/*
-*defines a block in memory
-*/
-struct memblock {
-       const char name[16];
-               // the name will be used for debugging etc later perhaps...
-       addr_t  start;
-               // start of the block
-       addr_t  end;
-               // end of the block
-       uint32  flags;
-               // which flags should be applied (device/normal etc..)
-};
-
-
-static struct memblock LOADER_MEMORYMAP[] = {
-       {
-               "RAM_kernel", // 8MB space for kernel, drivers etc
-               KERNEL_LOAD_BASE,
-               KERNEL_LOAD_BASE + kMaxKernelSize - 1,
-               ARM_MMU_L2_FLAG_C,
-       },
-#ifdef FB_BASE
-       {
-               "framebuffer", // 2MB framebuffer ram
-               FB_BASE,
-               FB_BASE + FB_SIZE - 1,
-               ARM_MMU_L2_FLAG_AP_RW | ARM_MMU_L2_FLAG_C,
-       },
-#endif
-};
-
-//static const uint32 kDefaultPageTableFlags = MMU_FLAG_READWRITE;
-       // not cached not buffered, R/W
-
-static addr_t sNextPhysicalAddress = 0; //will be set by mmu_init
-static addr_t sNextVirtualAddress = 0;
-
-static addr_t sNextPageTableAddress = 0;
-//the page directory is in front of the pagetable
-static uint32 sPageTableRegionEnd = 0;
-
-static uint32 sSmallPageType = ARM_MMU_L2_TYPE_SMALLEXT;
-
-// working page directory and page table
-static uint32 *sPageDirectory = 0 ;
-//page directory has to be on a multiple of 16MB for
-//some arm processors
-
-
-static addr_t
-get_next_virtual_address_aligned(size_t size, uint32 mask)
-{
-       addr_t address = (sNextVirtualAddress) & mask;
-       sNextVirtualAddress = address + size;
-
-       return address;
-}
-
-
-static addr_t
-get_next_physical_address_aligned(size_t size, uint32 mask)
-{
-       addr_t address = sNextPhysicalAddress & mask;
-       sNextPhysicalAddress = address + size;
-
-       return address;
-}
-
-
-static addr_t
-get_next_virtual_page(size_t pagesize)
-{
-       return get_next_virtual_address_aligned(pagesize, 0xffffffc0);
-}
-
-
-static addr_t
-get_next_physical_page(size_t pagesize)
-{
-       return get_next_physical_address_aligned(pagesize, 0xffffffc0);
-}
-
-
-/*
- * Set translation table base
- */
-void
-mmu_set_TTBR(uint32 ttb)
-{
-       ttb &= 0xffffc000;
-       asm volatile("MCR p15, 0, %[adr], c2, c0, 0"::[adr] "r" (ttb));
-}
-
-
-/*
- * Flush the TLB
- */
-void
-mmu_flush_TLB()
-{
-       uint32 value = 0;
-       asm volatile("MCR p15, 0, %[c8format], c8, c7, 0"::[c8format] "r" 
(value));
-}
-
-
-/*
- * Read MMU Control Register
- */
-uint32
-mmu_read_C1()
-{
-       uint32 controlReg = 0;
-       asm volatile("MRC p15, 0, %[c1out], c1, c0, 0":[c1out] "=r" 
(controlReg));
-       return controlReg;
-}
-
-
-/*
- * Write MMU Control Register
- */
-void
-mmu_write_C1(uint32 value)
-{
-       asm volatile("MCR p15, 0, %[c1in], c1, c0, 0"::[c1in] "r" (value));
-}
-
-
-/*
- * Dump current MMU Control Register state
- * For debugging, can be added to loader temporarly post-serial-init
- */
-void
-mmu_dump_C1()
-{
-       uint32 cpValue = mmu_read_C1();
-
-       dprintf("MMU CP15:c1 State:\n");
-
-       if ((cpValue & (1 << 0)) != 0)
-               dprintf(" - MMU Enabled\n");
-       else
-               dprintf(" - MMU Disabled\n");
-
-       if ((cpValue & (1 << 2)) != 0)
-               dprintf(" - Data Cache Enabled\n");
-       else
-               dprintf(" - Data Cache Disabled\n");
-
-       if ((cpValue & (1 << 3)) != 0)
-               dprintf(" - Write Buffer Enabled\n");
-       else
-               dprintf(" - Write Buffer Disabled\n");
-
-       if ((cpValue & (1 << 12)) != 0)
-               dprintf(" - Instruction Cache Enabled\n");
-       else
-               dprintf(" - Instruction Cache Disabled\n");
-
-       if ((cpValue & (1 << 13)) != 0)
-               dprintf(" - Vector Table @ 0xFFFF0000\n");
-       else
-               dprintf(" - Vector Table @ 0x00000000\n");
-}
-
-
-void
-mmu_write_DACR(uint32 value)
-{
-       asm volatile("MCR p15, 0, %[c1in], c3, c0, 0"::[c1in] "r" (value));
-}
-
-
-static uint32 *
-get_next_page_table(uint32 type)
-{
-       TRACE(("get_next_page_table, sNextPageTableAddress 0x%" B_PRIxADDR
-               ", sPageTableRegionEnd 0x%" B_PRIxADDR ", type 0x%" B_PRIx32 
"\n",
-               sNextPageTableAddress, sPageTableRegionEnd, type));
-
-       size_t size = 0;
-       size_t entryCount = 0;
-       switch (type) {
-               case ARM_MMU_L1_TYPE_COARSE:
-                       size = ARM_MMU_L2_COARSE_TABLE_SIZE;
-                       entryCount = ARM_MMU_L2_COARSE_ENTRY_COUNT;
-                       break;
-               case ARM_MMU_L1_TYPE_FINE:
-                       size = ARM_MMU_L2_FINE_TABLE_SIZE;
-                       entryCount = ARM_MMU_L2_FINE_ENTRY_COUNT;
-                       break;
-               default:
-                       panic("asked for unknown page table type: %#" B_PRIx32 
"\n", type);
-                       return NULL;
-       }
-
-       addr_t address = sNextPageTableAddress;
-       if (address < sPageTableRegionEnd)
-               sNextPageTableAddress += size;
-       else {
-               TRACE(("page table allocation outside of pagetable region!\n"));
-               address = get_next_physical_address_aligned(size, 0xffffffc0);
-       }
-
-       uint32 *pageTable = (uint32 *)address;
-       for (size_t i = 0; i < entryCount; i++)
-               pageTable[i] = 0;
-
-       return pageTable;
-}
-
-
-static uint32 *
-get_or_create_page_table(addr_t address, uint32 type)
-{
-       uint32 *pageTable = NULL;
-       uint32 pageDirectoryIndex = VADDR_TO_PDENT(address);
-       uint32 pageDirectoryEntry = sPageDirectory[pageDirectoryIndex];
-
-       uint32 entryType = pageDirectoryEntry & ARM_PDE_TYPE_MASK;
-       if (entryType == ARM_MMU_L1_TYPE_FAULT) {
-               // This page directory entry has not been set yet, allocate it.
-               pageTable = get_next_page_table(type);
-               sPageDirectory[pageDirectoryIndex] = (uint32)pageTable | type;
-               return pageTable;
-       }
-
-       if (entryType != type) {
-               // This entry has been allocated with a different type!
-               panic("tried to reuse page directory entry %" B_PRIu32
-                       " with different type (entry: %#" B_PRIx32 ", new type: 
%#" B_PRIx32
-                       ")\n", pageDirectoryIndex, pageDirectoryEntry, type);
-               return NULL;
-       }
-
-       return (uint32 *)(pageDirectoryEntry & ARM_PDE_ADDRESS_MASK);
-}
-
-
-static void
-mmu_map_identity(addr_t start, size_t end, int flags)
-{
-       uint32 *pageTable = NULL;
-       uint32 pageTableIndex = 0;
-
-       start = ROUNDDOWN(start, B_PAGE_SIZE);
-       end = ROUNDUP(end, B_PAGE_SIZE);
-
-       TRACE(("mmu_map_identity: [ %" B_PRIxADDR " - %" B_PRIxADDR "]\n", 
start, end));
-
-       for (addr_t address = start; address < end; address += B_PAGE_SIZE) {
-               if (pageTable == NULL
-                       || pageTableIndex >= ARM_MMU_L2_COARSE_ENTRY_COUNT) {
-                       pageTable = get_or_create_page_table(address,
-                               ARM_MMU_L1_TYPE_COARSE);
-                       pageTableIndex = VADDR_TO_PTENT(address);
-               }
-
-               pageTable[pageTableIndex++]
-                       = address | flags | sSmallPageType;
-       }
-}
-
-
-static void
-map_pages_loader()
-{
-       for (uint32 i = 0; i < B_COUNT_OF(LOADER_MEMORYMAP); i++) {
-
-               TRACE(("BLOCK: %s START: %lx END %lx\n", 
LOADER_MEMORYMAP[i].name,
-                       LOADER_MEMORYMAP[i].start, LOADER_MEMORYMAP[i].end));
-
-               addr_t address = LOADER_MEMORYMAP[i].start;
-               ASSERT((address & ~ARM_PTE_ADDRESS_MASK) == 0);
-
-               mmu_map_identity(LOADER_MEMORYMAP[i].start, 
LOADER_MEMORYMAP[i].end,
-                       LOADER_MEMORYMAP[i].flags);
-       }
-}
-
-
-//TODO:move this to generic/ ?
-static status_t
-fdt_map_memory_ranges(void* fdt, const char* path, bool physical = false)
-{
-       int node;
-       const void *prop;
-       int len;
-       uint64 total;
-
-       dprintf("checking FDT for %s...\n", path);
-       node = fdt_path_offset(fdt, path);
-
-       total = 0;
-
-       int32 regAddressCells = 1;
-       int32 regSizeCells = 1;
-       fdt_get_cell_count(fdt, node, regAddressCells, regSizeCells);
-
-       prop = fdt_getprop(fdt, node, "reg", &len);
-       if (prop == NULL) {
-               dprintf("Unable to locate %s in FDT!\n", path);
-               return B_ERROR;
-       }
-
-       const uint32 *p = (const uint32 *)prop;
-       for (int32 i = 0; len; i++) {
-               uint64 base;
-               uint64 size;
-               if (regAddressCells == 2)
-                       base = fdt64_to_cpu(*(uint64_t *)p);
-               else
-                       base = fdt32_to_cpu(*(uint32_t *)p);
-               p += regAddressCells;
-               if (regSizeCells == 2)
-                       size = fdt64_to_cpu(*(uint64_t *)p);
-               else
-                       size = fdt32_to_cpu(*(uint32_t *)p);
-               p += regSizeCells;
-               len -= sizeof(uint32) * (regAddressCells + regSizeCells);
-
-               if (size <= 0) {
-                       dprintf("%ld: empty region\n", i);
-                       continue;
-               }
-               dprintf("%" B_PRIu32 ": base = %" B_PRIu64 ","
-                       "size = %" B_PRIu64 "\n", i, base, size);
-
-               total += size;
-
-               if (physical) {
-                       if (insert_physical_memory_range(base, size) != B_OK) {
-                               dprintf("cannot map physical memory range "
-                                       "(num ranges = %" B_PRIu32 ")!\n",
-                                       gKernelArgs.num_physical_memory_ranges);
-                               return B_ERROR;
-                       }
-               } else {
-                       mmu_map_identity(base, base + size, ARM_MMU_L2_FLAG_B);
-               }
-       }
-
-       dprintf("total '%s' physical memory = %" B_PRId64 "MB\n", path,
-               total / (1024 * 1024));
-
-       return B_OK;
-}
-
-
-static void
-fdt_map_peripheral(void* fdt)
-{
-       if (fdt == NULL) {
-               dprintf("Invalid FDT provided to %s!", __func__);
-               return;
-       }
-
-       // map peripheral devices (such as uart) from fdt
-
-       #warning Map peripherals from the fdt we want to use in the bootloader!
-       // this assumes /pl011@9000000 which is the qemu virt uart
-       fdt_map_memory_ranges(fdt, "/pl011@9000000");
-       // this assumes /axi which is broadcom!
-       fdt_map_memory_ranges(fdt, "/axi");
-}
-
-
-static void
-init_page_directory(void* fdt)
-{
-       TRACE(("init_page_directory\n"));
-
-       gKernelArgs.arch_args.phys_pgdir =
-       gKernelArgs.arch_args.vir_pgdir = (uint32)sPageDirectory;
-
-       // clear out the page directory
-       for (uint32 i = 0; i < ARM_MMU_L1_TABLE_ENTRY_COUNT; i++)
-               sPageDirectory[i] = 0;
-
-       // map ourselfs first... just to make sure
-       mmu_map_identity((addr_t)&_start, (addr_t)&_end, ARM_MMU_L2_FLAG_C);
-
-       // map our page directory region (TODO should not be identity mapped)
-       mmu_map_identity((addr_t)sPageDirectory, sPageTableRegionEnd, 
ARM_MMU_L2_FLAG_C);
-
-       // map our well known / static pages
-       map_pages_loader();
-
-       // map our fdt peripherals
-       fdt_map_peripheral(fdt);
-
-       mmu_flush_TLB();
-
-       /* set up the translation table base */
-       mmu_set_TTBR((uint32)sPageDirectory);
-
-       mmu_flush_TLB();
-
-       /* set up the domain access register */
-       mmu_write_DACR(0xFFFFFFFF);
-
-       /* turn on the mmu */
-       mmu_write_C1(mmu_read_C1() | 0x1);
-}
-
-
-/*!    Creates an entry to map the specified virtualAddress to the given
-       physicalAddress.
-       If the mapping goes beyond the current page table, it will allocate
-       a new one. If it cannot map the requested page, it panics.
-*/
-static void
-map_page(addr_t virtualAddress, addr_t physicalAddress, uint32 flags)
-{
-       TRACE(("map_page: vaddr 0x%lx, paddr 0x%lx\n", virtualAddress,
-               physicalAddress));
-
-       if (virtualAddress < KERNEL_LOAD_BASE) {
-               panic("map_page: asked to map invalid page %p!\n",
-                       (void *)virtualAddress);
-       }
-
-       physicalAddress &= ~(B_PAGE_SIZE - 1);
-
-       // map the page to the correct page table
-       uint32 *pageTable = get_or_create_page_table(virtualAddress,
-               ARM_MMU_L1_TYPE_COARSE);
-
-       uint32 pageTableIndex = VADDR_TO_PTENT(virtualAddress);
-       TRACE(("map_page: inserting pageTable %p, tableEntry 0x%" B_PRIx32
-               ", physicalAddress 0x%" B_PRIxADDR "\n", pageTable, 
pageTableIndex,
-               physicalAddress));
-
-       pageTable[pageTableIndex] = physicalAddress | flags;
-
-       mmu_flush_TLB();
-
-       TRACE(("map_page: done\n"));
-}
-
-
-//     #pragma mark -
-
-
-extern "C" addr_t
-mmu_map_physical_memory(addr_t physicalAddress, size_t size, uint32 flags)
-{
-       TRACE(("mmu_map_physical_memory(phAddr=%lx, %lx, %lu)\n", 
physicalAddress, size, flags));
-       addr_t address = sNextVirtualAddress;
-       addr_t pageOffset = physicalAddress & (B_PAGE_SIZE - 1);
-
-       physicalAddress -= pageOffset;
-       if (pageOffset)
-               size += B_PAGE_SIZE;
-
-       for (addr_t offset = 0; offset < size; offset += B_PAGE_SIZE) {
-               map_page(get_next_virtual_page(B_PAGE_SIZE), physicalAddress + 
offset,
-                       flags);
-       }
-
-       return address + pageOffset;
-}
-
-
-static void
-unmap_page(addr_t virtualAddress)
-{
-       TRACE(("unmap_page(virtualAddress = %p)\n", (void *)virtualAddress));
-
-       if (virtualAddress < KERNEL_LOAD_BASE) {
-               panic("unmap_page: asked to unmap invalid page %p!\n",
-                       (void *)virtualAddress);
-       }
-
-       // unmap the page from the correct page table
-       uint32 *pageTable
-               = (uint32 *)(sPageDirectory[VADDR_TO_PDENT(virtualAddress)]
-                       & ARM_PDE_ADDRESS_MASK);
-
-       pageTable[VADDR_TO_PTENT(virtualAddress)] = 0;
-
-       mmu_flush_TLB();
-}
-
-
-// XXX: use phys_addr_t ?
-extern "C" bool
-mmu_get_virtual_mapping(addr_t virtualAddress, /*phys_*/addr_t 
*_physicalAddress)
-{
-       if (virtualAddress < KERNEL_LOAD_BASE) {
-               panic("mmu_get_virtual_mapping: asked to lookup invalid page 
%p!\n",
-                       (void *)virtualAddress);
-               return false;
-       }
-
-       // map the page to the correct page table
-       uint32 *pageTable = get_or_create_page_table(virtualAddress,
-               ARM_MMU_L1_TYPE_COARSE);
-
-       uint32 pageTableIndex = VADDR_TO_PTENT(virtualAddress);
-
-       *_physicalAddress = pageTable[pageTableIndex] & ~(B_PAGE_SIZE - 1);
-
-       return true;
-}
-
-
-extern "C" void *
-mmu_allocate(void *virtualAddress, size_t size)
-{
-       TRACE(("mmu_allocate: requested vaddr: %p, next free vaddr: 0x%lx, 
size: "
-               "%ld\n", virtualAddress, sNextVirtualAddress, size));
-
-       size = (size + B_PAGE_SIZE - 1) / B_PAGE_SIZE;
-               // get number of pages to map
-
-       if (virtualAddress != NULL) {
-               // This special path is almost only useful for loading the
-               // kernel into memory; it will only allow you to map the
-               // 'kMaxKernelSize' bytes following the kernel base address.
-               // Also, it won't check for already mapped addresses, so
-               // you better know why you are here :)
-               addr_t address = (addr_t)virtualAddress;
-
-               // is the address within the valid range?
-               if (address < KERNEL_LOAD_BASE || address + size * B_PAGE_SIZE
-                       >= KERNEL_LOAD_BASE + kMaxKernelSize) {
-                       TRACE(("mmu_allocate in illegal range\n address: %" 
B_PRIx32
-                               "  KERNELBASE: %" B_PRIx32 " KERNEL_LOAD_BASE + 
kMaxKernelSize:"
-                               " %" B_PRIx32 "  address + size : %" B_PRIx32 
"\n",
-                               (uint32)address, (uint32)KERNEL_LOAD_BASE,
-                               (uint32)KERNEL_LOAD_BASE + kMaxKernelSize,
-                               (uint32)(address + size)));
-                       return NULL;
-               }
-               for (uint32 i = 0; i < size; i++) {
-                       map_page(address, get_next_physical_page(B_PAGE_SIZE),
-                               kDefaultPageFlags);
-                       address += B_PAGE_SIZE;
-               }
-
-               return virtualAddress;
-       }
-
-       void *address = (void *)sNextVirtualAddress;
-
-       for (uint32 i = 0; i < size; i++) {
-               map_page(get_next_virtual_page(B_PAGE_SIZE),
-                       get_next_physical_page(B_PAGE_SIZE), kDefaultPageFlags);
-       }
-
-       return address;
-}
-
-
-/*!    This will unmap the allocated chunk of memory from the virtual
-       address space. It might not actually free memory (as its implementation
-       is very simple), but it might.
-*/
-extern "C" void
-mmu_free(void *virtualAddress, size_t size)
-{
-       TRACE(("mmu_free(virtualAddress = %p, size: %ld)\n", virtualAddress, 
size));
-
-       addr_t address = (addr_t)virtualAddress;
-       addr_t pageOffset = address % B_PAGE_SIZE;
-       address -= pageOffset;
-       size = (size + pageOffset + B_PAGE_SIZE - 1) / B_PAGE_SIZE * 
B_PAGE_SIZE;
-
-       // is the address within the valid range?
-       if (address < KERNEL_LOAD_BASE || address + size > sNextVirtualAddress) 
{
-               panic("mmu_free: asked to unmap out of range region (%p, size 
%lx)\n",
-                       (void *)address, size);
-       }
-
-       // unmap all pages within the range
-       for (size_t i = 0; i < size; i += B_PAGE_SIZE) {
-               unmap_page(address);
-               address += B_PAGE_SIZE;
-       }
-
-       if (address == sNextVirtualAddress) {
-               // we can actually reuse the virtual address space
-               sNextVirtualAddress -= size;
-       }
-}
-
-
-/*!    Sets up the final and kernel accessible GDT and IDT tables.
-       BIOS calls won't work any longer after this function has
-       been called.
-*/
-extern "C" void
-mmu_init_for_kernel(void)
-{
-       TRACE(("mmu_init_for_kernel\n"));
-
-       // store next available pagetable in our pagedir mapping, for
-       // the kernel to use in early vm setup
-       gKernelArgs.arch_args.next_pagetable = sNextPageTableAddress - 
(addr_t)sPageDirectory;
-
-       // save the memory we've physically allocated
-       insert_physical_allocated_range((addr_t)sPageDirectory, 
sNextPhysicalAddress - (addr_t)sPageDirectory);
-
-       // Save the memory we've virtually allocated (for the kernel and other
-       // stuff)
-       insert_virtual_allocated_range(KERNEL_LOAD_BASE, sNextVirtualAddress - 
KERNEL_LOAD_BASE);
-
-#ifdef TRACE_MEMORY_MAP
-       {
-               uint32 i;
-
-               dprintf("phys memory ranges:\n");
-               for (i = 0; i < gKernelArgs.num_physical_memory_ranges; i++) {
-                       dprintf("    base 0x%08" B_PRIx64 ", length 0x%08" 
B_PRIx64 "\n",
-                               gKernelArgs.physical_memory_range[i].start,
-                               gKernelArgs.physical_memory_range[i].size);
-               }
-
-               dprintf("allocated phys memory ranges:\n");
-               for (i = 0; i < gKernelArgs.num_physical_allocated_ranges; i++) 
{
-                       dprintf("    base 0x%08" B_PRIx64 ", length 0x%08" 
B_PRIx64 "\n",
-                               gKernelArgs.physical_allocated_range[i].start,
-                               gKernelArgs.physical_allocated_range[i].size);
-               }
-
-               dprintf("allocated virt memory ranges:\n");
-               for (i = 0; i < gKernelArgs.num_virtual_allocated_ranges; i++) {
-                       dprintf("    base 0x%08" B_PRIx64 ", length 0x%08" 
B_PRIx64 "\n",
-                               gKernelArgs.virtual_allocated_range[i].start,
-                               gKernelArgs.virtual_allocated_range[i].size);
-               }
-       }
-#endif
-}
-
-
-extern "C" void
-mmu_init(void* fdt)
-{
-       TRACE(("mmu_init\n"));
-
-       // skip RAM check if already done (rPi)
-       if (gKernelArgs.num_physical_memory_ranges == 0) {
-               // get map of physical memory (fill in kernel_args structure)
-
-               if (fdt_map_memory_ranges(fdt, "/memory", true) != B_OK) {
-                       panic("Error: could not find physical memory ranges 
from FDT!\n");
-
-#ifdef SDRAM_BASE
-                       dprintf("Defaulting to 32MB at %" B_PRIx64 "\n", 
(uint64)SDRAM_BASE);
-                       // specify available physical memory, using 32MB for 
now, since our
-                       // ARMv5 targets have very little by default.

[ *** diff truncated: 320 lines dropped *** ]



Other related posts:

  • » [haiku-commits] haiku: hrev56225 - src/system/boot/platform/u-boot/arch/arm build/jam/board build/jam/board/rpi2 build/jam/board/overo build/jam/board/beagleboard - waddlesplash