Changeset View
Changeset View
Standalone View
Standalone View
stand/efi/loader/arch/arm/exec.c
Show All 38 Lines | |||||
#include <efi.h> | #include <efi.h> | ||||
#include <efilib.h> | #include <efilib.h> | ||||
#include "bootstrap.h" | #include "bootstrap.h" | ||||
#include "loader_efi.h" | #include "loader_efi.h" | ||||
extern vm_offset_t md_load(char *, vm_offset_t *); | extern vm_offset_t md_load(char *, vm_offset_t *); | ||||
extern int bi_load(char *, vm_offset_t *, vm_offset_t *); | extern int bi_load(char *, vm_offset_t *, vm_offset_t *, bool); | ||||
static int | static int | ||||
__elfN(arm_load)(char *filename, uint64_t dest, | __elfN(arm_load)(char *filename, uint64_t dest, | ||||
struct preloaded_file **result) | struct preloaded_file **result) | ||||
{ | { | ||||
int r; | int r; | ||||
r = __elfN(loadfile)(filename, dest, result); | r = __elfN(loadfile)(filename, dest, result); | ||||
Show All 19 Lines | __elfN(arm_exec)(struct preloaded_file *fp) | ||||
efi_time_fini(); | efi_time_fini(); | ||||
entry = efi_translate(e->e_entry); | entry = efi_translate(e->e_entry); | ||||
printf("Kernel entry at %p...\n", entry); | printf("Kernel entry at %p...\n", entry); | ||||
printf("Kernel args: %s\n", fp->f_args); | printf("Kernel args: %s\n", fp->f_args); | ||||
if ((error = bi_load(fp->f_args, &modulep, &kernend)) != 0) { | if ((error = bi_load(fp->f_args, &modulep, &kernend, true)) != 0) { | ||||
efi_time_init(); | efi_time_init(); | ||||
return (error); | return (error); | ||||
} | } | ||||
/* At this point we've called ExitBootServices, so we can't call | /* At this point we've called ExitBootServices, so we can't call | ||||
* printf or any other function that uses Boot Services */ | * printf or any other function that uses Boot Services */ | ||||
dev_cleanup(); | dev_cleanup(); | ||||
Show All 15 Lines |