// SPDX-License-Identifier: GPL-2.0 #include #include #include #include #include #include #include #include #include #ifdef CONFIG_CPU_V8 static noinline void dt_2nd_continue_aarch64(void *fdt) { unsigned long membase, memsize; if (!fdt) hang(); fdt_find_mem(fdt, &membase, &memsize); barebox_arm_entry(membase, memsize, fdt); } /* called from assembly */ void dt_2nd_aarch64(void *fdt); void dt_2nd_aarch64(void *fdt) { /* entry point already set up stack */ relocate_to_current_adr(); setup_c(); dt_2nd_continue_aarch64(fdt); } #else static noinline void dt_2nd_continue(void *fdt) { unsigned long membase, memsize; if (!fdt) hang(); fdt_find_mem(fdt, &membase, &memsize); barebox_arm_entry(membase, memsize, fdt); } ENTRY_FUNCTION(start_dt_2nd, r0, r1, r2) { unsigned long image_start = (unsigned long)_text + global_variable_offset(); arm_setup_stack(image_start); relocate_to_current_adr(); setup_c(); barrier(); dt_2nd_continue((void *)r2); } #endif