diff --git a/cmake-tool/helpers/application_settings.cmake b/cmake-tool/helpers/application_settings.cmake index 6205c40b..4b808817 100644 --- a/cmake-tool/helpers/application_settings.cmake +++ b/cmake-tool/helpers/application_settings.cmake @@ -9,7 +9,7 @@ cmake_minimum_required(VERSION 3.8.2) include_guard(GLOBAL) function(ApplyData61ElfLoaderSettings kernel_platform kernel_sel4_arch) - set(binary_list "tx1;hikey;odroidc2;imx8mq-evk;zynqmp;imx8mm-evk;hifive") + set(binary_list "tx1;hikey;odroidc2;imx8mq-evk;zynqmp;imx8mm-evk;hifive;bcm2837") set(efi_list "tk1;rockpro64") set(uimage_list "tx2;am335x") if( @@ -19,9 +19,6 @@ function(ApplyData61ElfLoaderSettings kernel_platform kernel_sel4_arch) set(ElfloaderImage "efi" CACHE STRING "" FORCE) elseif(${kernel_platform} IN_LIST uimage_list) set(ElfloaderImage "uimage" CACHE STRING "" FORCE) - #rpi3 - elseif(${kernel_platform} STREQUAL "bcm2837" AND ${kernel_sel4_arch} STREQUAL "aarch64") - set(ElfloaderImage "binary" CACHE STRING "" FORCE) #rpi4 elseif(${kernel_platform} STREQUAL "bcm2711" AND ${kernel_sel4_arch} STREQUAL "aarch64") set(ElfloaderImage "efi" CACHE STRING "" FORCE) diff --git a/elfloader-tool/src/arch-arm/64/crt0.S b/elfloader-tool/src/arch-arm/64/crt0.S index acd4de92..7d1249be 100644 --- a/elfloader-tool/src/arch-arm/64/crt0.S +++ b/elfloader-tool/src/arch-arm/64/crt0.S @@ -29,7 +29,7 @@ BEGIN_FUNC(_start) bl fixup_image_base mov x2, x0 /* restore original arguments for next step */ - ldp x0, x1, [sp, #-16]! + ldp x0, x1, [sp], #16 /* fixup_image_base returns 1 if no need to move */ cmp x2, #1 beq 1f diff --git a/elfloader-tool/src/arch-arm/sys_boot.c b/elfloader-tool/src/arch-arm/sys_boot.c index 487c744a..e02758fd 100644 --- a/elfloader-tool/src/arch-arm/sys_boot.c +++ b/elfloader-tool/src/arch-arm/sys_boot.c @@ -112,7 +112,7 @@ void main(UNUSED void *arg) print_cpuid(); printf(" paddr=[%p..%p]\n", _text, _end - 1); -#if defined(CONFIG_IMAGE_UIMAGE) +#if defined(CONFIG_IMAGE_UIMAGE) || defined(CONFIG_IMAGE_BINARY) /* U-Boot passes a DTB. Ancient bootloaders may pass atags. When booting via * bootelf argc is NULL. @@ -133,7 +133,7 @@ void main(UNUSED void *arg) #endif if (bootloader_dtb) { - printf(" dtb=%p\n", dtb); + printf(" dtb=%p\n", bootloader_dtb); } else { printf("No DTB passed in from boot loader.\n"); }