diff options
author | dfr <dfr@FreeBSD.org> | 1998-10-15 21:55:58 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 1998-10-15 21:55:58 +0000 |
commit | 8c5d5288fbcb70de02621327a3273553234cea0b (patch) | |
tree | 720ac8a702aaf7cf2977a9a9e163dd8a38d7e148 /sys/boot/alpha | |
parent | e8799dedf6b7473d0987a29b908ba35cf6fedf0f (diff) | |
download | FreeBSD-src-8c5d5288fbcb70de02621327a3273553234cea0b.zip FreeBSD-src-8c5d5288fbcb70de02621327a3273553234cea0b.tar.gz |
Fix the bootinfo so that the right values actual make it into the kernel.
Diffstat (limited to 'sys/boot/alpha')
-rw-r--r-- | sys/boot/alpha/libalpha/bootinfo.c | 9 | ||||
-rw-r--r-- | sys/boot/alpha/libalpha/elf_freebsd.c | 12 |
2 files changed, 11 insertions, 10 deletions
diff --git a/sys/boot/alpha/libalpha/bootinfo.c b/sys/boot/alpha/libalpha/bootinfo.c index 99f213a..226c4a8 100644 --- a/sys/boot/alpha/libalpha/bootinfo.c +++ b/sys/boot/alpha/libalpha/bootinfo.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: bootinfo.c,v 1.1 1998/10/14 09:53:25 peter Exp $ + * $Id: bootinfo.c,v 1.2 1998/10/15 17:06:36 peter Exp $ */ #include <stand.h> @@ -146,13 +146,13 @@ bi_copymodules(vm_offset_t addr) * - Module metadata are formatted and placed in kernel space. */ int -bi_load(struct bootinfo_v1 *bi, vm_offset_t *ffp_save) +bi_load(struct bootinfo_v1 *bi, vm_offset_t *ffp_save, + struct loaded_module *mp) { struct loaded_module *xp; vm_offset_t addr, bootinfo_addr; u_int pad; vm_offset_t ssym, esym; - struct loaded_module *mp; struct module_metadata *md; ssym = esym = 0; @@ -163,6 +163,9 @@ bi_load(struct bootinfo_v1 *bi, vm_offset_t *ffp_save) if (ssym == 0 || esym == 0) ssym = esym = 0; /* sanity */ + bi->ssym = ssym; + bi->esym = esym; + /* find the last module in the chain */ addr = 0; for (xp = mod_findmodule(NULL, NULL); xp != NULL; xp = xp->m_next) { diff --git a/sys/boot/alpha/libalpha/elf_freebsd.c b/sys/boot/alpha/libalpha/elf_freebsd.c index edb0c21..e2cadae 100644 --- a/sys/boot/alpha/libalpha/elf_freebsd.c +++ b/sys/boot/alpha/libalpha/elf_freebsd.c @@ -1,4 +1,4 @@ -/* $Id: elf_freebsd.c,v 1.4 1998/10/11 03:53:35 dima Exp $ */ +/* $Id: elf_freebsd.c,v 1.5 1998/10/14 09:53:25 peter Exp $ */ /* $NetBSD: loadfile.c,v 1.10 1998/06/25 06:45:46 ross Exp $ */ /*- @@ -91,7 +91,8 @@ #define _KERNEL static int elf_exec(struct loaded_module *amp); -int bi_load(struct bootinfo_v1 *, vm_offset_t *); +int bi_load(struct bootinfo_v1 *, vm_offset_t *, + struct loaded_module *); struct module_format alpha_elf = { elf_loadmodule, elf_exec }; @@ -104,23 +105,20 @@ elf_exec(struct loaded_module *mp) struct module_metadata *md; Elf_Ehdr *hdr; int err; - vm_offset_t ssym, esym; if ((md = mod_findmetadata(mp, MODINFOMD_ELFHDR)) == NULL) return(EFTYPE); /* XXX actually EFUCKUP */ hdr = (Elf_Ehdr *)&(md->md_data); /* XXX ffp_save does not appear to be used in the kernel.. */ - err = bi_load(&bootinfo_v1, &ffp_save); + bzero(&bootinfo_v1, sizeof(bootinfo_v1)); + err = bi_load(&bootinfo_v1, &ffp_save, mp); if (err) return(err); /* * Fill in the bootinfo for the kernel. */ - bzero(&bootinfo_v1, sizeof(bootinfo_v1)); - bootinfo_v1.ssym = ssym; - bootinfo_v1.esym = esym; strncpy(bootinfo_v1.booted_kernel, mp->m_name, sizeof(bootinfo_v1.booted_kernel)); prom_getenv(PROM_E_BOOTED_OSFLAGS, bootinfo_v1.boot_flags, |