diff --git a/stand/efi/loader/arch/arm/exec.c b/stand/efi/loader/arch/arm/exec.c --- a/stand/efi/loader/arch/arm/exec.c +++ b/stand/efi/loader/arch/arm/exec.c @@ -69,9 +69,6 @@ efi_time_fini(); - entry = efi_translate(e->e_entry); - - printf("Kernel entry at %p...\n", entry); printf("Kernel args: %s\n", fp->f_args); /* @@ -85,6 +82,8 @@ return (error); } + entry = efi_translate(e->e_entry); + (*entry)((void *)modulep); panic("exec returned"); } diff --git a/stand/efi/loader/arch/arm64/exec.c b/stand/efi/loader/arch/arm64/exec.c --- a/stand/efi/loader/arch/arm64/exec.c +++ b/stand/efi/loader/arch/arm64/exec.c @@ -67,7 +67,6 @@ return(EFTYPE); ehdr = (Elf_Ehdr *)&(md->md_data); - entry = efi_translate(ehdr->e_entry); /* * we have to cleanup here because net_cleanup() doesn't work after @@ -82,6 +81,8 @@ return (err); } + entry = efi_translate(ehdr->e_entry); + /* Clean D-cache under kernel area and invalidate whole I-cache */ clean_addr = (vm_offset_t)efi_translate(fp->f_addr); clean_size = (vm_offset_t)efi_translate(kernendp) - clean_addr; diff --git a/stand/efi/loader/arch/riscv/exec.c b/stand/efi/loader/arch/riscv/exec.c --- a/stand/efi/loader/arch/riscv/exec.c +++ b/stand/efi/loader/arch/riscv/exec.c @@ -85,9 +85,6 @@ efi_time_fini(); - entry = efi_translate(e->e_entry); - - printf("Kernel entry at %p...\n", entry); printf("Kernel args: %s\n", fp->f_args); /* @@ -101,6 +98,8 @@ return (error); } + entry = efi_translate(e->e_entry); + (*entry)((void *)modulep); panic("exec returned"); }