From e40cea64bdee754f86920a53239e5fa7aec8cc6c Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Sun, 9 Jul 2017 22:51:50 -0500 Subject: [PATCH 1/8] u-boot/arm: Initial steps to drop target board requirements --- build/jam/ArchitectureRules | 51 ++++--------------- src/system/boot/arch/arm/Jamfile | 1 - src/system/boot/arch/arm/arch_mmu.cpp | 6 +-- .../boot/platform/u-boot/arch/arm/Jamfile | 1 - .../platform/u-boot/arch/arm/arch_mailbox.cpp | 11 ++-- .../boot/platform/u-boot/arch/ppc/Jamfile | 1 + src/system/boot/platform/u-boot/serial.cpp | 14 +---- src/system/boot/platform/u-boot/start.cpp | 1 - src/system/boot/platform/u-boot/video.cpp | 3 +- src/system/kernel/arch/arm/arch_uart_8250.cpp | 3 +- 10 files changed, 22 insertions(+), 70 deletions(-) diff --git a/build/jam/ArchitectureRules b/build/jam/ArchitectureRules index e0528fdfc0..706e61d552 100644 --- a/build/jam/ArchitectureRules +++ b/build/jam/ArchitectureRules @@ -233,48 +233,8 @@ rule KernelArchitectureSetup architecture HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET = 192 ; # in kB - unused yet case arm : - switch $(HAIKU_BOOT_BOARD) { - case beagleboard : - { - HAIKU_BOOT_PLATFORM ?= u-boot ; - HAIKU_BOOT_FLOPPY_IMAGE_SIZE = 1440 ; - } - case beaglebone : - { - HAIKU_BOOT_PLATFORM ?= u-boot ; - HAIKU_BOOT_FLOPPY_IMAGE_SIZE = 1440 ; - } - case neo_freerunner : - { - HAIKU_BOOT_PLATFORM ?= u-boot ; - HAIKU_BOOT_FLOPPY_IMAGE_SIZE = 1440 ; - } - case overo : - { - HAIKU_BOOT_PLATFORM ?= u-boot ; - HAIKU_BOOT_FLOPPY_IMAGE_SIZE = 1440 ; - } - case rpi2 : - { - HAIKU_BOOT_PLATFORM ?= u-boot ; - HAIKU_BOOT_FLOPPY_IMAGE_SIZE = 1440 ; - } - case cubieboard4 : - { - HAIKU_BOOT_PLATFORM ?= u-boot ; - HAIKU_BOOT_FLOPPY_IMAGE_SIZE = 1440 ; - } - case verdex : - { - HAIKU_BOOT_PLATFORM ?= u-boot ; - HAIKU_BOOT_FLOPPY_IMAGE_SIZE = 1440 ; - } - case * : - { - Exit "Set HAIKU_BOOT_BOARD for your target ARM device!" ; - } - } - + HAIKU_BOOT_PLATFORM ?= u-boot ; + HAIKU_BOOT_FLOPPY_IMAGE_SIZE = 1440 ; # offset in floppy image (>= sizeof(haiku_loader)) HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET = 192 ; # in kB - unused yet @@ -376,6 +336,13 @@ rule KernelArchitectureSetup architecture } switch $(cpu) { + case arm : + # 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 ; + case ppc : # Build a position independent PPC kernel. We need to be able to # relocate the kernel, since the virtual address space layout at diff --git a/src/system/boot/arch/arm/Jamfile b/src/system/boot/arch/arm/Jamfile index c03776717b..d65f88ecab 100644 --- a/src/system/boot/arch/arm/Jamfile +++ b/src/system/boot/arch/arm/Jamfile @@ -3,7 +3,6 @@ SubDir HAIKU_TOP src system boot arch arm ; UsePrivateHeaders [ FDirName kernel platform $(TARGET_BOOT_PLATFORM) ] ; #XXX: should not be needed here -UsePrivateHeaders [ FDirName kernel arch $(TARGET_KERNEL_ARCH) board $(TARGET_BOOT_BOARD) ] ; UseLibraryHeaders [ FDirName libfdt ] ; { diff --git a/src/system/boot/arch/arm/arch_mmu.cpp b/src/system/boot/arch/arm/arch_mmu.cpp index 4ffa3dd25d..fe35bc76e8 100644 --- a/src/system/boot/arch/arm/arch_mmu.cpp +++ b/src/system/boot/arch/arm/arch_mmu.cpp @@ -17,8 +17,6 @@ #include #include -#include - #include #include @@ -88,13 +86,16 @@ struct memblock { }; +#warning TODO: Plot pref. base from fdt! static struct memblock LOADER_MEMORYMAP[] = { +/* { "devices", DEVICE_BASE, DEVICE_BASE + DEVICE_SIZE - 1, ARM_MMU_L2_FLAG_B, }, +*/ { "RAM_kernel", // 8MB space for kernel, drivers etc KERNEL_LOAD_BASE, @@ -112,7 +113,6 @@ static struct memblock LOADER_MEMORYMAP[] = { #endif }; - //static const uint32 kDefaultPageTableFlags = MMU_FLAG_READWRITE; // not cached not buffered, R/W diff --git a/src/system/boot/platform/u-boot/arch/arm/Jamfile b/src/system/boot/platform/u-boot/arch/arm/Jamfile index 8a7939a5f1..8765581c31 100644 --- a/src/system/boot/platform/u-boot/arch/arm/Jamfile +++ b/src/system/boot/platform/u-boot/arch/arm/Jamfile @@ -7,7 +7,6 @@ UsePrivateSystemHeaders ; UsePrivateHeaders kernel [ FDirName kernel platform u-boot ] ; UsePrivateHeaders kernel [ FDirName kernel arch $(TARGET_KERNEL_ARCH) ] [ FDirName kernel boot platform $(HAIKU_BOOT_PLATFORM) ] ; -UsePrivateHeaders [ FDirName kernel arch $(TARGET_KERNEL_ARCH) board $(TARGET_BOOT_BOARD) ] ; SubDirC++Flags -fno-rtti ; diff --git a/src/system/boot/platform/u-boot/arch/arm/arch_mailbox.cpp b/src/system/boot/platform/u-boot/arch/arm/arch_mailbox.cpp index dc9c5b8bfa..19ecd91f35 100644 --- a/src/system/boot/platform/u-boot/arch/arm/arch_mailbox.cpp +++ b/src/system/boot/platform/u-boot/arch/arm/arch_mailbox.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2012-2015 Haiku, Inc. All rights reserved. + * Copyright 2012-2016 Haiku, Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: @@ -9,8 +9,6 @@ #include "arch_mailbox.h" -#include - #include "fdt_support.h" ArchMailbox *gMailbox = NULL; @@ -19,12 +17,11 @@ extern void* gFDT; extern "C" status_t arch_mailbox_init() { - #if defined(BOARD_CPU_BCM2835) || defined(BOARD_CPU_BCM2836) extern ArchMailbox *arch_get_mailbox_arm_bcm2835(addr_t base); phys_addr_t mboxBase = fdt_get_device_reg_byname(gFDT, "/axi/mbox"); - if (mboxBase) { - gMailbox = arch_get_mailbox_arm_bcm2835(mboxBase); + if (!mboxBase) { + return B_ERROR; } - #endif + gMailbox = arch_get_mailbox_arm_bcm2835(mboxBase); return B_OK; } diff --git a/src/system/boot/platform/u-boot/arch/ppc/Jamfile b/src/system/boot/platform/u-boot/arch/ppc/Jamfile index d7dbefb5d2..8c6361ef30 100644 --- a/src/system/boot/platform/u-boot/arch/ppc/Jamfile +++ b/src/system/boot/platform/u-boot/arch/ppc/Jamfile @@ -4,6 +4,7 @@ SubDirHdrs $(HAIKU_TOP) src system boot platform $(TARGET_BOOT_PLATFORM) ; UsePrivateSystemHeaders ; UsePrivateHeaders kernel [ FDirName kernel arch $(TARGET_KERNEL_ARCH) ] [ FDirName kernel boot platform $(HAIKU_BOOT_PLATFORM) ] ; + UsePrivateHeaders [ FDirName kernel arch $(TARGET_KERNEL_ARCH) board $(TARGET_BOOT_BOARD) ] ; UseLibraryHeaders [ FDirName libfdt ] ; diff --git a/src/system/boot/platform/u-boot/serial.cpp b/src/system/boot/platform/u-boot/serial.cpp index fd57e86687..e78c5af4f0 100644 --- a/src/system/boot/platform/u-boot/serial.cpp +++ b/src/system/boot/platform/u-boot/serial.cpp @@ -19,7 +19,6 @@ #include #endif -#include #include #include #include @@ -124,17 +123,8 @@ serial_init(const void *fdt) // first try with hints from the FDT gUART = debug_uart_from_fdt(fdt); - // fallback to known board UARTs - #if defined(BOARD_UART_DEBUG) && defined(BOARD_UART_CLOCK) - if (gUART == NULL) { - #ifdef BOARD_UART_PL011 - gUART = arch_get_uart_pl011(BOARD_UART_DEBUG, BOARD_UART_CLOCK); - #else - gUART = arch_get_uart_8250(BOARD_UART_DEBUG, BOARD_UART_CLOCK); - #endif - } - #endif - + // Do we can some kind of direct fallback here + // (aka, guess arch_get_uart_pl011 or arch_get_uart_8250?) if (gUART == NULL) return; diff --git a/src/system/boot/platform/u-boot/start.cpp b/src/system/boot/platform/u-boot/start.cpp index 07776176c0..a631076cdf 100644 --- a/src/system/boot/platform/u-boot/start.cpp +++ b/src/system/boot/platform/u-boot/start.cpp @@ -20,7 +20,6 @@ #include #include #include -#include #include diff --git a/src/system/boot/platform/u-boot/video.cpp b/src/system/boot/platform/u-boot/video.cpp index babb638946..1c245f439a 100644 --- a/src/system/boot/platform/u-boot/video.cpp +++ b/src/system/boot/platform/u-boot/video.cpp @@ -14,7 +14,6 @@ #include #include #include -#include #include #include @@ -104,6 +103,8 @@ platform_switch_to_text_mode(void) extern "C" status_t platform_init_video(void) { + +#warning TODO: Fix u-boot arm framebuffer location from fdt! #ifdef __ARM__ #if defined(BOARD_CPU_ARM920T) extern ArchFramebuffer *arch_get_fb_arm_920(addr_t base); diff --git a/src/system/kernel/arch/arm/arch_uart_8250.cpp b/src/system/kernel/arch/arm/arch_uart_8250.cpp index aa8fb1e7ee..ef3d06d0e7 100644 --- a/src/system/kernel/arch/arm/arch_uart_8250.cpp +++ b/src/system/kernel/arch/arm/arch_uart_8250.cpp @@ -9,7 +9,6 @@ #include #include -#include #include #include @@ -42,7 +41,7 @@ void ArchUART8250::InitEarly() { // Perform special hardware UART configuration - +#warning TODO: Detect OMAP3 from fdt! #if BOARD_CPU_OMAP3 /* UART1 */ RMWREG32(CM_FCLKEN1_CORE, 13, 1, 1); From 1e82d7bd254f26623d713bfb9008f076d5ea3c0d Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Mon, 10 Jul 2017 08:19:44 -0500 Subject: [PATCH 2/8] kernel/arm: Work out more board_config's via fdt --- build/jam/ArchitectureRules | 13 +++++------- .../kernel/arch/arm/arch_debug_console.cpp | 20 +++++++++---------- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/build/jam/ArchitectureRules b/build/jam/ArchitectureRules index 706e61d552..9e87fad8a4 100644 --- a/build/jam/ArchitectureRules +++ b/build/jam/ArchitectureRules @@ -234,6 +234,7 @@ rule KernelArchitectureSetup architecture case arm : HAIKU_BOOT_PLATFORM ?= u-boot ; + HAIKU_BOARD_LOADER_BASE ?= 0x1000000 ; HAIKU_BOOT_FLOPPY_IMAGE_SIZE = 1440 ; # offset in floppy image (>= sizeof(haiku_loader)) HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET = 192 ; # in kB - unused yet @@ -325,14 +326,10 @@ rule KernelArchitectureSetup architecture HAIKU_KERNEL_PIC_LINKFLAGS = ; HAIKU_KERNEL_ADDON_LINKFLAGS = ; - # Include embedded board-specific file. - if $(HAIKU_BOOT_BOARD) { - include [ FDirName $(HAIKU_BUILD_RULES_DIR) board $(HAIKU_BOOT_BOARD) - BoardSetup ] ; - if $(HAIKU_BOARD_LOADER_BASE) { - HAIKU_BOOT_LDFLAGS += - --defsym BOARD_LOADER_BASE=$(HAIKU_BOARD_LOADER_BASE) ; - } + # Any special kernel base addresses + if $(HAIKU_BOARD_LOADER_BASE) { + HAIKU_BOOT_LDFLAGS += + --defsym BOARD_LOADER_BASE=$(HAIKU_BOARD_LOADER_BASE) ; } switch $(cpu) { diff --git a/src/system/kernel/arch/arm/arch_debug_console.cpp b/src/system/kernel/arch/arm/arch_debug_console.cpp index 195b68b632..b76b32547f 100644 --- a/src/system/kernel/arch/arm/arch_debug_console.cpp +++ b/src/system/kernel/arch/arm/arch_debug_console.cpp @@ -12,17 +12,16 @@ //#include #include -#include -#include +#include #include #include #include #include -#include "board_config.h" - +// TODO: Declare this in some header DebugUART *gArchDebugUART; +extern DebugUART *debug_uart_from_fdt(const void *fdt); void @@ -95,12 +94,13 @@ arch_debug_serial_early_boot_message(const char *string) status_t arch_debug_console_init(kernel_args *args) { - #if defined(BOARD_UART_PL011) - gArchDebugUART = arch_get_uart_pl011(BOARD_UART_DEBUG, BOARD_UART_CLOCK); - #else - // More Generic 8250 - gArchDebugUART = arch_get_uart_8250(BOARD_UART_DEBUG, BOARD_UART_CLOCK); - #endif + // first try with hints from the FDT + gArchDebugUART = debug_uart_from_fdt(args->platform_args.fdt); + + // Do we can some kind of direct fallback here + // (aka, guess arch_get_uart_pl011 or arch_get_uart_8250?) + if (gArchDebugUART == NULL) + return B_ERROR; gArchDebugUART->InitEarly(); From 1b3c81feeb67741aec66598b640016cb8578c546 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Mon, 10 Jul 2017 09:02:56 -0500 Subject: [PATCH 3/8] u-boot: Fix mmc build without target boards --- build/jam/ArchitectureRules | 7 ++++- build/jam/BuildSetup | 2 -- src/system/boot/platform/u-boot/Jamfile | 40 ++++++++++--------------- src/system/kernel/arch/arm/Jamfile | 2 -- 4 files changed, 22 insertions(+), 29 deletions(-) diff --git a/build/jam/ArchitectureRules b/build/jam/ArchitectureRules index 9e87fad8a4..0f3e8118fc 100644 --- a/build/jam/ArchitectureRules +++ b/build/jam/ArchitectureRules @@ -234,10 +234,15 @@ rule KernelArchitectureSetup architecture case arm : HAIKU_BOOT_PLATFORM ?= u-boot ; - HAIKU_BOARD_LOADER_BASE ?= 0x1000000 ; + + HAIKU_BOOT_SDIMAGE_SIZE ?= 128 ; + # SOC's like allwinner need an offset to skip the hardcoded initial loader + HAIKU_BOOT_SDIMAGE_BEGIN = 40950 ; # 512-byte sectors (divisible by 63) + HAIKU_BOOT_FLOPPY_IMAGE_SIZE = 1440 ; # offset in floppy image (>= sizeof(haiku_loader)) HAIKU_BOOT_ARCHIVE_IMAGE_OFFSET = 192 ; # in kB - unused yet + HAIKU_BOOT_LOADER_BASE ?= 0x1000000 ; case x86 : HAIKU_BOOT_PLATFORM ?= bios_ia32 ; diff --git a/build/jam/BuildSetup b/build/jam/BuildSetup index db5e0fcad4..ef6483ebcd 100644 --- a/build/jam/BuildSetup +++ b/build/jam/BuildSetup @@ -710,7 +710,6 @@ if $(TARGET_PLATFORM) = haiku { TARGET_BOOT_LIBSUPC++ = $(HAIKU_BOOT_LIBSUPC++_$(TARGET_PACKAGING_ARCH)) ; TARGET_BOOT_PLATFORM ?= $(HAIKU_BOOT_PLATFORM) ; - TARGET_BOOT_BOARD ?= $(HAIKU_BOOT_BOARD) ; local architecture ; for architecture in $(TARGET_PACKAGING_ARCHS) { @@ -732,7 +731,6 @@ if $(TARGET_PLATFORM) = haiku { TARGET_BOOT_LIBSUPC++ = ; TARGET_BOOT_PLATFORM = ; - TARGET_BOOT_BOARD = ; TARGET_DEFINES_$(TARGET_PACKAGING_ARCH) = ; # all flags are in TARGET_DEFINES diff --git a/src/system/boot/platform/u-boot/Jamfile b/src/system/boot/platform/u-boot/Jamfile index 88a589e285..f1a305a218 100644 --- a/src/system/boot/platform/u-boot/Jamfile +++ b/src/system/boot/platform/u-boot/Jamfile @@ -11,10 +11,6 @@ UsePrivateHeaders [ FDirName graphics vesa ] ; UsePrivateHeaders [ FDirName storage ] ; UsePrivateHeaders [ FDirName kernel arch generic ] ; -# TODO: move this to arch/arm ! - -UsePrivateHeaders [ FDirName kernel arch $(TARGET_KERNEL_ARCH) board $(TARGET_BOOT_BOARD) ] ; - { local defines = _BOOT_MODE ; @@ -164,8 +160,8 @@ rule BuildUBootSDImage image : files SDIMAGE_MTOOLS_H on $(image) = 255 ; SDIMAGE_MTOOLS_S on $(image) = 63 ; SDIMAGE_MTOOLS_C on $(image) = 8 ; - SDIMAGE_SIZE on $(image) = $(HAIKU_BOARD_SDIMAGE_SIZE) ; - SDIMAGE_BEGIN on $(image) = $(HAIKU_BOARD_SDIMAGE_BEGIN:E=63) ; + SDIMAGE_SIZE on $(image) = $(HAIKU_BOOT_SDIMAGE_SIZE) ; + SDIMAGE_BEGIN on $(image) = $(HAIKU_BOOT_SDIMAGE_BEGIN:E=63) ; BuildUBootSDImage1 $(image) : $(files) ; } @@ -234,23 +230,19 @@ actions BlessSDImage1 bind HAIKU_BOARD_SDIMAGE_BOOT0_SEEK HAIKU_BOARD_SDIMAGE_BO fi } +HAIKU_BOOT_LOADER_ENTRY_LINUX = `printf \"obase=16;ibase=16;10 + %x\\n\" $(HAIKU_BOOT_LOADER_BASE)|bc` ; # uimage targets -BuildUImage haiku_loader.ub : haiku_loader : - -A $(TARGET_ARCH) -O $(uImageFakeOS) -T kernel -C none - -a $(HAIKU_BOARD_LOADER_BASE) -e $(HAIKU_BOARD_LOADER_ENTRY_RAW) - -n 'haiku_loader $(TARGET_BOOT_BOARD)' ; - local tgzArchive = haiku-floppyboot.tgz ; BuildUImage $(tgzArchive).ub : $(tgzArchive) : -A $(TARGET_ARCH) -O linux -T ramdisk -C none - -n '$(tgzArchive) $(TARGET_BOOT_BOARD)' ; + -n '$(tgzArchive)' ; -BuildUImage haiku_loader_linux.ub : haiku_loader : +BuildUImage haiku_loader.ub : haiku_loader : -A $(TARGET_ARCH) -O linux -T kernel -C none - -a $(HAIKU_BOARD_LOADER_BASE) -e $(HAIKU_BOARD_LOADER_ENTRY_LINUX) - -n 'haiku_loader $(TARGET_BOOT_BOARD)' ; + -a $(HAIKU_BOOT_LOADER_BASE) -e $(HAIKU_BOOT_LOADER_ENTRY_LINUX) + -n 'haiku_loader' ; if $(HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT_NAME) { BuildUImageScript $(HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT_NAME) : @@ -259,26 +251,26 @@ if $(HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT_NAME) { # flash image targets -BuildUBootFlashImage haiku-$(HAIKU_BOOT_BOARD)_flash_image_raw.img : haiku_loader : +BuildUBootFlashImage haiku-$(TARGET_KERNEL_ARCH)_flash_image_raw.img : haiku_loader : $(FLASH_IMAGE_PARTS) ; NotFile haiku-flash-image ; -Depends haiku-flash-image : haiku-$(HAIKU_BOOT_BOARD)_flash_image_raw.img ; +Depends haiku-flash-image : haiku-$(TARGET_KERNEL_ARCH)_flash_image_raw.img ; -#BuildUBootFlashImage haiku-$(HAIKU_BOOT_BOARD)_flash_image_elf.img : boot_loader_u-boot : +#BuildUBootFlashImage haiku-$(TARGET_KERNEL_ARCH)_flash_image_elf.img : boot_loader_u-boot : # $(FLASH_IMAGE_PARTS) ; #NotFile haiku-flash-elf-image ; -#Depends haiku-flash-elf-image : haiku-$(HAIKU_BOOT_BOARD)_flash_image_elf.img ; +#Depends haiku-flash-elf-image : haiku-$(TARGET_KERNEL_ARCH)_flash_image_elf.img ; -BuildUBootFlashImage haiku-$(HAIKU_BOOT_BOARD)_flash_image_uimage.img : haiku_loader.ub : +BuildUBootFlashImage haiku-$(TARGET_KERNEL_ARCH)_flash_image_uimage.img : haiku_loader.ub : $(FLASH_IMAGE_PARTS) ; NotFile haiku-flash-uimage ; -Depends haiku-flash-uimage : haiku-$(HAIKU_BOOT_BOARD)_flash_image_uimage.img ; +Depends haiku-flash-uimage : haiku-$(TARGET_KERNEL_ARCH)_flash_image_uimage.img ; # SD/mmc image targets -BuildUBootSDImage haiku-$(HAIKU_BOOT_BOARD).mmc : $(HAIKU_IMAGE) $(HAIKU_BOARD_SDIMAGE_FILES) ; -BlessSDImage haiku-$(HAIKU_BOOT_BOARD).mmc ; +BuildUBootSDImage haiku-$(TARGET_KERNEL_ARCH).mmc : $(HAIKU_IMAGE) haiku_loader.ub ; +BlessSDImage haiku-$(TARGET_KERNEL_ARCH).mmc ; NotFile haiku-mmc-image ; -Depends haiku-mmc-image : haiku-$(HAIKU_BOOT_BOARD).mmc ; +Depends haiku-mmc-image : haiku-$(TARGET_KERNEL_ARCH).mmc ; SEARCH on [ FGristFiles $(genericPlatformSources) ] = [ FDirName $(HAIKU_TOP) src system boot platform generic ] ; diff --git a/src/system/kernel/arch/arm/Jamfile b/src/system/kernel/arch/arm/Jamfile index 62f6f6c286..bed3e6afee 100644 --- a/src/system/kernel/arch/arm/Jamfile +++ b/src/system/kernel/arch/arm/Jamfile @@ -2,8 +2,6 @@ SubDir HAIKU_TOP src system kernel arch arm ; SubDirHdrs $(SUBDIR) $(DOTDOT) generic ; UsePrivateKernelHeaders ; -UsePrivateHeaders [ FDirName kernel arch $(TARGET_KERNEL_ARCH) board $(TARGET_BOOT_BOARD) ] ; - SEARCH_SOURCE += [ FDirName $(SUBDIR) paging ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) paging 32bit ] ; From f5d7446b5b8257338b0afd8f0245e39b2ed76365 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Mon, 10 Jul 2017 13:34:29 -0500 Subject: [PATCH 4/8] u-boot: Correct loader base naming --- build/jam/ArchitectureRules | 4 ++-- src/system/ldscripts/arm/boot_loader_u-boot.ld | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/jam/ArchitectureRules b/build/jam/ArchitectureRules index 0f3e8118fc..e74950e3d4 100644 --- a/build/jam/ArchitectureRules +++ b/build/jam/ArchitectureRules @@ -332,9 +332,9 @@ rule KernelArchitectureSetup architecture HAIKU_KERNEL_ADDON_LINKFLAGS = ; # Any special kernel base addresses - if $(HAIKU_BOARD_LOADER_BASE) { + if $(HAIKU_BOOT_LOADER_BASE) { HAIKU_BOOT_LDFLAGS += - --defsym BOARD_LOADER_BASE=$(HAIKU_BOARD_LOADER_BASE) ; + --defsym BOOT_LOADER_BASE=$(HAIKU_BOOT_LOADER_BASE) ; } switch $(cpu) { diff --git a/src/system/ldscripts/arm/boot_loader_u-boot.ld b/src/system/ldscripts/arm/boot_loader_u-boot.ld index 577ee75245..6108a21ab7 100644 --- a/src/system/ldscripts/arm/boot_loader_u-boot.ld +++ b/src/system/ldscripts/arm/boot_loader_u-boot.ld @@ -6,7 +6,7 @@ STACK_SIZE = 16384; ENTRY(_start) SECTIONS { - . = BOARD_LOADER_BASE; + . = BOOT_LOADER_BASE; /* text/read-only data */ .text : { *(.text .gnu.linkonce.t.*) } From aba73205842b4a086156210fef18954ecefdc01a Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Mon, 10 Jul 2017 14:53:04 -0500 Subject: [PATCH 5/8] u-boot/arm: Add missing floppyboot to mmc --- src/system/boot/platform/u-boot/Jamfile | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/system/boot/platform/u-boot/Jamfile b/src/system/boot/platform/u-boot/Jamfile index f1a305a218..f8efdc06a4 100644 --- a/src/system/boot/platform/u-boot/Jamfile +++ b/src/system/boot/platform/u-boot/Jamfile @@ -233,16 +233,14 @@ actions BlessSDImage1 bind HAIKU_BOARD_SDIMAGE_BOOT0_SEEK HAIKU_BOARD_SDIMAGE_BO HAIKU_BOOT_LOADER_ENTRY_LINUX = `printf \"obase=16;ibase=16;10 + %x\\n\" $(HAIKU_BOOT_LOADER_BASE)|bc` ; # uimage targets -local tgzArchive = haiku-floppyboot.tgz ; - -BuildUImage $(tgzArchive).ub : $(tgzArchive) : +BuildUImage haiku-floppyboot.tgz.ub : haiku-floppyboot.tgz : -A $(TARGET_ARCH) -O linux -T ramdisk -C none - -n '$(tgzArchive)' ; + -n 'Haiku $(TARGET_KERNEL_ARCH) floppyboot' ; BuildUImage haiku_loader.ub : haiku_loader : -A $(TARGET_ARCH) -O linux -T kernel -C none -a $(HAIKU_BOOT_LOADER_BASE) -e $(HAIKU_BOOT_LOADER_ENTRY_LINUX) - -n 'haiku_loader' ; + -n 'Haiku $(TARGET_KERNEL_ARCH) loader' ; if $(HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT_NAME) { BuildUImageScript $(HAIKU_BOARD_SDIMAGE_UBOOT_SCRIPT_NAME) : @@ -267,7 +265,8 @@ NotFile haiku-flash-uimage ; Depends haiku-flash-uimage : haiku-$(TARGET_KERNEL_ARCH)_flash_image_uimage.img ; # SD/mmc image targets -BuildUBootSDImage haiku-$(TARGET_KERNEL_ARCH).mmc : $(HAIKU_IMAGE) haiku_loader.ub ; +BuildUBootSDImage haiku-$(TARGET_KERNEL_ARCH).mmc : + $(HAIKU_IMAGE) haiku_loader.ub haiku-floppyboot.tgz.ub ; BlessSDImage haiku-$(TARGET_KERNEL_ARCH).mmc ; NotFile haiku-mmc-image ; Depends haiku-mmc-image : haiku-$(TARGET_KERNEL_ARCH).mmc ; From f642e558e8b22b947f03656890530d719c2d056b Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Mon, 10 Jul 2017 15:13:49 -0500 Subject: [PATCH 6/8] arm: Drop board_config headers --- .../arch/arm/board/beagleboard/board_config.h | 29 ------------ .../arch/arm/board/beaglebone/board_config.h | 29 ------------ .../arch/arm/board/cubieboard4/board_config.h | 45 ------------------- .../arm/board/neo_freerunner/board_config.h | 29 ------------ .../arch/arm/board/overo/board_config.h | 29 ------------ .../kernel/arch/arm/board/rpi2/board_config.h | 45 ------------------- .../arch/arm/board/verdex/board_config.h | 29 ------------ 7 files changed, 235 deletions(-) delete mode 100644 headers/private/kernel/arch/arm/board/beagleboard/board_config.h delete mode 100644 headers/private/kernel/arch/arm/board/beaglebone/board_config.h delete mode 100644 headers/private/kernel/arch/arm/board/cubieboard4/board_config.h delete mode 100644 headers/private/kernel/arch/arm/board/neo_freerunner/board_config.h delete mode 100644 headers/private/kernel/arch/arm/board/overo/board_config.h delete mode 100644 headers/private/kernel/arch/arm/board/rpi2/board_config.h delete mode 100644 headers/private/kernel/arch/arm/board/verdex/board_config.h diff --git a/headers/private/kernel/arch/arm/board/beagleboard/board_config.h b/headers/private/kernel/arch/arm/board/beagleboard/board_config.h deleted file mode 100644 index c791c8cf06..0000000000 --- a/headers/private/kernel/arch/arm/board/beagleboard/board_config.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2009 - * Distributed under the terms of the MIT License. - */ -#ifndef _BOARD_BEAGLE_BOARD_CONFIG_H -#define _BOARD_BEAGLE_BOARD_CONFIG_H - - -#define BOARD_NAME_PRETTY "Beagle Board" - -#define BOARD_CPU_TYPE_OMAP 1 -#define BOARD_CPU_OMAP3 1 - -#include - -// UART Settings -#define BOARD_UART_8250 1 - -#define BOARD_UART1_BASE OMAP_UART1_BASE -#define BOARD_UART2_BASE OMAP_UART2_BASE -#define BOARD_UART3_BASE OMAP_UART3_BASE - -#define BOARD_UART_DEBUG BOARD_UART3_BASE - -#define BOARD_UART_CLOCK 48000000 - // 48MHz (APLL96/2) - - -#endif /* _BOARD_BEAGLE_BOARD_CONFIG_H */ diff --git a/headers/private/kernel/arch/arm/board/beaglebone/board_config.h b/headers/private/kernel/arch/arm/board/beaglebone/board_config.h deleted file mode 100644 index efc35d2372..0000000000 --- a/headers/private/kernel/arch/arm/board/beaglebone/board_config.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2009 - * Distributed under the terms of the MIT License. - */ -#ifndef _BOARD_BEAGLE_BONE_CONFIG_H -#define _BOARD_BEAGLE_BONE_CONFIG_H - - -#define BOARD_NAME_PRETTY "BeagleBone" - -#define BOARD_CPU_TYPE_OMAP 1 -#define BOARD_CPU_OMAP3 1 - -#include - -// UART Settings -#define BOARD_UART_8250 1 - -#define BOARD_UART1_BASE OMAP_UART1_BASE -#define BOARD_UART2_BASE OMAP_UART2_BASE -#define BOARD_UART3_BASE OMAP_UART3_BASE - -#define BOARD_UART_DEBUG BOARD_UART3_BASE - -#define BOARD_UART_CLOCK 48000000 - // 48MHz (APLL96/2) - - -#endif /* _BOARD_BEAGLE_BONE_CONFIG_H */ diff --git a/headers/private/kernel/arch/arm/board/cubieboard4/board_config.h b/headers/private/kernel/arch/arm/board/cubieboard4/board_config.h deleted file mode 100644 index f517c7f01a..0000000000 --- a/headers/private/kernel/arch/arm/board/cubieboard4/board_config.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2012-2015 Haiku, Inc. All rights reserved. - * Distributed under the terms of the MIT License. - * - * Authors: - * Alexander von Gluck, kallisti5@unixzen.com - */ -#ifndef _BOARD_SUN9I_BOARD_CONFIG_H -#define _BOARD_SUN9I_BOARD_CONFIG_H - -// https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/sun9i-a80.dtsi -// http://linux-sunxi.org/A80/Memory_map - -#define BOARD_NAME_PRETTY "Allwinner A80" - -#define BOARD_CPU_TYPE_ARM7 1 -#define BOARD_CPU_A80 1 - -//#include - -// For now we just pick up APB1 devices + CPUS -#define DEVICE_BASE 0x07000000 -#define DEVICE_SIZE 0x1008FFF - -#define VECT_BASE 0xFFFF0000 -#define VECT_SIZE SIZE_4K - -#define SDRAM_BASE 0x20000000 -#define SDRAM_SIZE 0x4000000 - // 64Mb (although it is really 0x1FFFFFFFF) - -// UART Settings - -// snps,dw-apb-uart? -#define BOARD_UART1_BASE 0x07000000 -#define BOARD_UART2_BASE BOARD_UART1_BASE + 0x400 -#define BOARD_UART3_BASE BOARD_UART2_BASE + 0x400 - -#define BOARD_UART_DEBUG BOARD_UART1_BASE - -#define BOARD_UART_CLOCK 24000000 - /* 2.4Mhz */ - - -#endif /* _BOARD_SUN9I_BOARD_CONFIG_H */ diff --git a/headers/private/kernel/arch/arm/board/neo_freerunner/board_config.h b/headers/private/kernel/arch/arm/board/neo_freerunner/board_config.h deleted file mode 100644 index baf244123f..0000000000 --- a/headers/private/kernel/arch/arm/board/neo_freerunner/board_config.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2009 François Revol, revol@free.fr. - * Distributed under the terms of the MIT License. - */ -#ifndef _BOARD_FREERUNNER_BOARD_CONFIG_H -#define _BOARD_FREERUNNER_BOARD_CONFIG_H - - -#define BOARD_NAME_PRETTY "Openmoko Neo FreeRunner" - -#define BOARD_CPU_TYPE_ARM9 1 -#define BOARD_CPU_ARM920T 1 - -#include - -// UART Settings -#define BOARD_UART_8250 1 - -#define BOARD_UART1_BASE UART0_BASE -#define BOARD_UART2_BASE UART1_BASE -#define BOARD_UART3_BASE UART2_BASE - -#define BOARD_UART_DEBUG BOARD_UART3_BASE - -#define BOARD_UART_CLOCK 48000000 - // 48MHz (APLL96/2) - - -#endif /* _BOARD_FREERUNNER_BOARD_CONFIG_H */ diff --git a/headers/private/kernel/arch/arm/board/overo/board_config.h b/headers/private/kernel/arch/arm/board/overo/board_config.h deleted file mode 100644 index 12f471d28b..0000000000 --- a/headers/private/kernel/arch/arm/board/overo/board_config.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2009 - * Distributed under the terms of the MIT License. - */ -#ifndef _BOARD_OVERO_BOARD_CONFIG_H -#define _BOARD_OVERO_BOARD_CONFIG_H - - -#define BOARD_NAME_PRETTY "Gumstix Overo" - -#define BOARD_CPU_TYPE_OMAP 1 -#define BOARD_CPU_OMAP3 1 - -#include - -// UART Settings -#define BOARD_UART_8250 1 - -#define BOARD_UART1_BASE OMAP_UART1_BASE -#define BOARD_UART2_BASE OMAP_UART2_BASE -#define BOARD_UART3_BASE OMAP_UART3_BASE - -#define BOARD_UART_DEBUG BOARD_UART3_BASE - -#define BOARD_UART_CLOCK 48000000 - // 48MHz (APLL96/2) - - -#endif /* _BOARD_OVERO_BOARD_CONFIG_H */ diff --git a/headers/private/kernel/arch/arm/board/rpi2/board_config.h b/headers/private/kernel/arch/arm/board/rpi2/board_config.h deleted file mode 100644 index 98e21a061b..0000000000 --- a/headers/private/kernel/arch/arm/board/rpi2/board_config.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2012 Haiku, Inc. All rights reserved. - * Distributed under the terms of the MIT License. - * - * Authors: - * Alexander von Gluck, kallisti5@unixzen.com - */ -#ifndef _BOARD_RPI2_BOARD_CONFIG_H -#define _BOARD_RPI2_BOARD_CONFIG_H - - -#define BOARD_NAME_PRETTY "Raspberry Pi 2" - -#define BOARD_CPU_TYPE_ARM7 1 -#define BOARD_CPU_BCM2836 1 - -#include - -#define DEVICE_BASE BCM2836_PERIPHERAL_BASE -#define DEVICE_SIZE 0xFFFFFF - -#define VECT_BASE 0xFFFF0000 -#define VECT_SIZE SIZE_4K - -#define SDRAM_BASE BCM283X_SDRAM_BASE -#define SDRAM_SIZE 0x4000000 - // 64Mb - -// UART Settings -#define BOARD_UART_PL011 1 - -#define BOARD_UART1_BASE UART0_BASE - // PL011 UART -#define BOARD_UART2_BASE UART1_BASE + 0x40 - // miniUART -#define BOARD_UART3_BASE 0 - // N/A - -#define BOARD_UART_DEBUG DEVICE_BASE + BOARD_UART1_BASE - -#define BOARD_UART_CLOCK 3000000 - /* 3Mhz */ - - -#endif /* _BOARD_RPI2_BOARD_CONFIG_H */ diff --git a/headers/private/kernel/arch/arm/board/verdex/board_config.h b/headers/private/kernel/arch/arm/board/verdex/board_config.h deleted file mode 100644 index 4a9942e6d1..0000000000 --- a/headers/private/kernel/arch/arm/board/verdex/board_config.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2009 - * Distributed under the terms of the MIT License. - */ -#ifndef _BOARD_VERDEX_BOARD_CONFIG_H -#define _BOARD_VERDEX_BOARD_CONFIG_H - - -#define BOARD_NAME_PRETTY "Gumstix Verdex" - -#define BOARD_CPU_TYPE_PXA 1 -#define BOARD_CPU_PXA270 1 - -#include - -// UART Settings -#define BOARD_UART_8250 1 - -#define BOARD_UART1_BASE FFUART_BASE -#define BOARD_UART2_BASE BTUART_BASE -#define BOARD_UART3_BASE STUART_BASE - -#define BOARD_UART_DEBUG BOARD_UART1_BASE - -#define BOARD_UART_CLOCK 48000000 - // 48MHz (APLL96/2) - - -#endif /* _BOARD_VERDEX_BOARD_CONFIG_H */ From f2ed9d80f697005d9af2fa561ee1b5acfa490dbd Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Mon, 10 Jul 2017 15:16:09 -0500 Subject: [PATCH 7/8] configure: Drop target-board for arm/ppc --- configure | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/configure b/configure index 7dbbde2b61..7328b47494 100755 --- a/configure +++ b/configure @@ -83,9 +83,6 @@ options: first occurrence specifies the primary architecture of the Haiku to build, subsequent ones the secondary architectures. - --target-board ARM only: Target board to build for. - is one of: "beagleboard","beaglebone", - "rpi2","cubieboard4","verdex","overo" --update re-runs last configure invocation [must be given as first option!] --use-clang Build with host Clang instead of GCC cross @@ -473,14 +470,6 @@ supportedTargetArchs=" x86_64 x86_gcc2 " -supportedTargetBoards=" - beagleboard - beaglebone - rpi2 - cubieboard4 - verdex - overo - " # determine output directory if [ "$currentDir" = "$sourceDir" ]; then @@ -608,15 +597,6 @@ while [ $# -gt 0 ] ; do ) haikuTargetArchs="$haikuTargetArchs $targetArch" ;; - --target-board) - assertparam "$1" $# - HAIKU_BOOT_BOARD=$2 - is_in_list "$HAIKU_BOOT_BOARD" "$supportedTargetBoards" || ( - echo "Unsupported target board: \"$HAIKU_BOOT_BOARD\"" >&2 - exit 1 - ) - shift 2 - ;; --use-clang) useClang=1; shift 1;; --use-gcc-pipe) HAIKU_USE_GCC_PIPE=1; shift 1;; --use-gcc-graphite) useGccGraphiteDefault=1; shift 1;; From a01d0e5ae53e3daca6f1ff6b42f30b1600e4e4e6 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Mon, 10 Jul 2017 15:16:55 -0500 Subject: [PATCH 8/8] arm: Enable mmu tracing. (We're going to need it for a while) --- src/system/boot/arch/arm/arch_mmu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/system/boot/arch/arm/arch_mmu.cpp b/src/system/boot/arch/arm/arch_mmu.cpp index fe35bc76e8..d4c5450ed2 100644 --- a/src/system/boot/arch/arm/arch_mmu.cpp +++ b/src/system/boot/arch/arm/arch_mmu.cpp @@ -30,7 +30,7 @@ extern "C" { }; -//#define TRACE_MMU +#define TRACE_MMU #ifdef TRACE_MMU # define TRACE(x) dprintf x #else