diff --git a/sys/mips/mips/elf_trampoline.c b/sys/mips/mips/elf_trampoline.c index a10919d31321..d98b84684429 100644 --- a/sys/mips/mips/elf_trampoline.c +++ b/sys/mips/mips/elf_trampoline.c @@ -27,7 +27,11 @@ __FBSDID("$FreeBSD$"); #include #include +#ifdef __mips_n64 +#include +#else #include +#endif #include #include #include @@ -89,12 +93,21 @@ bzero(void *addr, size_t count) void * load_kernel(void * kstart) { +#ifdef __mips_n64 + Elf64_Ehdr *eh; + Elf64_Phdr phdr[64] /* XXX */; +#else Elf32_Ehdr *eh; Elf32_Phdr phdr[64] /* XXX */; +#endif int i; void *entry_point; +#ifdef __mips_n64 + eh = (Elf64_Ehdr *)kstart; +#else eh = (Elf32_Ehdr *)kstart; +#endif entry_point = (void*)eh->e_entry; memcpy(phdr, (void *)(kstart + eh->e_phoff ), eh->e_phnum * sizeof(phdr[0]));