Date: Wed, 27 Feb 2013 04:44:49 +0000 (UTC) From: Benno Rice <benno@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r247377 - projects/uefi/sys/boot/i386/efi Message-ID: <201302270444.r1R4in6S005923@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: benno Date: Wed Feb 27 04:44:48 2013 New Revision: 247377 URL: http://svnweb.freebsd.org/changeset/base/247377 Log: Remove all bootinfo support as amd64 doesn't use it. Modified: projects/uefi/sys/boot/i386/efi/bootinfo.c projects/uefi/sys/boot/i386/efi/bootinfo64.c projects/uefi/sys/boot/i386/efi/efimd.c projects/uefi/sys/boot/i386/efi/elf64_freebsd.c Modified: projects/uefi/sys/boot/i386/efi/bootinfo.c ============================================================================== --- projects/uefi/sys/boot/i386/efi/bootinfo.c Wed Feb 27 04:42:30 2013 (r247376) +++ projects/uefi/sys/boot/i386/efi/bootinfo.c Wed Feb 27 04:44:48 2013 (r247377) @@ -39,7 +39,6 @@ __FBSDID("$FreeBSD$"); #include "bootstrap.h" #include "libi386.h" -#include <machine/bootinfo.h> #include "x86_efi_copy.h" @@ -143,157 +142,3 @@ bi_copyenv(vm_offset_t start) last = start; return(last); } - -/* - * Copy module-related data into the load area, where it can be - * used as a directory for loaded modules. - * - * Module data is presented in a self-describing format. Each datum - * is preceded by a 32-bit identifier and a 32-bit size field. - * - * Currently, the following data are saved: - * - * MOD_NAME (variable) module name (string) - * MOD_TYPE (variable) module type (string) - * MOD_ARGS (variable) module parameters (string) - * MOD_ADDR sizeof(vm_offset_t) module load address - * MOD_SIZE sizeof(size_t) module size - * MOD_METADATA (variable) type-specific metadata - */ -#define COPY32(v, a) { \ - u_int32_t x = (v); \ - x86_efi_copyin(&x, a, sizeof(x)); \ - a += sizeof(x); \ -} - -#define MOD_STR(t, a, s) { \ - COPY32(t, a); \ - COPY32(strlen(s) + 1, a); \ - x86_efi_copyin(s, a, strlen(s) + 1); \ - a += roundup(strlen(s) + 1, sizeof(u_int64_t));\ -} - -#define MOD_NAME(a, s) MOD_STR(MODINFO_NAME, a, s) -#define MOD_TYPE(a, s) MOD_STR(MODINFO_TYPE, a, s) -#define MOD_ARGS(a, s) MOD_STR(MODINFO_ARGS, a, s) - -#define MOD_VAR(t, a, s) { \ - COPY32(t, a); \ - COPY32(sizeof(s), a); \ - x86_efi_copyin(&s, a, sizeof(s)); \ - a += roundup(sizeof(s), sizeof(u_int64_t)); \ -} - -#define MOD_ADDR(a, s) MOD_VAR(MODINFO_ADDR, a, s) -#define MOD_SIZE(a, s) MOD_VAR(MODINFO_SIZE, a, s) - -#define MOD_METADATA(a, mm) { \ - COPY32(MODINFO_METADATA | mm->md_type, a); \ - COPY32(mm->md_size, a); \ - x86_efi_copyin(mm->md_data, a, mm->md_size); \ - a += roundup(mm->md_size, sizeof(u_int64_t));\ -} - -#define MOD_END(a) { \ - COPY32(MODINFO_END, a); \ - COPY32(0, a); \ -} - -vm_offset_t -bi_copymodules(vm_offset_t addr) -{ - struct preloaded_file *fp; - struct file_metadata *md; - - /* Start with the first module on the list, should be the kernel. */ - for (fp = file_findfile(NULL, NULL); fp != NULL; fp = fp->f_next) { - /* The name field must come first. */ - MOD_NAME(addr, fp->f_name); - MOD_TYPE(addr, fp->f_type); - if (fp->f_args) - MOD_ARGS(addr, fp->f_args); - MOD_ADDR(addr, fp->f_addr); - MOD_SIZE(addr, fp->f_size); - for (md = fp->f_metadata; md != NULL; md = md->md_next) { - if (!(md->md_type & MODINFOMD_NOCOPY)) - MOD_METADATA(addr, md); - } - } - MOD_END(addr); - return(addr); -} - -/* - * Load the information expected by the kernel. - * - * - The kernel environment is copied into kernel space. - * - Module metadata are formatted and placed in kernel space. - */ -int -bi_load(struct preloaded_file *fp, uint64_t *bi_addr) -{ - struct bootinfo bi; - struct preloaded_file *xp; - struct file_metadata *md; - struct devdesc *rootdev; - char *rootdevname; - vm_offset_t addr, ssym, esym; - - bzero(&bi, sizeof(struct bootinfo)); - bi.bi_version = 1; -// bi.bi_boothowto = bi_getboothowto(fp->f_args); - - /* - * Allow the environment variable 'rootdev' to override the supplied - * device. This should perhaps go to MI code and/or have $rootdev - * tested/set by MI code before launching the kernel. - */ - rootdevname = getenv("rootdev"); - i386_getdev((void**)&rootdev, rootdevname, NULL); - if (rootdev != NULL) { - /* Try reading /etc/fstab to select the root device. */ - getrootmount(i386_fmtdev(rootdev)); - free(rootdev); - } - - md = file_findmetadata(fp, MODINFOMD_SSYM); - ssym = (md != NULL) ? *((vm_offset_t *)&(md->md_data)) : 0; - md = file_findmetadata(fp, MODINFOMD_ESYM); - esym = (md != NULL) ? *((vm_offset_t *)&(md->md_data)) : 0; - if (ssym != 0 && esym != 0) { - bi.bi_symtab = ssym; - bi.bi_esymtab = esym; - } - - /* Find the last module in the chain. */ - addr = 0; - for (xp = file_findfile(NULL, NULL); xp != NULL; xp = xp->f_next) { - if (addr < (xp->f_addr + xp->f_size)) - addr = xp->f_addr + xp->f_size; - } - - addr = (addr + 15) & ~15; - - /* Copy module list and metadata. */ - bi.bi_modulep = addr; - addr = bi_copymodules(addr); - if (addr <= bi.bi_modulep) { - addr = bi.bi_modulep; - bi.bi_modulep = 0; - } - - addr = (addr + 15) & ~15; - - /* Copy our environment. */ - bi.bi_envp = addr; - addr = bi_copyenv(addr); - if (addr <= bi.bi_envp) { - addr = bi.bi_envp; - bi.bi_envp = 0; - } - - addr = (addr + PAGE_MASK) & ~PAGE_MASK; - bi.bi_kernend = addr; - - return (ldr_bootinfo(&bi, bi_addr)); -} Modified: projects/uefi/sys/boot/i386/efi/bootinfo64.c ============================================================================== --- projects/uefi/sys/boot/i386/efi/bootinfo64.c Wed Feb 27 04:42:30 2013 (r247376) +++ projects/uefi/sys/boot/i386/efi/bootinfo64.c Wed Feb 27 04:44:48 2013 (r247377) @@ -31,7 +31,6 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> #include <sys/reboot.h> #include <sys/linker.h> -#include <machine/bootinfo.h> #include <machine/cpufunc.h> #include <machine/psl.h> #include <machine/specialreg.h> Modified: projects/uefi/sys/boot/i386/efi/efimd.c ============================================================================== --- projects/uefi/sys/boot/i386/efi/efimd.c Wed Feb 27 04:42:30 2013 (r247376) +++ projects/uefi/sys/boot/i386/efi/efimd.c Wed Feb 27 04:44:48 2013 (r247377) @@ -32,7 +32,6 @@ __FBSDID("$FreeBSD$"); #include <efi.h> #include <efilib.h> -#include <machine/bootinfo.h> #include <machine/efi.h> #include <machine/metadata.h> Modified: projects/uefi/sys/boot/i386/efi/elf64_freebsd.c ============================================================================== --- projects/uefi/sys/boot/i386/efi/elf64_freebsd.c Wed Feb 27 04:42:30 2013 (r247376) +++ projects/uefi/sys/boot/i386/efi/elf64_freebsd.c Wed Feb 27 04:44:48 2013 (r247377) @@ -32,7 +32,6 @@ __FBSDID("$FreeBSD$"); #include <sys/exec.h> #include <sys/linker.h> #include <string.h> -#include <machine/bootinfo.h> #include <machine/elf.h> #include <stand.h>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201302270444.r1R4in6S005923>