diff options
Diffstat (limited to 'arch/arm/cpu')
-rw-r--r-- | arch/arm/cpu/board-dt-2nd-aarch64.S | 26 | ||||
-rw-r--r-- | arch/arm/cpu/board-dt-2nd.c | 4 |
2 files changed, 23 insertions, 7 deletions
diff --git a/arch/arm/cpu/board-dt-2nd-aarch64.S b/arch/arm/cpu/board-dt-2nd-aarch64.S index 0540a1690d..d2c9f132ce 100644 --- a/arch/arm/cpu/board-dt-2nd-aarch64.S +++ b/arch/arm/cpu/board-dt-2nd-aarch64.S @@ -1,11 +1,29 @@ /* SPDX-License-Identifier: GPL-2.0-or-later */ #include <linux/linkage.h> #include <asm/barebox-arm64.h> +#include <asm/image.h> -ENTRY_PROC(start_dt_2nd) - adr x1, stack +#define IMAGE_FLAGS \ + (ARM64_IMAGE_FLAG_PAGE_SIZE_4K << ARM64_IMAGE_FLAG_PAGE_SIZE_SHIFT) | \ + (ARM64_IMAGE_FLAG_PHYS_BASE << ARM64_IMAGE_FLAG_PHYS_BASE_SHIFT) + +.section .text_head_entry_start_dt_2nd +ENTRY("start_dt_2nd") + adr x1, 0 /* code0 */ + b 2f /* code1 */ + .xword 0x80000 /* Image load offset */ + .xword _barebox_image_size /* Effective Image size */ + .xword IMAGE_FLAGS /* Kernel flags */ + .xword 0 /* reserved */ + .xword 0 /* reserved */ + .xword 0 /* reserved */ + .ascii ARM64_IMAGE_MAGIC /* magic number */ + .int 0 /* reserved (PE-COFF offset) */ + .asciz "barebox" /* unused for now */ +2: mov sp, x1 + /* Stack now grows into the 0x80000 image load offset specified + * above. This is more than enough until FDT /memory is decoded. + */ b dt_2nd_aarch64 -.word 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 -stack: ENTRY_PROC_END(start_dt_2nd) diff --git a/arch/arm/cpu/board-dt-2nd.c b/arch/arm/cpu/board-dt-2nd.c index bb13180785..6f6f535918 100644 --- a/arch/arm/cpu/board-dt-2nd.c +++ b/arch/arm/cpu/board-dt-2nd.c @@ -29,9 +29,7 @@ void dt_2nd_aarch64(void *fdt); void dt_2nd_aarch64(void *fdt) { - unsigned long image_start = (unsigned long)_text + global_variable_offset(); - - arm_setup_stack(image_start); + /* entry point already set up stack */ relocate_to_current_adr(); setup_c(); |