svn commit: r247377 - projects/uefi/sys/boot/i386/efi
Benno Rice
benno at FreeBSD.org
Wed Feb 27 04:44:50 UTC 2013
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>
More information about the svn-src-projects
mailing list