Changeset View
Changeset View
Standalone View
Standalone View
head/sys/boot/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 *); | |||||
int | static int | ||||
__elfN(arm_load)(char *filename, u_int64_t dest, | __elfN(arm_load)(char *filename, u_int64_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); | ||||
if (r != 0) | if (r != 0) | ||||
return (r); | return (r); | ||||
return (0); | return (0); | ||||
} | } | ||||
int | static int | ||||
__elfN(arm_exec)(struct preloaded_file *fp) | __elfN(arm_exec)(struct preloaded_file *fp) | ||||
{ | { | ||||
struct file_metadata *fmp; | struct file_metadata *fmp; | ||||
vm_offset_t modulep, kernend; | vm_offset_t modulep, kernend; | ||||
Elf_Ehdr *e; | Elf_Ehdr *e; | ||||
int error; | int error; | ||||
void (*entry)(void *); | void (*entry)(void *); | ||||
EFI_STATUS status; | |||||
if ((fmp = file_findmetadata(fp, MODINFOMD_ELFHDR)) == NULL) | if ((fmp = file_findmetadata(fp, MODINFOMD_ELFHDR)) == NULL) | ||||
return (EFTYPE); | return (EFTYPE); | ||||
e = (Elf_Ehdr *)&fmp->md_data; | e = (Elf_Ehdr *)&fmp->md_data; | ||||
if ((error = bi_load(fp->f_args, &modulep, &kernend)) != 0) | if ((error = bi_load(fp->f_args, &modulep, &kernend)) != 0) | ||||
return (error); | return (error); | ||||
Show All 23 Lines |