diff options
author | nwhitehorn <nwhitehorn@FreeBSD.org> | 2015-12-01 17:01:27 +0000 |
---|---|---|
committer | nwhitehorn <nwhitehorn@FreeBSD.org> | 2015-12-01 17:01:27 +0000 |
commit | 30ee3ed7550a4dcf3e98b86631814e814710942a (patch) | |
tree | dad81cd493c121399fa7384f0c3757067c3735dd /sys/boot/ofw | |
parent | 635273ca5baf8502302e42c12d4a4307a566483f (diff) | |
download | FreeBSD-src-30ee3ed7550a4dcf3e98b86631814e814710942a.zip FreeBSD-src-30ee3ed7550a4dcf3e98b86631814e814710942a.tar.gz |
Allow loader to load 64-bit ELFv2 PowerPC kernels.
Diffstat (limited to 'sys/boot/ofw')
-rw-r--r-- | sys/boot/ofw/libofw/ppc64_elf_freebsd.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/boot/ofw/libofw/ppc64_elf_freebsd.c b/sys/boot/ofw/libofw/ppc64_elf_freebsd.c index f85a77a..b411da4 100644 --- a/sys/boot/ofw/libofw/ppc64_elf_freebsd.c +++ b/sys/boot/ofw/libofw/ppc64_elf_freebsd.c @@ -77,8 +77,11 @@ ppc64_ofw_elf_exec(struct preloaded_file *fp) } e = (Elf_Ehdr *)&fmp->md_data; - /* Handle function descriptor */ - entry = *(uint64_t *)e->e_entry; + /* Handle function descriptor for ELFv1 kernels */ + if ((e->e_flags & 3) == 2) + entry = e->e_entry; + else + entry = *(uint64_t *)e->e_entry; if ((error = md_load64(fp->f_args, &mdp, &dtbp)) != 0) return (error); |