aboutsummaryrefslogtreecommitdiff
path: root/sys/boot/efi
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2017-11-14 23:02:19 +0000
committerWarner Losh <imp@FreeBSD.org>2017-11-14 23:02:19 +0000
commitca987d4641cdcd7f27e153db17c5bf064934faf5 (patch)
tree6c3860e3ba8949be9528d644fbb7fa88d8bbbb79 /sys/boot/efi
parent6eac7115560381ce5c9e2939ab3fce82bb9b6a95 (diff)
Move sys/boot to stand. Fix all references to new location
Sponsored by: Netflix
Notes
Notes: svn path=/head/; revision=325834
Diffstat (limited to 'sys/boot/efi')
-rw-r--r--sys/boot/efi/Makefile23
-rw-r--r--sys/boot/efi/Makefile.inc32
-rw-r--r--sys/boot/efi/boot1/Makefile129
-rw-r--r--sys/boot/efi/boot1/Makefile.depend17
-rw-r--r--sys/boot/efi/boot1/Makefile.fat4
-rw-r--r--sys/boot/efi/boot1/boot1.c583
-rw-r--r--sys/boot/efi/boot1/boot_module.h109
-rw-r--r--sys/boot/efi/boot1/fat-amd64.tmpl.xzbin1712 -> 0 bytes
-rw-r--r--sys/boot/efi/boot1/fat-arm.tmpl.xzbin1708 -> 0 bytes
-rw-r--r--sys/boot/efi/boot1/fat-arm64.tmpl.xzbin1720 -> 0 bytes
-rw-r--r--sys/boot/efi/boot1/fat-i386.tmpl.xzbin1720 -> 0 bytes
-rwxr-xr-xsys/boot/efi/boot1/generate-fat.sh79
-rw-r--r--sys/boot/efi/boot1/ufs_module.c185
-rw-r--r--sys/boot/efi/boot1/zfs_module.c248
-rw-r--r--sys/boot/efi/fdt/Makefile30
-rw-r--r--sys/boot/efi/fdt/Makefile.depend13
-rw-r--r--sys/boot/efi/fdt/efi_fdt.c62
-rw-r--r--sys/boot/efi/include/README36
-rw-r--r--sys/boot/efi/include/amd64/efibind.h271
-rw-r--r--sys/boot/efi/include/amd64/pe.h591
-rw-r--r--sys/boot/efi/include/arm/efibind.h165
-rw-r--r--sys/boot/efi/include/arm64/efibind.h217
-rw-r--r--sys/boot/efi/include/efi.h63
-rw-r--r--sys/boot/efi/include/efi_driver_utils.h38
-rw-r--r--sys/boot/efi/include/efi_drivers.h45
-rw-r--r--sys/boot/efi/include/efi_nii.h86
-rw-r--r--sys/boot/efi/include/efiapi.h902
-rw-r--r--sys/boot/efi/include/efichar.h36
-rw-r--r--sys/boot/efi/include/eficon.h309
-rw-r--r--sys/boot/efi/include/eficonsctl.h134
-rw-r--r--sys/boot/efi/include/efidebug.h118
-rw-r--r--sys/boot/efi/include/efidef.h206
-rw-r--r--sys/boot/efi/include/efidevp.h454
-rw-r--r--sys/boot/efi/include/efierr.h68
-rw-r--r--sys/boot/efi/include/efifpswa.h40
-rw-r--r--sys/boot/efi/include/efifs.h123
-rw-r--r--sys/boot/efi/include/efigop.h121
-rw-r--r--sys/boot/efi/include/efilib.h109
-rw-r--r--sys/boot/efi/include/efinet.h348
-rw-r--r--sys/boot/efi/include/efipart.h69
-rw-r--r--sys/boot/efi/include/efipciio.h557
-rw-r--r--sys/boot/efi/include/efiprot.h636
-rw-r--r--sys/boot/efi/include/efipxebc.h472
-rw-r--r--sys/boot/efi/include/efiser.h139
-rw-r--r--sys/boot/efi/include/efistdarg.h39
-rw-r--r--sys/boot/efi/include/efiuga.h168
-rw-r--r--sys/boot/efi/include/efizfs.h54
-rw-r--r--sys/boot/efi/include/i386/efibind.h267
-rw-r--r--sys/boot/efi/include/i386/pe.h630
-rw-r--r--sys/boot/efi/libefi/Makefile57
-rw-r--r--sys/boot/efi/libefi/Makefile.depend13
-rw-r--r--sys/boot/efi/libefi/delay.c47
-rw-r--r--sys/boot/efi/libefi/devicename.c219
-rw-r--r--sys/boot/efi/libefi/devpath.c197
-rw-r--r--sys/boot/efi/libefi/efi_console.c518
-rw-r--r--sys/boot/efi/libefi/efi_driver_utils.c91
-rw-r--r--sys/boot/efi/libefi/efichar.c201
-rw-r--r--sys/boot/efi/libefi/efinet.c390
-rw-r--r--sys/boot/efi/libefi/efipart.c984
-rw-r--r--sys/boot/efi/libefi/efizfs.c122
-rw-r--r--sys/boot/efi/libefi/env.c534
-rw-r--r--sys/boot/efi/libefi/errno.c157
-rw-r--r--sys/boot/efi/libefi/handles.c118
-rw-r--r--sys/boot/efi/libefi/libefi.c52
-rw-r--r--sys/boot/efi/libefi/time.c283
-rw-r--r--sys/boot/efi/libefi/time_event.c82
-rw-r--r--sys/boot/efi/libefi/wchar.c73
-rw-r--r--sys/boot/efi/loader/Makefile131
-rw-r--r--sys/boot/efi/loader/Makefile.depend17
-rw-r--r--sys/boot/efi/loader/arch/amd64/Makefile.inc15
-rw-r--r--sys/boot/efi/loader/arch/amd64/amd64_tramp.S64
-rw-r--r--sys/boot/efi/loader/arch/amd64/elf64_freebsd.c208
-rw-r--r--sys/boot/efi/loader/arch/amd64/exc.S165
-rw-r--r--sys/boot/efi/loader/arch/amd64/ldscript.amd6472
-rw-r--r--sys/boot/efi/loader/arch/amd64/start.S76
-rw-r--r--sys/boot/efi/loader/arch/amd64/trap.c408
-rw-r--r--sys/boot/efi/loader/arch/arm/Makefile.inc6
-rw-r--r--sys/boot/efi/loader/arch/arm/exec.c103
-rw-r--r--sys/boot/efi/loader/arch/arm/ldscript.arm67
-rw-r--r--sys/boot/efi/loader/arch/arm/start.S189
-rw-r--r--sys/boot/efi/loader/arch/arm64/Makefile.inc12
-rw-r--r--sys/boot/efi/loader/arch/arm64/exec.c144
-rw-r--r--sys/boot/efi/loader/arch/arm64/ldscript.arm6485
-rw-r--r--sys/boot/efi/loader/arch/arm64/start.S165
-rw-r--r--sys/boot/efi/loader/arch/i386/Makefile.inc14
-rw-r--r--sys/boot/efi/loader/arch/i386/bootinfo.c275
-rw-r--r--sys/boot/efi/loader/arch/i386/efimd.c142
-rw-r--r--sys/boot/efi/loader/arch/i386/elf32_freebsd.c100
-rw-r--r--sys/boot/efi/loader/arch/i386/exec.c49
-rw-r--r--sys/boot/efi/loader/arch/i386/i386_copy.c59
-rw-r--r--sys/boot/efi/loader/arch/i386/ldscript.i38677
-rw-r--r--sys/boot/efi/loader/arch/i386/start.S68
-rw-r--r--sys/boot/efi/loader/autoload.c37
-rw-r--r--sys/boot/efi/loader/bootinfo.c471
-rw-r--r--sys/boot/efi/loader/conf.c83
-rw-r--r--sys/boot/efi/loader/copy.c287
-rw-r--r--sys/boot/efi/loader/efi_main.c188
-rw-r--r--sys/boot/efi/loader/framebuffer.c568
-rw-r--r--sys/boot/efi/loader/framebuffer.h36
-rw-r--r--sys/boot/efi/loader/loader_efi.h47
-rw-r--r--sys/boot/efi/loader/main.c936
-rw-r--r--sys/boot/efi/loader/version7
102 files changed, 0 insertions, 18534 deletions
diff --git a/sys/boot/efi/Makefile b/sys/boot/efi/Makefile
deleted file mode 100644
index e3b22de4a99a..000000000000
--- a/sys/boot/efi/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-# $FreeBSD$
-
-.include <bsd.init.mk>
-
-# In-tree GCC does not support __attribute__((ms_abi)), but gcc newer
-# than 4.5 supports it.
-.if ${COMPILER_TYPE} != "gcc" || ${COMPILER_VERSION} >= 40500
-
-.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "arm"
-.if ${MK_FDT} != "no"
-SUBDIR+= fdt
-.endif
-.endif
-
-.if ${MACHINE_CPUARCH} == "aarch64" || \
- ${MACHINE_CPUARCH} == "amd64" || \
- ${MACHINE_CPUARCH} == "arm"
-SUBDIR+= libefi loader boot1
-.endif
-
-.endif # ${COMPILER_TYPE} != "gcc" || ${COMPILER_VERSION} >= 40500
-
-.include <bsd.subdir.mk>
diff --git a/sys/boot/efi/Makefile.inc b/sys/boot/efi/Makefile.inc
deleted file mode 100644
index 4fd8762e1a21..000000000000
--- a/sys/boot/efi/Makefile.inc
+++ /dev/null
@@ -1,32 +0,0 @@
-# $FreeBSD$
-
-.if ${MACHINE_CPUARCH} == "i386"
-CFLAGS+= -march=i386
-CFLAGS+= -mno-aes
-.endif
-
-# Options used when building app-specific efi components
-# See conf/kern.mk for the correct set of these
-CFLAGS+= -ffreestanding -Wformat ${CFLAGS_NO_SIMD}
-LDFLAGS+= -nostdlib
-
-.if ${MACHINE_CPUARCH} != "aarch64"
-CFLAGS+= -msoft-float
-.endif
-
-.if ${MACHINE_CPUARCH} == "amd64"
-CFLAGS+= -fshort-wchar
-CFLAGS+= -mno-red-zone
-CFLAGS+= -mno-aes
-.endif
-
-.if ${MACHINE_CPUARCH} == "aarch64"
-CFLAGS+= -fshort-wchar
-CFLAGS+= -fPIC
-.endif
-
-.if ${MACHINE_CPUARCH} == "arm"
-CFLAGS+= -fPIC
-.endif
-
-.include "../Makefile.inc"
diff --git a/sys/boot/efi/boot1/Makefile b/sys/boot/efi/boot1/Makefile
deleted file mode 100644
index f2e69460593d..000000000000
--- a/sys/boot/efi/boot1/Makefile
+++ /dev/null
@@ -1,129 +0,0 @@
-# $FreeBSD$
-
-MAN=
-
-.include <bsd.init.mk>
-
-MK_SSP= no
-MK_FORTH= no
-
-PROG= boot1.sym
-INTERNALPROG=
-WARNS?= 6
-
-# We implement a slightly non-standard %S in that it always takes a
-# CHAR16 that's common in UEFI-land instead of a wchar_t. This only
-# seems to matter on arm64 where wchar_t defaults to an int instead
-# of a short. There's no good cast to use here so just ignore the
-# warnings for now.
-CWARNFLAGS.boot1.c+= -Wno-format
-
-# Disable warnings that are currently incompatible with the zfs boot code
-CWARNFLAGS.zfs_module.c += -Wno-array-bounds
-CWARNFLAGS.zfs_module.c += -Wno-cast-align
-CWARNFLAGS.zfs_module.c += -Wno-cast-qual
-CWARNFLAGS.zfs_module.c += -Wno-missing-prototypes
-CWARNFLAGS.zfs_module.c += -Wno-sign-compare
-CWARNFLAGS.zfs_module.c += -Wno-unused-parameter
-CWARNFLAGS.zfs_module.c += -Wno-unused-function
-
-# architecture-specific loader code
-SRCS= boot1.c self_reloc.c start.S ufs_module.c
-.if ${MK_ZFS} != "no"
-SRCS+= zfs_module.c
-CFLAGS+= -I${ZFSSRC}
-CFLAGS+= -I${SYSDIR}/cddl/boot/zfs
-CFLAGS+= -DEFI_ZFS_BOOT
-LIBZFSBOOT= ${BOOTOBJ}/zfs/libzfsboot.a
-.endif
-
-.if ${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} > 40201
-CWARNFLAGS.self_reloc.c+= -Wno-error=maybe-uninitialized
-.endif
-
-CFLAGS+= -I${EFIINC}
-CFLAGS+= -I${EFIINCMD}
-CFLAGS+= -I${SYSDIR}/contrib/dev/acpica/include
-CFLAGS+= -DEFI_UFS_BOOT
-.ifdef(EFI_DEBUG)
-CFLAGS+= -DEFI_DEBUG
-.endif
-
-# Always add MI sources and REGULAR efi loader bits
-.PATH: ${EFISRC}/loader/arch/${MACHINE}
-.PATH: ${EFISRC}/loader
-.PATH: ${LDRSRC}
-CFLAGS+= -I${LDRSRC}
-
-FILES= boot1.efi boot1.efifat
-FILESMODE_boot1.efi= ${BINMODE}
-
-LDSCRIPT= ${EFISRC}/loader/arch/${MACHINE}/ldscript.${MACHINE}
-LDFLAGS+= -Wl,-T${LDSCRIPT},-Bsymbolic,-znotext -shared
-
-.if ${MACHINE_CPUARCH} == "aarch64"
-CFLAGS+= -mgeneral-regs-only
-.endif
-.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
-CFLAGS+= -fPIC
-LDFLAGS+= -Wl,-znocombreloc
-.endif
-
-LIBEFI= ${BOOTOBJ}/efi/libefi/libefi.a
-
-#
-# Add libstand for the runtime functions used by the compiler - for example
-# __aeabi_* (arm) or __divdi3 (i386).
-# as well as required string and memory functions for all platforms.
-#
-DPADD+= ${LIBEFI} ${LIBZFSBOOT} ${LIBSA}
-LDADD+= ${LIBEFI} ${LIBZFSBOOT} ${LIBSA}
-
-DPADD+= ${LDSCRIPT}
-
-NM?= nm
-OBJCOPY?= objcopy
-
-.if ${MACHINE_CPUARCH} == "amd64"
-EFI_TARGET= efi-app-x86_64
-.elif ${MACHINE_CPUARCH} == "i386"
-EFI_TARGET= efi-app-ia32
-.else
-EFI_TARGET= binary
-.endif
-
-# Arbitrarily set the PE/COFF header timestamps to 1 Jan 2016 00:00:00
-# for build reproducibility.
-SOURCE_DATE_EPOCH?=1451606400
-boot1.efi: ${PROG}
- if ${NM} ${.ALLSRC} | grep ' U '; then \
- echo "Undefined symbols in ${.ALLSRC}"; \
- exit 1; \
- fi
- SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH} \
- ${OBJCOPY} -j .peheader -j .text -j .sdata -j .data \
- -j .dynamic -j .dynsym -j .rel.dyn \
- -j .rela.dyn -j .reloc -j .eh_frame \
- --output-target=${EFI_TARGET} ${.ALLSRC} ${.TARGET}
-
-boot1.o: ${SASRC}/ufsread.c
-
-# The following inserts our objects into a template FAT file system
-# created by generate-fat.sh
-
-.include "${.CURDIR}/Makefile.fat"
-
-boot1.efifat: boot1.efi
- @set -- `ls -l ${.ALLSRC}`; \
- x=$$(($$5-${BOOT1_MAXSIZE})); \
- if [ $$x -ge 0 ]; then \
- echo "boot1 $$x bytes too large; regenerate FAT templates?" >&2 ;\
- exit 1; \
- fi
- echo ${.OBJDIR}
- xz -d -c ${.CURDIR}/fat-${MACHINE}.tmpl.xz > ${.TARGET}
- ${DD} if=${.ALLSRC} of=${.TARGET} seek=${BOOT1_OFFSET} conv=notrunc
-
-CLEANFILES+= boot1.efi boot1.efifat
-
-.include <bsd.prog.mk>
diff --git a/sys/boot/efi/boot1/Makefile.depend b/sys/boot/efi/boot1/Makefile.depend
deleted file mode 100644
index 813358d57274..000000000000
--- a/sys/boot/efi/boot1/Makefile.depend
+++ /dev/null
@@ -1,17 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- include \
- include/xlocale \
- lib/libmd \
- sys/boot/efi/libefi \
- sys/boot/libsa \
- sys/boot/zfs \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/sys/boot/efi/boot1/Makefile.fat b/sys/boot/efi/boot1/Makefile.fat
deleted file mode 100644
index 1d40fa8ab54c..000000000000
--- a/sys/boot/efi/boot1/Makefile.fat
+++ /dev/null
@@ -1,4 +0,0 @@
-# This file autogenerated by generate-fat.sh - DO NOT EDIT
-# $FreeBSD$
-BOOT1_OFFSET=0x2d
-BOOT1_MAXSIZE=393216
diff --git a/sys/boot/efi/boot1/boot1.c b/sys/boot/efi/boot1/boot1.c
deleted file mode 100644
index b7cb57f45530..000000000000
--- a/sys/boot/efi/boot1/boot1.c
+++ /dev/null
@@ -1,583 +0,0 @@
-/*-
- * Copyright (c) 1998 Robert Nordier
- * All rights reserved.
- * Copyright (c) 2001 Robert Drehmel
- * All rights reserved.
- * Copyright (c) 2014 Nathan Whitehorn
- * All rights reserved.
- * Copyright (c) 2015 Eric McCorkle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are freely
- * permitted provided that the above copyright notice and this
- * paragraph and the following disclaimer are duplicated in all
- * such forms.
- *
- * This software is provided "AS IS" and without any express or
- * implied warranties, including, without limitation, the implied
- * warranties of merchantability and fitness for a particular
- * purpose.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <machine/elf.h>
-#include <machine/stdarg.h>
-#include <stand.h>
-
-#include <efi.h>
-#include <eficonsctl.h>
-typedef CHAR16 efi_char;
-#include <efichar.h>
-
-#include "boot_module.h"
-#include "paths.h"
-
-static void efi_panic(EFI_STATUS s, const char *fmt, ...) __dead2 __printflike(2, 3);
-
-static const boot_module_t *boot_modules[] =
-{
-#ifdef EFI_ZFS_BOOT
- &zfs_module,
-#endif
-#ifdef EFI_UFS_BOOT
- &ufs_module
-#endif
-};
-
-#define NUM_BOOT_MODULES nitems(boot_modules)
-/* The initial number of handles used to query EFI for partitions. */
-#define NUM_HANDLES_INIT 24
-
-static EFI_GUID BlockIoProtocolGUID = BLOCK_IO_PROTOCOL;
-static EFI_GUID DevicePathGUID = DEVICE_PATH_PROTOCOL;
-static EFI_GUID LoadedImageGUID = LOADED_IMAGE_PROTOCOL;
-static EFI_GUID ConsoleControlGUID = EFI_CONSOLE_CONTROL_PROTOCOL_GUID;
-static EFI_GUID FreeBSDBootVarGUID = FREEBSD_BOOT_VAR_GUID;
-
-/*
- * Provide Malloc / Free backed by EFIs AllocatePool / FreePool which ensures
- * memory is correctly aligned avoiding EFI_INVALID_PARAMETER returns from
- * EFI methods.
- */
-void *
-Malloc(size_t len, const char *file __unused, int line __unused)
-{
- void *out;
-
- if (BS->AllocatePool(EfiLoaderData, len, &out) == EFI_SUCCESS)
- return (out);
-
- return (NULL);
-}
-
-void
-Free(void *buf, const char *file __unused, int line __unused)
-{
- if (buf != NULL)
- (void)BS->FreePool(buf);
-}
-
-static EFI_STATUS
-efi_setenv_freebsd_wcs(const char *varname, CHAR16 *valstr)
-{
- CHAR16 *var = NULL;
- size_t len;
- EFI_STATUS rv;
-
- utf8_to_ucs2(varname, &var, &len);
- if (var == NULL)
- return (EFI_OUT_OF_RESOURCES);
- rv = RS->SetVariable(var, &FreeBSDBootVarGUID,
- EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
- (ucs2len(valstr) + 1) * sizeof(efi_char), valstr);
- free(var);
- return (rv);
-}
-
-/*
- * nodes_match returns TRUE if the imgpath isn't NULL and the nodes match,
- * FALSE otherwise.
- */
-static BOOLEAN
-nodes_match(EFI_DEVICE_PATH *imgpath, EFI_DEVICE_PATH *devpath)
-{
- size_t len;
-
- if (imgpath == NULL || imgpath->Type != devpath->Type ||
- imgpath->SubType != devpath->SubType)
- return (FALSE);
-
- len = DevicePathNodeLength(imgpath);
- if (len != DevicePathNodeLength(devpath))
- return (FALSE);
-
- return (memcmp(imgpath, devpath, (size_t)len) == 0);
-}
-
-/*
- * device_paths_match returns TRUE if the imgpath isn't NULL and all nodes
- * in imgpath and devpath match up to their respective occurrences of a
- * media node, FALSE otherwise.
- */
-static BOOLEAN
-device_paths_match(EFI_DEVICE_PATH *imgpath, EFI_DEVICE_PATH *devpath)
-{
-
- if (imgpath == NULL)
- return (FALSE);
-
- while (!IsDevicePathEnd(imgpath) && !IsDevicePathEnd(devpath)) {
- if (IsDevicePathType(imgpath, MEDIA_DEVICE_PATH) &&
- IsDevicePathType(devpath, MEDIA_DEVICE_PATH))
- return (TRUE);
-
- if (!nodes_match(imgpath, devpath))
- return (FALSE);
-
- imgpath = NextDevicePathNode(imgpath);
- devpath = NextDevicePathNode(devpath);
- }
-
- return (FALSE);
-}
-
-/*
- * devpath_last returns the last non-path end node in devpath.
- */
-static EFI_DEVICE_PATH *
-devpath_last(EFI_DEVICE_PATH *devpath)
-{
-
- while (!IsDevicePathEnd(NextDevicePathNode(devpath)))
- devpath = NextDevicePathNode(devpath);
-
- return (devpath);
-}
-
-/*
- * load_loader attempts to load the loader image data.
- *
- * It tries each module and its respective devices, identified by mod->probe,
- * in order until a successful load occurs at which point it returns EFI_SUCCESS
- * and EFI_NOT_FOUND otherwise.
- *
- * Only devices which have preferred matching the preferred parameter are tried.
- */
-static EFI_STATUS
-load_loader(const boot_module_t **modp, dev_info_t **devinfop, void **bufp,
- size_t *bufsize, BOOLEAN preferred)
-{
- UINTN i;
- dev_info_t *dev;
- const boot_module_t *mod;
-
- for (i = 0; i < NUM_BOOT_MODULES; i++) {
- mod = boot_modules[i];
- for (dev = mod->devices(); dev != NULL; dev = dev->next) {
- if (dev->preferred != preferred)
- continue;
-
- if (mod->load(PATH_LOADER_EFI, dev, bufp, bufsize) ==
- EFI_SUCCESS) {
- *devinfop = dev;
- *modp = mod;
- return (EFI_SUCCESS);
- }
- }
- }
-
- return (EFI_NOT_FOUND);
-}
-
-/*
- * try_boot only returns if it fails to load the loader. If it succeeds
- * it simply boots, otherwise it returns the status of last EFI call.
- */
-static EFI_STATUS
-try_boot(void)
-{
- size_t bufsize, loadersize, cmdsize;
- void *buf, *loaderbuf;
- char *cmd;
- dev_info_t *dev;
- const boot_module_t *mod;
- EFI_HANDLE loaderhandle;
- EFI_LOADED_IMAGE *loaded_image;
- EFI_STATUS status;
-
- status = load_loader(&mod, &dev, &loaderbuf, &loadersize, TRUE);
- if (status != EFI_SUCCESS) {
- status = load_loader(&mod, &dev, &loaderbuf, &loadersize,
- FALSE);
- if (status != EFI_SUCCESS) {
- printf("Failed to load '%s'\n", PATH_LOADER_EFI);
- return (status);
- }
- }
-
- /*
- * Read in and parse the command line from /boot.config or /boot/config,
- * if present. We'll pass it the next stage via a simple ASCII
- * string. loader.efi has a hack for ASCII strings, so we'll use that to
- * keep the size down here. We only try to read the alternate file if
- * we get EFI_NOT_FOUND because all other errors mean that the boot_module
- * had troubles with the filesystem. We could return early, but we'll let
- * loading the actual kernel sort all that out. Since these files are
- * optional, we don't report errors in trying to read them.
- */
- cmd = NULL;
- cmdsize = 0;
- status = mod->load(PATH_DOTCONFIG, dev, &buf, &bufsize);
- if (status == EFI_NOT_FOUND)
- status = mod->load(PATH_CONFIG, dev, &buf, &bufsize);
- if (status == EFI_SUCCESS) {
- cmdsize = bufsize + 1;
- cmd = malloc(cmdsize);
- if (cmd == NULL)
- goto errout;
- memcpy(cmd, buf, bufsize);
- cmd[bufsize] = '\0';
- free(buf);
- buf = NULL;
- }
-
- if ((status = BS->LoadImage(TRUE, IH, devpath_last(dev->devpath),
- loaderbuf, loadersize, &loaderhandle)) != EFI_SUCCESS) {
- printf("Failed to load image provided by %s, size: %zu, (%lu)\n",
- mod->name, loadersize, EFI_ERROR_CODE(status));
- goto errout;
- }
-
- if ((status = BS->HandleProtocol(loaderhandle, &LoadedImageGUID,
- (VOID**)&loaded_image)) != EFI_SUCCESS) {
- printf("Failed to query LoadedImage provided by %s (%lu)\n",
- mod->name, EFI_ERROR_CODE(status));
- goto errout;
- }
-
- if (cmd != NULL)
- printf(" command args: %s\n", cmd);
-
- loaded_image->DeviceHandle = dev->devhandle;
- loaded_image->LoadOptionsSize = cmdsize;
- loaded_image->LoadOptions = cmd;
-
- DPRINTF("Starting '%s' in 5 seconds...", PATH_LOADER_EFI);
- DSTALL(1000000);
- DPRINTF(".");
- DSTALL(1000000);
- DPRINTF(".");
- DSTALL(1000000);
- DPRINTF(".");
- DSTALL(1000000);
- DPRINTF(".");
- DSTALL(1000000);
- DPRINTF(".\n");
-
- if ((status = BS->StartImage(loaderhandle, NULL, NULL)) !=
- EFI_SUCCESS) {
- printf("Failed to start image provided by %s (%lu)\n",
- mod->name, EFI_ERROR_CODE(status));
- loaded_image->LoadOptionsSize = 0;
- loaded_image->LoadOptions = NULL;
- }
-
-errout:
- if (cmd != NULL)
- free(cmd);
- if (buf != NULL)
- free(buf);
- if (loaderbuf != NULL)
- free(loaderbuf);
-
- return (status);
-}
-
-/*
- * probe_handle determines if the passed handle represents a logical partition
- * if it does it uses each module in order to probe it and if successful it
- * returns EFI_SUCCESS.
- */
-static EFI_STATUS
-probe_handle(EFI_HANDLE h, EFI_DEVICE_PATH *imgpath, BOOLEAN *preferred)
-{
- dev_info_t *devinfo;
- EFI_BLOCK_IO *blkio;
- EFI_DEVICE_PATH *devpath;
- EFI_STATUS status;
- UINTN i;
-
- /* Figure out if we're dealing with an actual partition. */
- status = BS->HandleProtocol(h, &DevicePathGUID, (void **)&devpath);
- if (status == EFI_UNSUPPORTED)
- return (status);
-
- if (status != EFI_SUCCESS) {
- DPRINTF("\nFailed to query DevicePath (%lu)\n",
- EFI_ERROR_CODE(status));
- return (status);
- }
-#ifdef EFI_DEBUG
- {
- CHAR16 *text = efi_devpath_name(devpath);
- DPRINTF("probing: %S\n", text);
- efi_free_devpath_name(text);
- }
-#endif
- status = BS->HandleProtocol(h, &BlockIoProtocolGUID, (void **)&blkio);
- if (status == EFI_UNSUPPORTED)
- return (status);
-
- if (status != EFI_SUCCESS) {
- DPRINTF("\nFailed to query BlockIoProtocol (%lu)\n",
- EFI_ERROR_CODE(status));
- return (status);
- }
-
- if (!blkio->Media->LogicalPartition)
- return (EFI_UNSUPPORTED);
-
- *preferred = device_paths_match(imgpath, devpath);
-
- /* Run through each module, see if it can load this partition */
- for (i = 0; i < NUM_BOOT_MODULES; i++) {
- devinfo = malloc(sizeof(*devinfo));
- if (devinfo == NULL) {
- DPRINTF("\nFailed to allocate devinfo\n");
- continue;
- }
- devinfo->dev = blkio;
- devinfo->devpath = devpath;
- devinfo->devhandle = h;
- devinfo->devdata = NULL;
- devinfo->preferred = *preferred;
- devinfo->next = NULL;
-
- status = boot_modules[i]->probe(devinfo);
- if (status == EFI_SUCCESS)
- return (EFI_SUCCESS);
- free(devinfo);
- }
-
- return (EFI_UNSUPPORTED);
-}
-
-/*
- * probe_handle_status calls probe_handle and outputs the returned status
- * of the call.
- */
-static void
-probe_handle_status(EFI_HANDLE h, EFI_DEVICE_PATH *imgpath)
-{
- EFI_STATUS status;
- BOOLEAN preferred;
-
- preferred = FALSE;
- status = probe_handle(h, imgpath, &preferred);
-
- DPRINTF("probe: ");
- switch (status) {
- case EFI_UNSUPPORTED:
- printf(".");
- DPRINTF(" not supported\n");
- break;
- case EFI_SUCCESS:
- if (preferred) {
- printf("%c", '*');
- DPRINTF(" supported (preferred)\n");
- } else {
- printf("%c", '+');
- DPRINTF(" supported\n");
- }
- break;
- default:
- printf("x");
- DPRINTF(" error (%lu)\n", EFI_ERROR_CODE(status));
- break;
- }
- DSTALL(500000);
-}
-
-EFI_STATUS
-efi_main(EFI_HANDLE Ximage, EFI_SYSTEM_TABLE *Xsystab)
-{
- EFI_HANDLE *handles;
- EFI_LOADED_IMAGE *img;
- EFI_DEVICE_PATH *imgpath;
- EFI_STATUS status;
- EFI_CONSOLE_CONTROL_PROTOCOL *ConsoleControl = NULL;
- SIMPLE_TEXT_OUTPUT_INTERFACE *conout = NULL;
- UINTN i, max_dim, best_mode, cols, rows, hsize, nhandles;
- CHAR16 *text;
-
- /* Basic initialization*/
- ST = Xsystab;
- IH = Ximage;
- BS = ST->BootServices;
- RS = ST->RuntimeServices;
-
- /* Set up the console, so printf works. */
- status = BS->LocateProtocol(&ConsoleControlGUID, NULL,
- (VOID **)&ConsoleControl);
- if (status == EFI_SUCCESS)
- (void)ConsoleControl->SetMode(ConsoleControl,
- EfiConsoleControlScreenText);
- /*
- * Reset the console and find the best text mode.
- */
- conout = ST->ConOut;
- conout->Reset(conout, TRUE);
- max_dim = best_mode = 0;
- for (i = 0; ; i++) {
- status = conout->QueryMode(conout, i, &cols, &rows);
- if (EFI_ERROR(status))
- break;
- if (cols * rows > max_dim) {
- max_dim = cols * rows;
- best_mode = i;
- }
- }
- if (max_dim > 0)
- conout->SetMode(conout, best_mode);
- conout->EnableCursor(conout, TRUE);
- conout->ClearScreen(conout);
-
- printf("\n>> FreeBSD EFI boot block\n");
- printf(" Loader path: %s\n\n", PATH_LOADER_EFI);
- printf(" Initializing modules:");
- for (i = 0; i < NUM_BOOT_MODULES; i++) {
- printf(" %s", boot_modules[i]->name);
- if (boot_modules[i]->init != NULL)
- boot_modules[i]->init();
- }
- putchar('\n');
-
- /* Determine the devpath of our image so we can prefer it. */
- status = BS->HandleProtocol(IH, &LoadedImageGUID, (VOID**)&img);
- imgpath = NULL;
- if (status == EFI_SUCCESS) {
- text = efi_devpath_name(img->FilePath);
- if (text != NULL) {
- printf(" Load Path: %S\n", text);
- efi_setenv_freebsd_wcs("Boot1Path", text);
- efi_free_devpath_name(text);
- }
-
- status = BS->HandleProtocol(img->DeviceHandle, &DevicePathGUID,
- (void **)&imgpath);
- if (status != EFI_SUCCESS) {
- DPRINTF("Failed to get image DevicePath (%lu)\n",
- EFI_ERROR_CODE(status));
- } else {
- text = efi_devpath_name(imgpath);
- if (text != NULL) {
- printf(" Load Device: %S\n", text);
- efi_setenv_freebsd_wcs("Boot1Dev", text);
- efi_free_devpath_name(text);
- }
- }
- }
-
- /* Get all the device handles */
- hsize = (UINTN)NUM_HANDLES_INIT * sizeof(EFI_HANDLE);
- handles = malloc(hsize);
- if (handles == NULL) {
- printf("Failed to allocate %d handles\n", NUM_HANDLES_INIT);
- }
-
- status = BS->LocateHandle(ByProtocol, &BlockIoProtocolGUID, NULL,
- &hsize, handles);
- switch (status) {
- case EFI_SUCCESS:
- break;
- case EFI_BUFFER_TOO_SMALL:
- free(handles);
- handles = malloc(hsize);
- if (handles == NULL)
- efi_panic(EFI_OUT_OF_RESOURCES, "Failed to allocate %d handles\n",
- NUM_HANDLES_INIT);
- status = BS->LocateHandle(ByProtocol, &BlockIoProtocolGUID,
- NULL, &hsize, handles);
- if (status != EFI_SUCCESS)
- efi_panic(status, "Failed to get device handles\n");
- break;
- default:
- efi_panic(status, "Failed to get device handles\n");
- break;
- }
-
- /* Scan all partitions, probing with all modules. */
- nhandles = hsize / sizeof(*handles);
- printf(" Probing %zu block devices...", nhandles);
- DPRINTF("\n");
-
- for (i = 0; i < nhandles; i++)
- probe_handle_status(handles[i], imgpath);
- printf(" done\n");
-
- /* Status summary. */
- for (i = 0; i < NUM_BOOT_MODULES; i++) {
- printf(" ");
- boot_modules[i]->status();
- }
-
- try_boot();
-
- /* If we get here, we're out of luck... */
- efi_panic(EFI_LOAD_ERROR, "No bootable partitions found!");
-}
-
-/*
- * add_device adds a device to the passed devinfo list.
- */
-void
-add_device(dev_info_t **devinfop, dev_info_t *devinfo)
-{
- dev_info_t *dev;
-
- if (*devinfop == NULL) {
- *devinfop = devinfo;
- return;
- }
-
- for (dev = *devinfop; dev->next != NULL; dev = dev->next)
- ;
-
- dev->next = devinfo;
-}
-
-/*
- * OK. We totally give up. Exit back to EFI with a sensible status so
- * it can try the next option on the list.
- */
-static void
-efi_panic(EFI_STATUS s, const char *fmt, ...)
-{
- va_list ap;
-
- printf("panic: ");
- va_start(ap, fmt);
- vprintf(fmt, ap);
- va_end(ap);
- printf("\n");
-
- BS->Exit(IH, s, 0, NULL);
-}
-
-void
-putchar(int c)
-{
- CHAR16 buf[2];
-
- if (c == '\n') {
- buf[0] = '\r';
- buf[1] = 0;
- ST->ConOut->OutputString(ST->ConOut, buf);
- }
- buf[0] = c;
- buf[1] = 0;
- ST->ConOut->OutputString(ST->ConOut, buf);
-}
diff --git a/sys/boot/efi/boot1/boot_module.h b/sys/boot/efi/boot1/boot_module.h
deleted file mode 100644
index bfade34fe9cb..000000000000
--- a/sys/boot/efi/boot1/boot_module.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/*-
- * Copyright (c) 2015 Eric McCorkle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef _BOOT_MODULE_H_
-#define _BOOT_MODULE_H_
-
-#include <stdbool.h>
-
-#include <efi.h>
-#include <efilib.h>
-#include <eficonsctl.h>
-
-#ifdef EFI_DEBUG
-#define DPRINTF(fmt, args...) printf(fmt, ##args)
-#define DSTALL(d) BS->Stall(d)
-#else
-#define DPRINTF(fmt, ...) {}
-#define DSTALL(d) {}
-#endif
-
-/* EFI device info */
-typedef struct dev_info
-{
- EFI_BLOCK_IO *dev;
- EFI_DEVICE_PATH *devpath;
- EFI_HANDLE *devhandle;
- void *devdata;
- BOOLEAN preferred;
- struct dev_info *next;
-} dev_info_t;
-
-/*
- * A boot loader module.
- *
- * This is a standard interface for filesystem modules in the EFI system.
- */
-typedef struct boot_module_t
-{
- const char *name;
-
- /* init is the optional initialiser for the module. */
- void (*init)(void);
-
- /*
- * probe checks to see if the module can handle dev.
- *
- * Return codes:
- * EFI_SUCCESS = The module can handle the device.
- * EFI_NOT_FOUND = The module can not handle the device.
- * Other = The module encountered an error.
- */
- EFI_STATUS (*probe)(dev_info_t* dev);
-
- /*
- * load should select the best out of a set of devices that probe
- * indicated were loadable and load the specified file.
- *
- * Return codes:
- * EFI_SUCCESS = The module can handle the device.
- * EFI_NOT_FOUND = The module can not handle the device.
- * Other = The module encountered an error.
- */
- EFI_STATUS (*load)(const char *filepath, dev_info_t *devinfo,
- void **buf, size_t *bufsize);
-
- /* status outputs information about the probed devices. */
- void (*status)(void);
-
- /* valid devices as found by probe. */
- dev_info_t *(*devices)(void);
-} boot_module_t;
-
-/* Standard boot modules. */
-#ifdef EFI_UFS_BOOT
-extern const boot_module_t ufs_module;
-#endif
-#ifdef EFI_ZFS_BOOT
-extern const boot_module_t zfs_module;
-#endif
-
-/* Functions available to modules. */
-extern void add_device(dev_info_t **devinfop, dev_info_t *devinfo);
-extern int vsnprintf(char *str, size_t sz, const char *fmt, va_list ap);
-#endif
diff --git a/sys/boot/efi/boot1/fat-amd64.tmpl.xz b/sys/boot/efi/boot1/fat-amd64.tmpl.xz
deleted file mode 100644
index fb5f94e0e9b6..000000000000
--- a/sys/boot/efi/boot1/fat-amd64.tmpl.xz
+++ /dev/null
Binary files differ
diff --git a/sys/boot/efi/boot1/fat-arm.tmpl.xz b/sys/boot/efi/boot1/fat-arm.tmpl.xz
deleted file mode 100644
index bb253fcfaf27..000000000000
--- a/sys/boot/efi/boot1/fat-arm.tmpl.xz
+++ /dev/null
Binary files differ
diff --git a/sys/boot/efi/boot1/fat-arm64.tmpl.xz b/sys/boot/efi/boot1/fat-arm64.tmpl.xz
deleted file mode 100644
index 15df643393fc..000000000000
--- a/sys/boot/efi/boot1/fat-arm64.tmpl.xz
+++ /dev/null
Binary files differ
diff --git a/sys/boot/efi/boot1/fat-i386.tmpl.xz b/sys/boot/efi/boot1/fat-i386.tmpl.xz
deleted file mode 100644
index 2cde337b62f0..000000000000
--- a/sys/boot/efi/boot1/fat-i386.tmpl.xz
+++ /dev/null
Binary files differ
diff --git a/sys/boot/efi/boot1/generate-fat.sh b/sys/boot/efi/boot1/generate-fat.sh
deleted file mode 100755
index f6bda6f5f11f..000000000000
--- a/sys/boot/efi/boot1/generate-fat.sh
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/sh
-
-# This script generates the dummy FAT filesystem used for the EFI boot
-# blocks. It uses newfs_msdos to generate a template filesystem with the
-# relevant interesting files. These are then found by grep, and the offsets
-# written to a Makefile snippet.
-#
-# Because it requires root, and because it is overkill, we do not
-# do this as part of the normal build. If makefs(8) grows workable FAT
-# support, this should be revisited.
-
-# $FreeBSD$
-
-FAT_SIZE=1600 #Size in 512-byte blocks of the produced image
-
-BOOT1_OFFSET=2d
-BOOT1_SIZE=384k
-
-if [ $(id -u) != 0 ]; then
- echo "${0##*/}: must run as root" >&2
- exit 1
-fi
-
-# Record maximum boot1 size in bytes
-case $BOOT1_SIZE in
-*k)
- BOOT1_MAXSIZE=$(expr ${BOOT1_SIZE%k} '*' 1024)
- ;;
-*)
- BOOT1_MAXSIZE=$BOOT1_SIZE
- ;;
-esac
-
-echo '# This file autogenerated by generate-fat.sh - DO NOT EDIT' > Makefile.fat
-echo "# \$FreeBSD\$" >> Makefile.fat
-echo "BOOT1_OFFSET=0x$BOOT1_OFFSET" >> Makefile.fat
-echo "BOOT1_MAXSIZE=$BOOT1_MAXSIZE" >> Makefile.fat
-
-while read ARCH FILENAME; do
- # Generate 800K FAT image
- OUTPUT_FILE=fat-${ARCH}.tmpl
-
- dd if=/dev/zero of=$OUTPUT_FILE bs=512 count=$FAT_SIZE
- DEVICE=`mdconfig -a -f $OUTPUT_FILE`
- newfs_msdos -F 12 -L EFI $DEVICE
- mkdir stub
- mount -t msdosfs /dev/$DEVICE stub
-
- # Create and bless a directory for the boot loader
- mkdir -p stub/efi/boot
-
- # Make a dummy file for boot1
- echo 'Boot1 START' | dd of=stub/efi/boot/$FILENAME cbs=$BOOT1_SIZE count=1 conv=block
- # Provide a fallback startup.nsh
- echo $FILENAME > stub/efi/boot/startup.nsh
-
- umount stub
- mdconfig -d -u $DEVICE
- rmdir stub
-
- # Locate the offset of the fake file
- OFFSET=$(hd $OUTPUT_FILE | grep 'Boot1 START' | cut -f 1 -d ' ')
-
- # Convert to number of blocks
- OFFSET=$(echo 0x$OFFSET | awk '{printf("%x\n",$1/512);}')
-
- # Validate the offset
- if [ $OFFSET != $BOOT1_OFFSET ]; then
- echo "Incorrect offset $OFFSET != $BOOT1_OFFSET" >&2
- exit 1
- fi
-
- xz -f $OUTPUT_FILE
-done <<EOF
- amd64 BOOTx64.efi
- arm64 BOOTaa64.efi
- arm BOOTarm.efi
- i386 BOOTia32.efi
-EOF
diff --git a/sys/boot/efi/boot1/ufs_module.c b/sys/boot/efi/boot1/ufs_module.c
deleted file mode 100644
index 4a8016fad2ce..000000000000
--- a/sys/boot/efi/boot1/ufs_module.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/*-
- * Copyright (c) 1998 Robert Nordier
- * All rights reserved.
- * Copyright (c) 2001 Robert Drehmel
- * All rights reserved.
- * Copyright (c) 2014 Nathan Whitehorn
- * All rights reserved.
- * Copyright (c) 2015 Eric McCorkle
- * All rights reverved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#include <stdarg.h>
-#include <stdbool.h>
-#include <sys/cdefs.h>
-#include <sys/param.h>
-#include <efi.h>
-
-#include "boot_module.h"
-
-static dev_info_t *devinfo;
-static dev_info_t *devices;
-
-static int
-dskread(void *buf, u_int64_t lba, int nblk)
-{
- int size;
- EFI_STATUS status;
-
- lba = lba / (devinfo->dev->Media->BlockSize / DEV_BSIZE);
- size = nblk * DEV_BSIZE;
-
- status = devinfo->dev->ReadBlocks(devinfo->dev,
- devinfo->dev->Media->MediaId, lba, size, buf);
-
- if (status != EFI_SUCCESS) {
- DPRINTF("dskread: failed dev: %p, id: %u, lba: %ju, size: %d, "
- "status: %lu\n", devinfo->dev,
- devinfo->dev->Media->MediaId, (uintmax_t)lba, size,
- EFI_ERROR_CODE(status));
- return (-1);
- }
-
- return (0);
-}
-
-#include "ufsread.c"
-
-static struct dmadat __dmadat;
-
-static int
-init_dev(dev_info_t* dev)
-{
-
- devinfo = dev;
- dmadat = &__dmadat;
-
- return fsread(0, NULL, 0);
-}
-
-static EFI_STATUS
-probe(dev_info_t* dev)
-{
-
- if (init_dev(dev) < 0)
- return (EFI_UNSUPPORTED);
-
- add_device(&devices, dev);
-
- return (EFI_SUCCESS);
-}
-
-static EFI_STATUS
-load(const char *filepath, dev_info_t *dev, void **bufp, size_t *bufsize)
-{
- ufs_ino_t ino;
- EFI_STATUS status;
- size_t size;
- ssize_t read;
- void *buf;
-
-#ifdef EFI_DEBUG
- {
- CHAR16 *text = efi_devpath_name(dev->devpath);
- DPRINTF("Loading '%s' from %S\n", filepath, text);
- efi_free_devpath_name(text);
- }
-#endif
- if (init_dev(dev) < 0) {
- DPRINTF("Failed to init device\n");
- return (EFI_UNSUPPORTED);
- }
-
- if ((ino = lookup(filepath)) == 0) {
- DPRINTF("Failed to lookup '%s' (file not found?)\n", filepath);
- return (EFI_NOT_FOUND);
- }
-
- if (fsread_size(ino, NULL, 0, &size) < 0 || size <= 0) {
- printf("Failed to read size of '%s' ino: %d\n", filepath, ino);
- return (EFI_INVALID_PARAMETER);
- }
-
- if ((status = BS->AllocatePool(EfiLoaderData, size, &buf)) !=
- EFI_SUCCESS) {
- printf("Failed to allocate read buffer %zu for '%s' (%lu)\n",
- size, filepath, EFI_ERROR_CODE(status));
- return (status);
- }
-
- read = fsread(ino, buf, size);
- if ((size_t)read != size) {
- printf("Failed to read '%s' (%zd != %zu)\n", filepath, read,
- size);
- (void)BS->FreePool(buf);
- return (EFI_INVALID_PARAMETER);
- }
-
- DPRINTF("Load complete\n");
-
- *bufp = buf;
- *bufsize = size;
-
- return (EFI_SUCCESS);
-}
-
-static void
-status(void)
-{
- int i;
- dev_info_t *dev;
-
- for (dev = devices, i = 0; dev != NULL; dev = dev->next, i++)
- ;
-
- printf("%s found ", ufs_module.name);
- switch (i) {
- case 0:
- printf("no partitions\n");
- break;
- case 1:
- printf("%d partition\n", i);
- break;
- default:
- printf("%d partitions\n", i);
- }
-}
-
-static dev_info_t *
-_devices(void)
-{
-
- return (devices);
-}
-
-const boot_module_t ufs_module =
-{
- .name = "UFS",
- .probe = probe,
- .load = load,
- .status = status,
- .devices = _devices
-};
diff --git a/sys/boot/efi/boot1/zfs_module.c b/sys/boot/efi/boot1/zfs_module.c
deleted file mode 100644
index e1d1a5a35f17..000000000000
--- a/sys/boot/efi/boot1/zfs_module.c
+++ /dev/null
@@ -1,248 +0,0 @@
-/*-
- * Copyright (c) 2015 Eric McCorkle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-#include <stddef.h>
-#include <stdarg.h>
-#include <stdbool.h>
-#include <sys/cdefs.h>
-#include <sys/param.h>
-#include <sys/queue.h>
-#include <efi.h>
-
-#include "boot_module.h"
-
-#include "libzfs.h"
-#include "zfsimpl.c"
-
-static dev_info_t *devices;
-
-uint64_t
-ldi_get_size(void *priv)
-{
- dev_info_t *devinfo = priv;
-
- return (devinfo->dev->Media->BlockSize *
- (devinfo->dev->Media->LastBlock + 1));
-}
-
-static int
-vdev_read(vdev_t *vdev, void *priv, off_t off, void *buf, size_t bytes)
-{
- dev_info_t *devinfo;
- uint64_t lba;
- size_t size, remainder, rb_size, blksz;
- char *bouncebuf = NULL, *rb_buf;
- EFI_STATUS status;
-
- devinfo = (dev_info_t *)priv;
- lba = off / devinfo->dev->Media->BlockSize;
- remainder = off % devinfo->dev->Media->BlockSize;
-
- rb_buf = buf;
- rb_size = bytes;
-
- /*
- * If we have remainder from off, we need to add remainder part.
- * Since buffer must be multiple of the BlockSize, round it all up.
- */
- size = roundup2(bytes + remainder, devinfo->dev->Media->BlockSize);
- blksz = size;
- if (remainder != 0 || size != bytes) {
- rb_size = devinfo->dev->Media->BlockSize;
- bouncebuf = malloc(rb_size);
- if (bouncebuf == NULL) {
- printf("vdev_read: out of memory\n");
- return (-1);
- }
- rb_buf = bouncebuf;
- blksz = rb_size - remainder;
- }
-
- while (bytes > 0) {
- status = devinfo->dev->ReadBlocks(devinfo->dev,
- devinfo->dev->Media->MediaId, lba, rb_size, rb_buf);
- if (EFI_ERROR(status))
- goto error;
- if (bytes < blksz)
- blksz = bytes;
- if (bouncebuf != NULL)
- memcpy(buf, rb_buf + remainder, blksz);
- buf = (void *)((uintptr_t)buf + blksz);
- bytes -= blksz;
- lba++;
- remainder = 0;
- blksz = rb_size;
- }
-
- free(bouncebuf);
- return (0);
-
-error:
- free(bouncebuf);
- DPRINTF("vdev_read: failed dev: %p, id: %u, lba: %ju, size: %zu,"
- " rb_size: %zu, status: %lu\n", devinfo->dev,
- devinfo->dev->Media->MediaId, (uintmax_t)lba, bytes, rb_size,
- EFI_ERROR_CODE(status));
- return (-1);
-}
-
-static EFI_STATUS
-probe(dev_info_t *dev)
-{
- spa_t *spa;
- dev_info_t *tdev;
- EFI_STATUS status;
-
- /* ZFS consumes the dev on success so we need a copy. */
- if ((status = BS->AllocatePool(EfiLoaderData, sizeof(*dev),
- (void**)&tdev)) != EFI_SUCCESS) {
- DPRINTF("Failed to allocate tdev (%lu)\n",
- EFI_ERROR_CODE(status));
- return (status);
- }
- memcpy(tdev, dev, sizeof(*dev));
-
- if (vdev_probe(vdev_read, tdev, &spa) != 0) {
- (void)BS->FreePool(tdev);
- return (EFI_UNSUPPORTED);
- }
-
- dev->devdata = spa;
- add_device(&devices, dev);
-
- return (EFI_SUCCESS);
-}
-
-static EFI_STATUS
-load(const char *filepath, dev_info_t *devinfo, void **bufp, size_t *bufsize)
-{
- spa_t *spa;
- struct zfsmount zfsmount;
- dnode_phys_t dn;
- struct stat st;
- int err;
- void *buf;
- EFI_STATUS status;
-
- spa = devinfo->devdata;
-
-#ifdef EFI_DEBUG
- {
- CHAR16 *text = efi_devpath_name(devinfo->devpath);
- DPRINTF("load: '%s' spa: '%s', devpath: %S\n", filepath,
- spa->spa_name, text);
- efi_free_devpath_name(text);
- }
-#endif
- if ((err = zfs_spa_init(spa)) != 0) {
- DPRINTF("Failed to load pool '%s' (%d)\n", spa->spa_name, err);
- return (EFI_NOT_FOUND);
- }
-
- if ((err = zfs_mount(spa, 0, &zfsmount)) != 0) {
- DPRINTF("Failed to mount pool '%s' (%d)\n", spa->spa_name, err);
- return (EFI_NOT_FOUND);
- }
-
- if ((err = zfs_lookup(&zfsmount, filepath, &dn)) != 0) {
- if (err == ENOENT) {
- DPRINTF("Failed to find '%s' on pool '%s' (%d)\n",
- filepath, spa->spa_name, err);
- return (EFI_NOT_FOUND);
- }
- printf("Failed to lookup '%s' on pool '%s' (%d)\n", filepath,
- spa->spa_name, err);
- return (EFI_INVALID_PARAMETER);
- }
-
- if ((err = zfs_dnode_stat(spa, &dn, &st)) != 0) {
- printf("Failed to stat '%s' on pool '%s' (%d)\n", filepath,
- spa->spa_name, err);
- return (EFI_INVALID_PARAMETER);
- }
-
- if ((status = BS->AllocatePool(EfiLoaderData, (UINTN)st.st_size, &buf))
- != EFI_SUCCESS) {
- printf("Failed to allocate load buffer %jd for pool '%s' for '%s' "
- "(%lu)\n", (intmax_t)st.st_size, spa->spa_name, filepath, EFI_ERROR_CODE(status));
- return (EFI_INVALID_PARAMETER);
- }
-
- if ((err = dnode_read(spa, &dn, 0, buf, st.st_size)) != 0) {
- printf("Failed to read node from %s (%d)\n", spa->spa_name,
- err);
- (void)BS->FreePool(buf);
- return (EFI_INVALID_PARAMETER);
- }
-
- *bufsize = st.st_size;
- *bufp = buf;
-
- return (EFI_SUCCESS);
-}
-
-static void
-status(void)
-{
- spa_t *spa;
-
- spa = STAILQ_FIRST(&zfs_pools);
- if (spa == NULL) {
- printf("%s found no pools\n", zfs_module.name);
- return;
- }
-
- printf("%s found the following pools:", zfs_module.name);
- STAILQ_FOREACH(spa, &zfs_pools, spa_link)
- printf(" %s", spa->spa_name);
-
- printf("\n");
-}
-
-static void
-init(void)
-{
-
- zfs_init();
-}
-
-static dev_info_t *
-_devices(void)
-{
-
- return (devices);
-}
-
-const boot_module_t zfs_module =
-{
- .name = "ZFS",
- .init = init,
- .probe = probe,
- .load = load,
- .status = status,
- .devices = _devices
-};
diff --git a/sys/boot/efi/fdt/Makefile b/sys/boot/efi/fdt/Makefile
deleted file mode 100644
index 7308ce94e45e..000000000000
--- a/sys/boot/efi/fdt/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-# $FreeBSD$
-
-.include <bsd.init.mk>
-
-.PATH: ${LDRSRC}
-
-LIB= efi_fdt
-INTERNALLIB=
-WARNS?= 6
-
-SRCS= efi_fdt.c
-
-CFLAGS+= -ffreestanding
-.if ${MACHINE_CPUARCH} == "aarch64"
-CFLAGS+= -mgeneral-regs-only
-.else
-CFLAGS+= -msoft-float
-.endif
-
-# EFI library headers
-CFLAGS+= -I${EFISRC}/include
-CFLAGS+= -I${EFISRC}/include/${MACHINE}
-
-# libfdt headers
-CFLAGS+= -I${FDTSRC}
-
-# Pick up the bootstrap header for some interface items
-CFLAGS+= -I${LDRSRC}
-
-.include <bsd.lib.mk>
diff --git a/sys/boot/efi/fdt/Makefile.depend b/sys/boot/efi/fdt/Makefile.depend
deleted file mode 100644
index 18be76b0cb6f..000000000000
--- a/sys/boot/efi/fdt/Makefile.depend
+++ /dev/null
@@ -1,13 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- include \
- include/xlocale \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/sys/boot/efi/fdt/efi_fdt.c b/sys/boot/efi/fdt/efi_fdt.c
deleted file mode 100644
index d6757689c896..000000000000
--- a/sys/boot/efi/fdt/efi_fdt.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*-
- * Copyright (c) 2014 The FreeBSD Foundation
- * All rights reserved.
- *
- * This software was developed by Andrew Turner under
- * sponsorship from the FreeBSD Foundation.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <stand.h>
-#include <efi.h>
-#include <efilib.h>
-#include <fdt_platform.h>
-
-#include "bootstrap.h"
-
-static EFI_GUID fdtdtb = FDT_TABLE_GUID;
-
-int
-fdt_platform_load_dtb(void)
-{
- struct fdt_header *hdr;
-
- hdr = efi_get_table(&fdtdtb);
- if (hdr != NULL) {
- if (fdt_load_dtb_addr(hdr) == 0) {
- printf("Using DTB provided by EFI at %p.\n", hdr);
- return (0);
- }
- }
-
- return (1);
-}
-
-void
-fdt_platform_fixups(void)
-{
-}
diff --git a/sys/boot/efi/include/README b/sys/boot/efi/include/README
deleted file mode 100644
index bf821fae7e60..000000000000
--- a/sys/boot/efi/include/README
+++ /dev/null
@@ -1,36 +0,0 @@
-/* $FreeBSD$ */
-/*-
-
-Files in this directory and subdirectories are subject to the following
-copyright unless superceded or supplemented by additional specific license
-terms found in the file headers of individual files.
-
-Copyright (c) 1998-2000 Intel Corporation
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-
-Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in
-the documentation and/or other materials provided with the
-distribution.
-
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL INTEL BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-OF THE POSSIBILITY OF SUCH DAMAGE. THE EFI SPECIFICATION AND ALL
-OTHER INFORMATION ON THIS WEB SITE ARE PROVIDED "AS IS" WITH NO
-WARRANTIES, AND ARE SUBJECT TO CHANGE WITHOUT NOTICE.
-
-*/
diff --git a/sys/boot/efi/include/amd64/efibind.h b/sys/boot/efi/include/amd64/efibind.h
deleted file mode 100644
index 8cfce5bbc5f1..000000000000
--- a/sys/boot/efi/include/amd64/efibind.h
+++ /dev/null
@@ -1,271 +0,0 @@
-/* $FreeBSD$ */
-/*++
-
-Copyright (c) 1999 - 2003 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- efefind.h
-
-Abstract:
-
- EFI to compile bindings
-
-
-
-
-Revision History
-
---*/
-
-#pragma pack()
-
-
-#ifdef __FreeBSD__
-#include <sys/stdint.h>
-#else
-//
-// Basic int types of various widths
-//
-
-#if (__STDC_VERSION__ < 199901L )
-
- // No ANSI C 1999/2000 stdint.h integer width declarations
-
- #ifdef _MSC_EXTENSIONS
-
- // Use Microsoft C compiler integer width declarations
-
- typedef unsigned __int64 uint64_t;
- typedef __int64 int64_t;
- typedef unsigned __int32 uint32_t;
- typedef __int32 int32_t;
- typedef unsigned short uint16_t;
- typedef short int16_t;
- typedef unsigned char uint8_t;
- typedef char int8_t;
- #else
- #ifdef UNIX_LP64
-
- // Use LP64 programming model from C_FLAGS for integer width declarations
-
- typedef unsigned long uint64_t;
- typedef long int64_t;
- typedef unsigned int uint32_t;
- typedef int int32_t;
- typedef unsigned short uint16_t;
- typedef short int16_t;
- typedef unsigned char uint8_t;
- typedef char int8_t;
- #else
-
- // Assume P64 programming model from C_FLAGS for integer width declarations
-
- typedef unsigned long long uint64_t;
- typedef long long int64_t;
- typedef unsigned int uint32_t;
- typedef int int32_t;
- typedef unsigned short uint16_t;
- typedef short int16_t;
- typedef unsigned char uint8_t;
- typedef char int8_t;
- #endif
- #endif
-#endif
-#endif /* __FreeBSD__ */
-
-//
-// Basic EFI types of various widths
-//
-
-#ifndef ACPI_THREAD_ID /* ACPI's definitions are fine */
-#define ACPI_USE_SYSTEM_INTTYPES 1 /* Tell ACPI we've defined types */
-
-typedef uint64_t UINT64;
-typedef int64_t INT64;
-
-#ifndef _BASETSD_H_
- typedef uint32_t UINT32;
- typedef int32_t INT32;
-#endif
-
-typedef uint16_t UINT16;
-typedef int16_t INT16;
-typedef uint8_t UINT8;
-typedef int8_t INT8;
-
-#endif
-
-#undef VOID
-#define VOID void
-
-
-typedef int64_t INTN;
-typedef uint64_t UINTN;
-
-#ifdef EFI_NT_EMULATOR
- #define POST_CODE(_Data)
-#else
- #ifdef EFI_DEBUG
-#define POST_CODE(_Data) __asm mov eax,(_Data) __asm out 0x80,al
- #else
- #define POST_CODE(_Data)
- #endif
-#endif
-
-#define EFIERR(a) (0x8000000000000000 | a)
-#define EFI_ERROR_MASK 0x8000000000000000
-#define EFIERR_OEM(a) (0xc000000000000000 | a)
-
-
-#define BAD_POINTER 0xFBFBFBFBFBFBFBFB
-#define MAX_ADDRESS 0xFFFFFFFFFFFFFFFF
-
-#define BREAKPOINT() __asm { int 3 }
-
-//
-// Pointers must be aligned to these address to function
-//
-
-#define MIN_ALIGNMENT_SIZE 4
-
-#define ALIGN_VARIABLE(Value ,Adjustment) \
- (UINTN)Adjustment = 0; \
- if((UINTN)Value % MIN_ALIGNMENT_SIZE) \
- (UINTN)Adjustment = MIN_ALIGNMENT_SIZE - ((UINTN)Value % MIN_ALIGNMENT_SIZE); \
- Value = (UINTN)Value + (UINTN)Adjustment
-
-
-//
-// Define macros to build data structure signatures from characters.
-//
-
-#define EFI_SIGNATURE_16(A,B) ((A) | (B<<8))
-#define EFI_SIGNATURE_32(A,B,C,D) (EFI_SIGNATURE_16(A,B) | (EFI_SIGNATURE_16(C,D) << 16))
-#define EFI_SIGNATURE_64(A,B,C,D,E,F,G,H) (EFI_SIGNATURE_32(A,B,C,D) | ((UINT64)(EFI_SIGNATURE_32(E,F,G,H)) << 32))
-
-//
-// EFIAPI - prototype calling convention for EFI function pointers
-// BOOTSERVICE - prototype for implementation of a boot service interface
-// RUNTIMESERVICE - prototype for implementation of a runtime service interface
-// RUNTIMEFUNCTION - prototype for implementation of a runtime function that is not a service
-// RUNTIME_CODE - pragma macro for declaring runtime code
-//
-
-#ifdef __amd64__
-#define EFIAPI __attribute__((ms_abi))
-#endif
-
-#ifndef EFIAPI // Forces EFI calling conventions reguardless of compiler options
- #ifdef _MSC_EXTENSIONS
- #define EFIAPI __cdecl // Force C calling convention for Microsoft C compiler
- #else
- #define EFIAPI // Substitute expresion to force C calling convention
- #endif
-#endif
-
-#define BOOTSERVICE
-//#define RUNTIMESERVICE(proto,a) alloc_text("rtcode",a); proto a
-//#define RUNTIMEFUNCTION(proto,a) alloc_text("rtcode",a); proto a
-#define RUNTIMESERVICE
-#define RUNTIMEFUNCTION
-
-
-#define RUNTIME_CODE(a) alloc_text("rtcode", a)
-#define BEGIN_RUNTIME_DATA() data_seg("rtdata")
-#define END_RUNTIME_DATA() data_seg("")
-
-#define VOLATILE volatile
-
-#define MEMORY_FENCE()
-
-#ifdef EFI_NO_INTERFACE_DECL
- #define EFI_FORWARD_DECLARATION(x)
- #define EFI_INTERFACE_DECL(x)
-#else
- #define EFI_FORWARD_DECLARATION(x) typedef struct _##x x
- #define EFI_INTERFACE_DECL(x) typedef struct x
-#endif
-
-#ifdef EFI_NT_EMULATOR
-
-//
-// To help ensure proper coding of integrated drivers, they are
-// compiled as DLLs. In NT they require a dll init entry pointer.
-// The macro puts a stub entry point into the DLL so it will load.
-//
-
-#define EFI_DRIVER_ENTRY_POINT(InitFunction) \
- EFI_STATUS \
- InitFunction ( \
- EFI_HANDLE ImageHandle, \
- EFI_SYSTEM_TABLE *SystemTable \
- ); \
- \
- UINTN \
- __stdcall \
- _DllMainCRTStartup ( \
- UINTN Inst, \
- UINTN reason_for_call, \
- VOID *rserved \
- ) \
- { \
- return 1; \
- } \
- \
- int \
- __declspec( dllexport ) \
- __cdecl \
- InitializeDriver ( \
- void *ImageHandle, \
- void *SystemTable \
- ) \
- { \
- return InitFunction(ImageHandle, SystemTable); \
- }
-
-
- #define LOAD_INTERNAL_DRIVER(_if, type, name, entry) \
- (_if)->LoadInternal(type, name, NULL)
-
-#else // EFI_NT_EMULATOR
-
-//
-// When building similar to FW, link everything together as
-// one big module.
-//
-
- #define EFI_DRIVER_ENTRY_POINT(InitFunction)
-
- #define LOAD_INTERNAL_DRIVER(_if, type, name, entry) \
- (_if)->LoadInternal(type, name, entry)
-
-#endif // EFI_FW_NT
-
-#ifdef __FreeBSD__
-#define INTERFACE_DECL(x) struct x
-#else
-//
-// Some compilers don't support the forward reference construct:
-// typedef struct XXXXX
-//
-// The following macro provide a workaround for such cases.
-//
-#ifdef NO_INTERFACE_DECL
-#define INTERFACE_DECL(x)
-#else
-#define INTERFACE_DECL(x) typedef struct x
-#endif
-#endif /* __FreeBSD__ */
-
-#ifdef _MSC_EXTENSIONS
-#pragma warning ( disable : 4731 ) // Suppress warnings about modification of EBP
-#endif
-
diff --git a/sys/boot/efi/include/amd64/pe.h b/sys/boot/efi/include/amd64/pe.h
deleted file mode 100644
index f8033c55ac55..000000000000
--- a/sys/boot/efi/include/amd64/pe.h
+++ /dev/null
@@ -1,591 +0,0 @@
-/* $FreeBSD$ */
-/*
- PE32+ header file
- */
-#ifndef _PE_H
-#define _PE_H
-
-#define IMAGE_DOS_SIGNATURE 0x5A4D // MZ
-#define IMAGE_OS2_SIGNATURE 0x454E // NE
-#define IMAGE_OS2_SIGNATURE_LE 0x454C // LE
-#define IMAGE_NT_SIGNATURE 0x00004550 // PE00
-#define IMAGE_EDOS_SIGNATURE 0x44454550 // PEED
-
-
-typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header
- UINT16 e_magic; // Magic number
- UINT16 e_cblp; // Bytes on last page of file
- UINT16 e_cp; // Pages in file
- UINT16 e_crlc; // Relocations
- UINT16 e_cparhdr; // Size of header in paragraphs
- UINT16 e_minalloc; // Minimum extra paragraphs needed
- UINT16 e_maxalloc; // Maximum extra paragraphs needed
- UINT16 e_ss; // Initial (relative) SS value
- UINT16 e_sp; // Initial SP value
- UINT16 e_csum; // Checksum
- UINT16 e_ip; // Initial IP value
- UINT16 e_cs; // Initial (relative) CS value
- UINT16 e_lfarlc; // File address of relocation table
- UINT16 e_ovno; // Overlay number
- UINT16 e_res[4]; // Reserved words
- UINT16 e_oemid; // OEM identifier (for e_oeminfo)
- UINT16 e_oeminfo; // OEM information; e_oemid specific
- UINT16 e_res2[10]; // Reserved words
- UINT32 e_lfanew; // File address of new exe header
- } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
-
-typedef struct _IMAGE_OS2_HEADER { // OS/2 .EXE header
- UINT16 ne_magic; // Magic number
- UINT8 ne_ver; // Version number
- UINT8 ne_rev; // Revision number
- UINT16 ne_enttab; // Offset of Entry Table
- UINT16 ne_cbenttab; // Number of bytes in Entry Table
- UINT32 ne_crc; // Checksum of whole file
- UINT16 ne_flags; // Flag UINT16
- UINT16 ne_autodata; // Automatic data segment number
- UINT16 ne_heap; // Initial heap allocation
- UINT16 ne_stack; // Initial stack allocation
- UINT32 ne_csip; // Initial CS:IP setting
- UINT32 ne_sssp; // Initial SS:SP setting
- UINT16 ne_cseg; // Count of file segments
- UINT16 ne_cmod; // Entries in Module Reference Table
- UINT16 ne_cbnrestab; // Size of non-resident name table
- UINT16 ne_segtab; // Offset of Segment Table
- UINT16 ne_rsrctab; // Offset of Resource Table
- UINT16 ne_restab; // Offset of resident name table
- UINT16 ne_modtab; // Offset of Module Reference Table
- UINT16 ne_imptab; // Offset of Imported Names Table
- UINT32 ne_nrestab; // Offset of Non-resident Names Table
- UINT16 ne_cmovent; // Count of movable entries
- UINT16 ne_align; // Segment alignment shift count
- UINT16 ne_cres; // Count of resource segments
- UINT8 ne_exetyp; // Target Operating system
- UINT8 ne_flagsothers; // Other .EXE flags
- UINT16 ne_pretthunks; // offset to return thunks
- UINT16 ne_psegrefbytes; // offset to segment ref. bytes
- UINT16 ne_swaparea; // Minimum code swap area size
- UINT16 ne_expver; // Expected Windows version number
- } IMAGE_OS2_HEADER, *PIMAGE_OS2_HEADER;
-
-//
-// File header format.
-//
-
-typedef struct _IMAGE_FILE_HEADER {
- UINT16 Machine;
- UINT16 NumberOfSections;
- UINT32 TimeDateStamp;
- UINT32 PointerToSymbolTable;
- UINT32 NumberOfSymbols;
- UINT16 SizeOfOptionalHeader;
- UINT16 Characteristics;
-} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
-
-#define IMAGE_SIZEOF_FILE_HEADER 20
-
-#define IMAGE_FILE_RELOCS_STRIPPED 0x0001 // Relocation info stripped from file.
-#define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 // File is executable (i.e. no unresolved externel references).
-#define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 // Line nunbers stripped from file.
-#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 // Local symbols stripped from file.
-#define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 // Bytes of machine word are reversed.
-#define IMAGE_FILE_32BIT_MACHINE 0x0100 // 32 bit word machine.
-#define IMAGE_FILE_DEBUG_STRIPPED 0x0200 // Debugging info stripped from file in .DBG file
-#define IMAGE_FILE_SYSTEM 0x1000 // System File.
-#define IMAGE_FILE_DLL 0x2000 // File is a DLL.
-#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 // Bytes of machine word are reversed.
-
-#define IMAGE_FILE_MACHINE_UNKNOWN 0
-#define IMAGE_FILE_MACHINE_I386 0x14c // Intel 386.
-#define IMAGE_FILE_MACHINE_R3000 0x162 // MIPS little-endian, 0540 big-endian
-#define IMAGE_FILE_MACHINE_R4000 0x166 // MIPS little-endian
-#define IMAGE_FILE_MACHINE_ALPHA 0x184 // Alpha_AXP
-#define IMAGE_FILE_MACHINE_POWERPC 0x1F0 // IBM PowerPC Little-Endian
-#define IMAGE_FILE_MACHINE_TAHOE 0x7cc // Intel EM machine
-//
-// Directory format.
-//
-
-typedef struct _IMAGE_DATA_DIRECTORY {
- UINT32 VirtualAddress;
- UINT32 Size;
-} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
-
-#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
-
-//
-// Optional header format.
-//
-
-typedef struct _IMAGE_OPTIONAL_HEADER {
- //
- // Standard fields.
- //
-
- UINT16 Magic;
- UINT8 MajorLinkerVersion;
- UINT8 MinorLinkerVersion;
- UINT32 SizeOfCode;
- UINT32 SizeOfInitializedData;
- UINT32 SizeOfUninitializedData;
- UINT32 AddressOfEntryPoint;
- UINT32 BaseOfCode;
- UINT32 BaseOfData;
-
- //
- // NT additional fields.
- //
-
- UINT32 ImageBase;
- UINT32 SectionAlignment;
- UINT32 FileAlignment;
- UINT16 MajorOperatingSystemVersion;
- UINT16 MinorOperatingSystemVersion;
- UINT16 MajorImageVersion;
- UINT16 MinorImageVersion;
- UINT16 MajorSubsystemVersion;
- UINT16 MinorSubsystemVersion;
- UINT32 Reserved1;
- UINT32 SizeOfImage;
- UINT32 SizeOfHeaders;
- UINT32 CheckSum;
- UINT16 Subsystem;
- UINT16 DllCharacteristics;
- UINT32 SizeOfStackReserve;
- UINT32 SizeOfStackCommit;
- UINT32 SizeOfHeapReserve;
- UINT32 SizeOfHeapCommit;
- UINT32 LoaderFlags;
- UINT32 NumberOfRvaAndSizes;
- IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
-} IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER;
-
-typedef struct _IMAGE_ROM_OPTIONAL_HEADER {
- UINT16 Magic;
- UINT8 MajorLinkerVersion;
- UINT8 MinorLinkerVersion;
- UINT32 SizeOfCode;
- UINT32 SizeOfInitializedData;
- UINT32 SizeOfUninitializedData;
- UINT32 AddressOfEntryPoint;
- UINT32 BaseOfCode;
- UINT32 BaseOfData;
- UINT32 BaseOfBss;
- UINT32 GprMask;
- UINT32 CprMask[4];
- UINT32 GpValue;
-} IMAGE_ROM_OPTIONAL_HEADER, *PIMAGE_ROM_OPTIONAL_HEADER;
-
-#define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56
-#define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28
-#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER 224
-
-#define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b
-#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107
-
-typedef struct _IMAGE_NT_HEADERS {
- UINT32 Signature;
- IMAGE_FILE_HEADER FileHeader;
- IMAGE_OPTIONAL_HEADER OptionalHeader;
-} IMAGE_NT_HEADERS, *PIMAGE_NT_HEADERS;
-
-typedef struct _IMAGE_ROM_HEADERS {
- IMAGE_FILE_HEADER FileHeader;
- IMAGE_ROM_OPTIONAL_HEADER OptionalHeader;
-} IMAGE_ROM_HEADERS, *PIMAGE_ROM_HEADERS;
-
-#define IMAGE_FIRST_SECTION( ntheader ) ((PIMAGE_SECTION_HEADER) \
- ((UINT32)ntheader + \
- FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) + \
- ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader \
- ))
-
-
-// Subsystem Values
-
-#define IMAGE_SUBSYSTEM_UNKNOWN 0 // Unknown subsystem.
-#define IMAGE_SUBSYSTEM_NATIVE 1 // Image doesn't require a subsystem.
-#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 // Image runs in the Windows GUI subsystem.
-#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 // Image runs in the Windows character subsystem.
-#define IMAGE_SUBSYSTEM_OS2_CUI 5 // image runs in the OS/2 character subsystem.
-#define IMAGE_SUBSYSTEM_POSIX_CUI 7 // image run in the Posix character subsystem.
-
-
-// Directory Entries
-
-#define IMAGE_DIRECTORY_ENTRY_EXPORT 0 // Export Directory
-#define IMAGE_DIRECTORY_ENTRY_IMPORT 1 // Import Directory
-#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 // Resource Directory
-#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 // Exception Directory
-#define IMAGE_DIRECTORY_ENTRY_SECURITY 4 // Security Directory
-#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 // Base Relocation Table
-#define IMAGE_DIRECTORY_ENTRY_DEBUG 6 // Debug Directory
-#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 // Description String
-#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 // Machine Value (MIPS GP)
-#define IMAGE_DIRECTORY_ENTRY_TLS 9 // TLS Directory
-#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 // Load Configuration Directory
-
-//
-// Section header format.
-//
-
-#define IMAGE_SIZEOF_SHORT_NAME 8
-
-typedef struct _IMAGE_SECTION_HEADER {
- UINT8 Name[IMAGE_SIZEOF_SHORT_NAME];
- union {
- UINT32 PhysicalAddress;
- UINT32 VirtualSize;
- } Misc;
- UINT32 VirtualAddress;
- UINT32 SizeOfRawData;
- UINT32 PointerToRawData;
- UINT32 PointerToRelocations;
- UINT32 PointerToLinenumbers;
- UINT16 NumberOfRelocations;
- UINT16 NumberOfLinenumbers;
- UINT32 Characteristics;
-} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
-
-#define IMAGE_SIZEOF_SECTION_HEADER 40
-
-#define IMAGE_SCN_TYPE_NO_PAD 0x00000008 // Reserved.
-
-#define IMAGE_SCN_CNT_CODE 0x00000020 // Section contains code.
-#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 // Section contains initialized data.
-#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080 // Section contains uninitialized data.
-
-#define IMAGE_SCN_LNK_OTHER 0x00000100 // Reserved.
-#define IMAGE_SCN_LNK_INFO 0x00000200 // Section contains comments or some other type of information.
-#define IMAGE_SCN_LNK_REMOVE 0x00000800 // Section contents will not become part of image.
-#define IMAGE_SCN_LNK_COMDAT 0x00001000 // Section contents comdat.
-
-#define IMAGE_SCN_ALIGN_1BYTES 0x00100000 //
-#define IMAGE_SCN_ALIGN_2BYTES 0x00200000 //
-#define IMAGE_SCN_ALIGN_4BYTES 0x00300000 //
-#define IMAGE_SCN_ALIGN_8BYTES 0x00400000 //
-#define IMAGE_SCN_ALIGN_16BYTES 0x00500000 // Default alignment if no others are specified.
-#define IMAGE_SCN_ALIGN_32BYTES 0x00600000 //
-#define IMAGE_SCN_ALIGN_64BYTES 0x00700000 //
-
-#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 // Section can be discarded.
-#define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 // Section is not cachable.
-#define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 // Section is not pageable.
-#define IMAGE_SCN_MEM_SHARED 0x10000000 // Section is shareable.
-#define IMAGE_SCN_MEM_EXECUTE 0x20000000 // Section is executable.
-#define IMAGE_SCN_MEM_READ 0x40000000 // Section is readable.
-#define IMAGE_SCN_MEM_WRITE 0x80000000 // Section is writeable.
-
-//
-// Symbol format.
-//
-
-
-#define IMAGE_SIZEOF_SYMBOL 18
-
-//
-// Section values.
-//
-// Symbols have a section number of the section in which they are
-// defined. Otherwise, section numbers have the following meanings:
-//
-
-#define IMAGE_SYM_UNDEFINED (UINT16)0 // Symbol is undefined or is common.
-#define IMAGE_SYM_ABSOLUTE (UINT16)-1 // Symbol is an absolute value.
-#define IMAGE_SYM_DEBUG (UINT16)-2 // Symbol is a special debug item.
-
-//
-// Type (fundamental) values.
-//
-
-#define IMAGE_SYM_TYPE_NULL 0 // no type.
-#define IMAGE_SYM_TYPE_VOID 1 //
-#define IMAGE_SYM_TYPE_CHAR 2 // type character.
-#define IMAGE_SYM_TYPE_SHORT 3 // type short integer.
-#define IMAGE_SYM_TYPE_INT 4 //
-#define IMAGE_SYM_TYPE_LONG 5 //
-#define IMAGE_SYM_TYPE_FLOAT 6 //
-#define IMAGE_SYM_TYPE_DOUBLE 7 //
-#define IMAGE_SYM_TYPE_STRUCT 8 //
-#define IMAGE_SYM_TYPE_UNION 9 //
-#define IMAGE_SYM_TYPE_ENUM 10 // enumeration.
-#define IMAGE_SYM_TYPE_MOE 11 // member of enumeration.
-#define IMAGE_SYM_TYPE_BYTE 12 //
-#define IMAGE_SYM_TYPE_WORD 13 //
-#define IMAGE_SYM_TYPE_UINT 14 //
-#define IMAGE_SYM_TYPE_DWORD 15 //
-
-//
-// Type (derived) values.
-//
-
-#define IMAGE_SYM_DTYPE_NULL 0 // no derived type.
-#define IMAGE_SYM_DTYPE_POINTER 1 // pointer.
-#define IMAGE_SYM_DTYPE_FUNCTION 2 // function.
-#define IMAGE_SYM_DTYPE_ARRAY 3 // array.
-
-//
-// Storage classes.
-//
-
-#define IMAGE_SYM_CLASS_END_OF_FUNCTION (BYTE )-1
-#define IMAGE_SYM_CLASS_NULL 0
-#define IMAGE_SYM_CLASS_AUTOMATIC 1
-#define IMAGE_SYM_CLASS_EXTERNAL 2
-#define IMAGE_SYM_CLASS_STATIC 3
-#define IMAGE_SYM_CLASS_REGISTER 4
-#define IMAGE_SYM_CLASS_EXTERNAL_DEF 5
-#define IMAGE_SYM_CLASS_LABEL 6
-#define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7
-#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8
-#define IMAGE_SYM_CLASS_ARGUMENT 9
-#define IMAGE_SYM_CLASS_STRUCT_TAG 10
-#define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11
-#define IMAGE_SYM_CLASS_UNION_TAG 12
-#define IMAGE_SYM_CLASS_TYPE_DEFINITION 13
-#define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14
-#define IMAGE_SYM_CLASS_ENUM_TAG 15
-#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16
-#define IMAGE_SYM_CLASS_REGISTER_PARAM 17
-#define IMAGE_SYM_CLASS_BIT_FIELD 18
-#define IMAGE_SYM_CLASS_BLOCK 100
-#define IMAGE_SYM_CLASS_FUNCTION 101
-#define IMAGE_SYM_CLASS_END_OF_STRUCT 102
-#define IMAGE_SYM_CLASS_FILE 103
-// new
-#define IMAGE_SYM_CLASS_SECTION 104
-#define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105
-
-// type packing constants
-
-#define N_BTMASK 017
-#define N_TMASK 060
-#define N_TMASK1 0300
-#define N_TMASK2 0360
-#define N_BTSHFT 4
-#define N_TSHIFT 2
-
-// MACROS
-
-//
-// Communal selection types.
-//
-
-#define IMAGE_COMDAT_SELECT_NODUPLICATES 1
-#define IMAGE_COMDAT_SELECT_ANY 2
-#define IMAGE_COMDAT_SELECT_SAME_SIZE 3
-#define IMAGE_COMDAT_SELECT_EXACT_MATCH 4
-#define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5
-
-#define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1
-#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2
-#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3
-
-
-//
-// Relocation format.
-//
-
-typedef struct _IMAGE_RELOCATION {
- UINT32 VirtualAddress;
- UINT32 SymbolTableIndex;
- UINT16 Type;
-} IMAGE_RELOCATION;
-
-#define IMAGE_SIZEOF_RELOCATION 10
-
-//
-// I386 relocation types.
-//
-
-#define IMAGE_REL_I386_ABSOLUTE 0 // Reference is absolute, no relocation is necessary
-#define IMAGE_REL_I386_DIR16 01 // Direct 16-bit reference to the symbols virtual address
-#define IMAGE_REL_I386_REL16 02 // PC-relative 16-bit reference to the symbols virtual address
-#define IMAGE_REL_I386_DIR32 06 // Direct 32-bit reference to the symbols virtual address
-#define IMAGE_REL_I386_DIR32NB 07 // Direct 32-bit reference to the symbols virtual address, base not included
-#define IMAGE_REL_I386_SEG12 011 // Direct 16-bit reference to the segment-selector bits of a 32-bit virtual address
-#define IMAGE_REL_I386_SECTION 012
-#define IMAGE_REL_I386_SECREL 013
-#define IMAGE_REL_I386_REL32 024 // PC-relative 32-bit reference to the symbols virtual address
-
-//
-// MIPS relocation types.
-//
-
-#define IMAGE_REL_MIPS_ABSOLUTE 0 // Reference is absolute, no relocation is necessary
-#define IMAGE_REL_MIPS_REFHALF 01
-#define IMAGE_REL_MIPS_REFWORD 02
-#define IMAGE_REL_MIPS_JMPADDR 03
-#define IMAGE_REL_MIPS_REFHI 04
-#define IMAGE_REL_MIPS_REFLO 05
-#define IMAGE_REL_MIPS_GPREL 06
-#define IMAGE_REL_MIPS_LITERAL 07
-#define IMAGE_REL_MIPS_SECTION 012
-#define IMAGE_REL_MIPS_SECREL 013
-#define IMAGE_REL_MIPS_REFWORDNB 042
-#define IMAGE_REL_MIPS_PAIR 045
-
-//
-// Alpha Relocation types.
-//
-
-#define IMAGE_REL_ALPHA_ABSOLUTE 0x0
-#define IMAGE_REL_ALPHA_REFLONG 0x1
-#define IMAGE_REL_ALPHA_REFQUAD 0x2
-#define IMAGE_REL_ALPHA_GPREL32 0x3
-#define IMAGE_REL_ALPHA_LITERAL 0x4
-#define IMAGE_REL_ALPHA_LITUSE 0x5
-#define IMAGE_REL_ALPHA_GPDISP 0x6
-#define IMAGE_REL_ALPHA_BRADDR 0x7
-#define IMAGE_REL_ALPHA_HINT 0x8
-#define IMAGE_REL_ALPHA_INLINE_REFLONG 0x9
-#define IMAGE_REL_ALPHA_REFHI 0xA
-#define IMAGE_REL_ALPHA_REFLO 0xB
-#define IMAGE_REL_ALPHA_PAIR 0xC
-#define IMAGE_REL_ALPHA_MATCH 0xD
-#define IMAGE_REL_ALPHA_SECTION 0xE
-#define IMAGE_REL_ALPHA_SECREL 0xF
-#define IMAGE_REL_ALPHA_REFLONGNB 0x10
-
-//
-// IBM PowerPC relocation types.
-//
-
-#define IMAGE_REL_PPC_ABSOLUTE 0x0000 // NOP
-#define IMAGE_REL_PPC_ADDR64 0x0001 // 64-bit address
-#define IMAGE_REL_PPC_ADDR32 0x0002 // 32-bit address
-#define IMAGE_REL_PPC_ADDR24 0x0003 // 26-bit address, shifted left 2 (branch absolute)
-#define IMAGE_REL_PPC_ADDR16 0x0004 // 16-bit address
-#define IMAGE_REL_PPC_ADDR14 0x0005 // 16-bit address, shifted left 2 (load doubleword)
-#define IMAGE_REL_PPC_REL24 0x0006 // 26-bit PC-relative offset, shifted left 2 (branch relative)
-#define IMAGE_REL_PPC_REL14 0x0007 // 16-bit PC-relative offset, shifted left 2 (br cond relative)
-#define IMAGE_REL_PPC_TOCREL16 0x0008 // 16-bit offset from TOC base
-#define IMAGE_REL_PPC_TOCREL14 0x0009 // 16-bit offset from TOC base, shifted left 2 (load doubleword)
-
-#define IMAGE_REL_PPC_ADDR32NB 0x000A // 32-bit addr w/o image base
-#define IMAGE_REL_PPC_SECREL 0x000B // va of containing section (as in an image sectionhdr)
-#define IMAGE_REL_PPC_SECTION 0x000C // sectionheader number
-#define IMAGE_REL_PPC_IFGLUE 0x000D // substitute TOC restore instruction iff symbol is glue code
-#define IMAGE_REL_PPC_IMGLUE 0x000E // symbol is glue code; virtual address is TOC restore instruction
-
-#define IMAGE_REL_PPC_TYPEMASK 0x00FF // mask to isolate above values in IMAGE_RELOCATION.Type
-
-// Flag bits in IMAGE_RELOCATION.TYPE
-
-#define IMAGE_REL_PPC_NEG 0x0100 // subtract reloc value rather than adding it
-#define IMAGE_REL_PPC_BRTAKEN 0x0200 // fix branch prediction bit to predict branch taken
-#define IMAGE_REL_PPC_BRNTAKEN 0x0400 // fix branch prediction bit to predict branch not taken
-#define IMAGE_REL_PPC_TOCDEFN 0x0800 // toc slot defined in file (or, data in toc)
-
-//
-// Based relocation format.
-//
-
-typedef struct _IMAGE_BASE_RELOCATION {
- UINT32 VirtualAddress;
- UINT32 SizeOfBlock;
-// UINT16 TypeOffset[1];
-} IMAGE_BASE_RELOCATION, *PIMAGE_BASE_RELOCATION;
-
-#define IMAGE_SIZEOF_BASE_RELOCATION 8
-
-//
-// Based relocation types.
-//
-
-#define IMAGE_REL_BASED_ABSOLUTE 0
-#define IMAGE_REL_BASED_HIGH 1
-#define IMAGE_REL_BASED_LOW 2
-#define IMAGE_REL_BASED_HIGHLOW 3
-#define IMAGE_REL_BASED_HIGHADJ 4
-#define IMAGE_REL_BASED_MIPS_JMPADDR 5
-#define IMAGE_REL_BASED_DIR64 10
-
-//
-// Line number format.
-//
-
-typedef struct _IMAGE_LINENUMBER {
- union {
- UINT32 SymbolTableIndex; // Symbol table index of function name if Linenumber is 0.
- UINT32 VirtualAddress; // Virtual address of line number.
- } Type;
- UINT16 Linenumber; // Line number.
-} IMAGE_LINENUMBER;
-
-#define IMAGE_SIZEOF_LINENUMBER 6
-
-//
-// Archive format.
-//
-
-#define IMAGE_ARCHIVE_START_SIZE 8
-#define IMAGE_ARCHIVE_START "!<arch>\n"
-#define IMAGE_ARCHIVE_END "`\n"
-#define IMAGE_ARCHIVE_PAD "\n"
-#define IMAGE_ARCHIVE_LINKER_MEMBER "/ "
-#define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// "
-
-typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER {
- UINT8 Name[16]; // File member name - `/' terminated.
- UINT8 Date[12]; // File member date - decimal.
- UINT8 UserID[6]; // File member user id - decimal.
- UINT8 GroupID[6]; // File member group id - decimal.
- UINT8 Mode[8]; // File member mode - octal.
- UINT8 Size[10]; // File member size - decimal.
- UINT8 EndHeader[2]; // String to end header.
-} IMAGE_ARCHIVE_MEMBER_HEADER, *PIMAGE_ARCHIVE_MEMBER_HEADER;
-
-#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60
-
-//
-// DLL support.
-//
-
-//
-// Export Format
-//
-
-typedef struct _IMAGE_EXPORT_DIRECTORY {
- UINT32 Characteristics;
- UINT32 TimeDateStamp;
- UINT16 MajorVersion;
- UINT16 MinorVersion;
- UINT32 Name;
- UINT32 Base;
- UINT32 NumberOfFunctions;
- UINT32 NumberOfNames;
- UINT32 *AddressOfFunctions;
- UINT32 *AddressOfNames;
- UINT32 *AddressOfNameOrdinals;
-} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;
-
-//
-// Import Format
-//
-
-typedef struct _IMAGE_IMPORT_BY_NAME {
- UINT16 Hint;
- UINT8 Name[1];
-} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;
-
-typedef struct _IMAGE_THUNK_DATA {
- union {
- UINT32 Function;
- UINT32 Ordinal;
- PIMAGE_IMPORT_BY_NAME AddressOfData;
- } u1;
-} IMAGE_THUNK_DATA, *PIMAGE_THUNK_DATA;
-
-#define IMAGE_ORDINAL_FLAG 0x80000000
-#define IMAGE_SNAP_BY_ORDINAL(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG) != 0)
-#define IMAGE_ORDINAL(Ordinal) (Ordinal & 0xffff)
-
-typedef struct _IMAGE_IMPORT_DESCRIPTOR {
- UINT32 Characteristics;
- UINT32 TimeDateStamp;
- UINT32 ForwarderChain;
- UINT32 Name;
- PIMAGE_THUNK_DATA FirstThunk;
-} IMAGE_IMPORT_DESCRIPTOR, *PIMAGE_IMPORT_DESCRIPTOR;
-
-#endif
diff --git a/sys/boot/efi/include/arm/efibind.h b/sys/boot/efi/include/arm/efibind.h
deleted file mode 100644
index 177032adc01a..000000000000
--- a/sys/boot/efi/include/arm/efibind.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/* $FreeBSD$ */
-/*++
-
-Copyright (c) 2004 - 2012, Intel Corporation. All rights reserved.
-
-This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution. The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-Module Name:
-
- EfiBind.h
-
-Abstract:
-
- Processor or Compiler specific defines and types for IA-32.
- We are using the ANSI C 2000 _t type definitions for basic types.
- This it technically a violation of the coding standard, but they
- are used to make EfiTypes.h portable. Code other than EfiTypes.h
- should never use any ANSI C 2000 _t integer types.
-
---*/
-
-#ifndef _EFI_BIND_H_
-#define _EFI_BIND_H_
-
-
-#define EFI_DRIVER_ENTRY_POINT(InitFunction)
-#define EFI_APPLICATION_ENTRY_POINT EFI_DRIVER_ENTRY_POINT
-
-
-//
-// Make sure we are using the correct packing rules per EFI specification
-//
-#ifndef __GNUC__
-#pragma pack()
-#endif
-
-
-#ifdef __FreeBSD__
-#include <sys/stdint.h>
-#else
-//
-// Assume standard IA-32 alignment.
-// BugBug: Need to check portability of long long
-//
-typedef unsigned long long uint64_t;
-typedef long long int64_t;
-typedef unsigned int uint32_t;
-typedef int int32_t;
-typedef unsigned short uint16_t;
-typedef short int16_t;
-typedef unsigned char uint8_t;
-typedef signed char int8_t;
-#endif
-
-typedef uint64_t UINT64;
-typedef int64_t INT64;
-typedef uint32_t UINT32;
-typedef int32_t INT32;
-typedef uint16_t UINT16;
-typedef int16_t INT16;
-typedef uint8_t UINT8;
-typedef int8_t INT8;
-
-#undef VOID
-#define VOID void
-
-//
-// Native integer size in stdint.h
-//
-typedef uint32_t UINTN;
-typedef int32_t INTN;
-
-#define EFIERR(a) (0x80000000 | a)
-#define EFI_ERROR_MASK 0x80000000
-#define EFIERR_OEM(a) (0xc0000000 | a)
-
-//
-// Processor specific defines
-//
-#define EFI_MAX_BIT 0x80000000
-#define MAX_2_BITS 0xC0000000
-
-//
-// Maximum legal IA-32 address
-//
-#define EFI_MAX_ADDRESS 0xFFFFFFFF
-
-//
-// Bad pointer value to use in check builds.
-// if you see this value you are using uninitialized or free'ed data
-//
-#define EFI_BAD_POINTER 0xAFAFAFAF
-#define EFI_BAD_POINTER_AS_BYTE 0xAF
-
-#define EFI_DEADLOOP() { volatile UINTN __iii; __iii = 1; while (__iii); }
-
-//
-// Inject a break point in the code to assist debugging for NT Emulation Environment
-// For real hardware, just put in a halt loop. Don't do a while(1) because the
-// compiler will optimize away the rest of the function following, so that you run out in
-// the weeds if you skip over it with a debugger.
-//
-#define EFI_BREAKPOINT EFI_DEADLOOP()
-
-
-//
-// Memory Fence forces serialization, and is needed to support out of order
-// memory transactions. The Memory Fence is mainly used to make sure IO
-// transactions complete in a deterministic sequence, and to syncronize locks
-// an other MP code. Currently no memory fencing is required.
-//
-#define MEMORY_FENCE()
-
-//
-// Some compilers don't support the forward reference construct:
-// typedef struct XXXXX. The forward reference is required for
-// ANSI compatibility.
-//
-// The following macro provide a workaround for such cases.
-//
-
-
-#ifdef EFI_NO_INTERFACE_DECL
- #define EFI_FORWARD_DECLARATION(x)
-#else
- #define EFI_FORWARD_DECLARATION(x) typedef struct _##x x
-#endif
-
-
-//
-// Some C compilers optimize the calling conventions to increase performance.
-// EFIAPI is used to make all public APIs follow the standard C calling
-// convention.
-//
-#define EFIAPI
-
-
-
-//
-// For symbol name in GNU assembly code, an extra "_" is necessary
-//
-#if defined(__GNUC__)
- ///
- /// Private worker functions for ASM_PFX()
- ///
- #define _CONCATENATE(a, b) __CONCATENATE(a, b)
- #define __CONCATENATE(a, b) a ## b
-
- ///
- /// The __USER_LABEL_PREFIX__ macro predefined by GNUC represents the prefix
- /// on symbols in assembly language.
- ///
- #define ASM_PFX(name) _CONCATENATE (__USER_LABEL_PREFIX__, name)
-
-#endif
-
-#define INTERFACE_DECL(x) struct x
-
-#endif
diff --git a/sys/boot/efi/include/arm64/efibind.h b/sys/boot/efi/include/arm64/efibind.h
deleted file mode 100644
index 4751e2e944a8..000000000000
--- a/sys/boot/efi/include/arm64/efibind.h
+++ /dev/null
@@ -1,217 +0,0 @@
-/* $FreeBSD$ */
-/*++
-
-Copyright (c) 1999 - 2003 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- efefind.h
-
-Abstract:
-
- EFI to compile bindings
-
-
-
-
-Revision History
-
---*/
-
-#pragma pack()
-
-
-#ifdef __FreeBSD__
-#include <sys/stdint.h>
-#else
-//
-// Basic int types of various widths
-//
-
-#if (__STDC_VERSION__ < 199901L )
-
- // No ANSI C 1999/2000 stdint.h integer width declarations
-
- #ifdef _MSC_EXTENSIONS
-
- // Use Microsoft C compiler integer width declarations
-
- typedef unsigned __int64 uint64_t;
- typedef __int64 int64_t;
- typedef unsigned __int32 uint32_t;
- typedef __int32 int32_t;
- typedef unsigned __int16 uint16_t;
- typedef __int16 int16_t;
- typedef unsigned __int8 uint8_t;
- typedef __int8 int8_t;
- #else
- #ifdef UNIX_LP64
-
- // Use LP64 programming model from C_FLAGS for integer width declarations
-
- typedef unsigned long uint64_t;
- typedef long int64_t;
- typedef unsigned int uint32_t;
- typedef int int32_t;
- typedef unsigned short uint16_t;
- typedef short int16_t;
- typedef unsigned char uint8_t;
- typedef char int8_t;
- #else
-
- // Assume P64 programming model from C_FLAGS for integer width declarations
-
- typedef unsigned long long uint64_t;
- typedef long long int64_t;
- typedef unsigned int uint32_t;
- typedef int int32_t;
- typedef unsigned short uint16_t;
- typedef short int16_t;
- typedef unsigned char uint8_t;
- typedef char int8_t;
- #endif
- #endif
-#endif
-#endif /* __FreeBSD__ */
-
-//
-// Basic EFI types of various widths
-//
-
-
-typedef uint64_t UINT64;
-typedef int64_t INT64;
-typedef uint32_t UINT32;
-typedef int32_t INT32;
-typedef uint16_t UINT16;
-typedef int16_t INT16;
-typedef uint8_t UINT8;
-typedef int8_t INT8;
-
-
-#undef VOID
-#define VOID void
-
-
-typedef int64_t INTN;
-typedef uint64_t UINTN;
-
-//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// BugBug: Code to debug
-//
-#define BIT63 0x8000000000000000
-
-#define PLATFORM_IOBASE_ADDRESS (0xffffc000000 | BIT63)
-#define PORT_TO_MEMD(_Port) (PLATFORM_IOBASE_ADDRESS | ( ( ( (_Port) & 0xfffc) << 10 ) | ( (_Port) & 0x0fff) ) )
-
-//
-// Macro's with casts make this much easier to use and read.
-//
-#define PORT_TO_MEM8D(_Port) (*(UINT8 *)(PORT_TO_MEMD(_Port)))
-#define POST_CODE(_Data) (PORT_TO_MEM8D(0x80) = (_Data))
-//
-// BugBug: End Debug Code!!!
-//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-#define EFIERR(a) (0x8000000000000000 | a)
-#define EFI_ERROR_MASK 0x8000000000000000
-#define EFIERR_OEM(a) (0xc000000000000000 | a)
-
-#define BAD_POINTER 0xFBFBFBFBFBFBFBFB
-#define MAX_ADDRESS 0xFFFFFFFFFFFFFFFF
-
-#define BREAKPOINT() __break(0)
-
-//
-// Pointers must be aligned to these address to function
-// you will get an alignment fault if this value is less than 8
-//
-#define MIN_ALIGNMENT_SIZE 8
-
-#define ALIGN_VARIABLE(Value , Adjustment) \
- (UINTN) Adjustment = 0; \
- if((UINTN)Value % MIN_ALIGNMENT_SIZE) \
- (UINTN)Adjustment = MIN_ALIGNMENT_SIZE - ((UINTN)Value % MIN_ALIGNMENT_SIZE); \
- Value = (UINTN)Value + (UINTN)Adjustment
-
-//
-// Define macros to create data structure signatures.
-//
-
-#define EFI_SIGNATURE_16(A,B) ((A) | (B<<8))
-#define EFI_SIGNATURE_32(A,B,C,D) (EFI_SIGNATURE_16(A,B) | (EFI_SIGNATURE_16(C,D) << 16))
-#define EFI_SIGNATURE_64(A,B,C,D,E,F,G,H) (EFI_SIGNATURE_32(A,B,C,D) | ((UINT64)(EFI_SIGNATURE_32(E,F,G,H)) << 32))
-
-//
-// EFIAPI - prototype calling convention for EFI function pointers
-// BOOTSERVICE - prototype for implementation of a boot service interface
-// RUNTIMESERVICE - prototype for implementation of a runtime service interface
-// RUNTIMEFUNCTION - prototype for implementation of a runtime function that is not a service
-// RUNTIME_CODE - pragma macro for declaring runtime code
-//
-
-#ifndef EFIAPI // Forces EFI calling conventions reguardless of compiler options
- #ifdef _MSC_EXTENSIONS
- #define EFIAPI __cdecl // Force C calling convention for Microsoft C compiler
- #else
- #define EFIAPI // Substitute expresion to force C calling convention
- #endif
-#endif
-
-#define BOOTSERVICE
-#define RUNTIMESERVICE
-#define RUNTIMEFUNCTION
-
-#define RUNTIME_CODE(a) alloc_text("rtcode", a)
-#define BEGIN_RUNTIME_DATA() data_seg("rtdata")
-#define END_RUNTIME_DATA() data_seg()
-
-#define VOLATILE volatile
-
-//
-// BugBug: Need to find out if this is portable across compilers.
-//
-void __mfa (void);
-#define MEMORY_FENCE() __mfa()
-
-#ifdef EFI_NO_INTERFACE_DECL
- #define EFI_FORWARD_DECLARATION(x)
- #define EFI_INTERFACE_DECL(x)
-#else
- #define EFI_FORWARD_DECLARATION(x) typedef struct _##x x
- #define EFI_INTERFACE_DECL(x) typedef struct x
-#endif
-
-//
-// When build similar to FW, then link everything together as
-// one big module.
-//
-
-#define EFI_DRIVER_ENTRY_POINT(InitFunction)
-
-#define LOAD_INTERNAL_DRIVER(_if, type, name, entry) \
- (_if)->LoadInternal(type, name, entry)
-// entry(NULL, ST)
-
-#ifdef __FreeBSD__
-#define INTERFACE_DECL(x) struct x
-#else
-//
-// Some compilers don't support the forward reference construct:
-// typedef struct XXXXX
-//
-// The following macro provide a workaround for such cases.
-//
-#ifdef NO_INTERFACE_DECL
-#define INTERFACE_DECL(x)
-#else
-#define INTERFACE_DECL(x) typedef struct x
-#endif
-#endif
diff --git a/sys/boot/efi/include/efi.h b/sys/boot/efi/include/efi.h
deleted file mode 100644
index a91e8813c184..000000000000
--- a/sys/boot/efi/include/efi.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* $FreeBSD$ */
-/*++
-
-Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- efi.h
-
-Abstract:
-
- Public EFI header files
-
-
-
-Revision History
-
---*/
-
-//
-// Build flags on input
-// EFI32
-// EFI_DEBUG - Enable debugging code
-// EFI_NT_EMULATOR - Building for running under NT
-//
-
-
-#ifndef _EFI_INCLUDE_
-#define _EFI_INCLUDE_
-
-#define EFI_FIRMWARE_VENDOR L"INTEL"
-#define EFI_FIRMWARE_MAJOR_REVISION 14
-#define EFI_FIRMWARE_MINOR_REVISION 62
-#define EFI_FIRMWARE_REVISION ((EFI_FIRMWARE_MAJOR_REVISION <<16) | (EFI_FIRMWARE_MINOR_REVISION))
-
-#include "efibind.h"
-#include "efidef.h"
-#include "efidevp.h"
-#include "efiprot.h"
-#include "eficon.h"
-#include "efiser.h"
-#include "efi_nii.h"
-#include "efipxebc.h"
-#include "efinet.h"
-#include "efiapi.h"
-#include "efifs.h"
-#include "efierr.h"
-#include "efigop.h"
-
-/*
- * FreeBSD UUID
- */
-#define FREEBSD_BOOT_VAR_GUID \
- { 0xCFEE69AD, 0xA0DE, 0x47A9, {0x93, 0xA8, 0xF6, 0x31, 0x06, 0xF8, 0xAE, 0x99} }
-
-#endif
diff --git a/sys/boot/efi/include/efi_driver_utils.h b/sys/boot/efi/include/efi_driver_utils.h
deleted file mode 100644
index 520cff128a27..000000000000
--- a/sys/boot/efi/include/efi_driver_utils.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*-
- * Copyright (c) 2017 Eric McCorkle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef _EFI_DRIVER_UTILS_H_
-#define _EFI_DRIVER_UTILS_H_
-
-#include <efi.h>
-#include <efiprot.h>
-
-extern EFI_STATUS install_driver(EFI_DRIVER_BINDING *driver);
-extern EFI_STATUS connect_controllers(EFI_GUID *filter);
-
-#endif
diff --git a/sys/boot/efi/include/efi_drivers.h b/sys/boot/efi/include/efi_drivers.h
deleted file mode 100644
index 8df9133f73d4..000000000000
--- a/sys/boot/efi/include/efi_drivers.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*-
- * Copyright (c) 2016 Eric McCorkle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef _EFI_DRIVERS_H_
-#define _EFI_DRIVERS_H_
-
-#include <bootstrap.h>
-
-typedef struct efi_driver_t {
- const char *name;
- void (*init)(void);
-} efi_driver_t;
-
-extern struct devsw efipart_dev;
-extern int efipart_getdesc(struct devdesc *dev, char **out);
-
-/* EFI drivers. */
-extern const efi_driver_t fs_driver;
-
-#endif
diff --git a/sys/boot/efi/include/efi_nii.h b/sys/boot/efi/include/efi_nii.h
deleted file mode 100644
index 561cbd46a3ea..000000000000
--- a/sys/boot/efi/include/efi_nii.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/* $FreeBSD$ */
-#ifndef _EFI_NII_H
-#define _EFI_NII_H
-
-/*++
-Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module name:
- efi_nii.h
-
-Abstract:
-
-Revision history:
- 2000-Feb-18 M(f)J GUID updated.
- Structure order changed for machine word alignment.
- Added StringId[4] to structure.
-
- 2000-Feb-14 M(f)J Genesis.
---*/
-
-#define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL \
- { 0xE18541CD, 0xF755, 0x4f73, {0x92, 0x8D, 0x64, 0x3C, 0x8A, 0x79, 0xB2, 0x29} }
-#define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_31 \
- { 0x1ACED566, 0x76ED, 0x4218, {0xBC, 0x81, 0x76, 0x7F, 0x1F, 0x97, 0x7A, 0x89} }
-
-#define EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE_REVISION 0x00010000
-#define EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE_REVISION_31 0x00010001
-
-typedef enum {
- EfiNetworkInterfaceUndi = 1
-} EFI_NETWORK_INTERFACE_TYPE;
-
-typedef struct {
-
- UINT64 Revision;
- // Revision of the network interface identifier protocol interface.
-
- UINT64 ID;
- // Address of the first byte of the identifying structure for this
- // network interface. This is set to zero if there is no structure.
- //
- // For PXE/UNDI this is the first byte of the !PXE structure.
-
- UINT64 ImageAddr;
- // Address of the UNrelocated driver/ROM image. This is set
- // to zero if there is no driver/ROM image.
- //
- // For 16-bit UNDI, this is the first byte of the option ROM in
- // upper memory.
- //
- // For 32/64-bit S/W UNDI, this is the first byte of the EFI ROM
- // image.
- //
- // For H/W UNDI, this is set to zero.
-
- UINT32 ImageSize;
- // Size of the UNrelocated driver/ROM image of this network interface.
- // This is set to zero if there is no driver/ROM image.
-
- CHAR8 StringId[4];
- // 4 char ASCII string to go in class identifier (option 60) in DHCP
- // and Boot Server discover packets.
- // For EfiNetworkInterfaceUndi this field is "UNDI".
- // For EfiNetworkInterfaceSnp this field is "SNPN".
-
- UINT8 Type;
- UINT8 MajorVer;
- UINT8 MinorVer;
- // Information to be placed into the PXE DHCP and Discover packets.
- // This is the network interface type and version number that will
- // be placed into DHCP option 94 (client network interface identifier).
- BOOLEAN Ipv6Supported;
- UINT8 IfNum; // interface number to be used with pxeid structure
-} EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE;
-
-extern EFI_GUID NetworkInterfaceIdentifierProtocol;
-extern EFI_GUID NetworkInterfaceIdentifierProtocol_31;
-
-#endif // _EFI_NII_H
diff --git a/sys/boot/efi/include/efiapi.h b/sys/boot/efi/include/efiapi.h
deleted file mode 100644
index 8bab2173c0a5..000000000000
--- a/sys/boot/efi/include/efiapi.h
+++ /dev/null
@@ -1,902 +0,0 @@
-/* $FreeBSD$ */
-#ifndef _EFI_API_H
-#define _EFI_API_H
-
-/*++
-
-Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- efiapi.h
-
-Abstract:
-
- Global EFI runtime & boot service interfaces
-
-
-
-
-Revision History
-
---*/
-
-//
-// EFI Specification Revision
-//
-
-#define EFI_SPECIFICATION_MAJOR_REVISION 1
-#define EFI_SPECIFICATION_MINOR_REVISION 10
-
-//
-// Declare forward referenced data structures
-//
-
-INTERFACE_DECL(_EFI_SYSTEM_TABLE);
-
-//
-// EFI Memory
-//
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_ALLOCATE_PAGES) (
- IN EFI_ALLOCATE_TYPE Type,
- IN EFI_MEMORY_TYPE MemoryType,
- IN UINTN NoPages,
- OUT EFI_PHYSICAL_ADDRESS *Memory
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_FREE_PAGES) (
- IN EFI_PHYSICAL_ADDRESS Memory,
- IN UINTN NoPages
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_MEMORY_MAP) (
- IN OUT UINTN *MemoryMapSize,
- IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap,
- OUT UINTN *MapKey,
- OUT UINTN *DescriptorSize,
- OUT UINT32 *DescriptorVersion
- );
-
-#define NextMemoryDescriptor(Ptr,Size) ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size))
-
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_ALLOCATE_POOL) (
- IN EFI_MEMORY_TYPE PoolType,
- IN UINTN Size,
- OUT VOID **Buffer
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_FREE_POOL) (
- IN VOID *Buffer
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP) (
- IN UINTN MemoryMapSize,
- IN UINTN DescriptorSize,
- IN UINT32 DescriptorVersion,
- IN EFI_MEMORY_DESCRIPTOR *VirtualMap
- );
-
-
-#define EFI_OPTIONAL_PTR 0x00000001
-#define EFI_INTERNAL_FNC 0x00000002 // Pointer to internal runtime fnc
-#define EFI_INTERNAL_PTR 0x00000004 // Pointer to internal runtime data
-
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CONVERT_POINTER) (
- IN UINTN DebugDisposition,
- IN OUT VOID **Address
- );
-
-
-//
-// EFI Events
-//
-
-
-
-#define EVT_TIMER 0x80000000
-#define EVT_RUNTIME 0x40000000
-#define EVT_RUNTIME_CONTEXT 0x20000000
-
-#define EVT_NOTIFY_WAIT 0x00000100
-#define EVT_NOTIFY_SIGNAL 0x00000200
-
-#define EVT_SIGNAL_EXIT_BOOT_SERVICES 0x00000201
-#define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202
-
-#define EVT_EFI_SIGNAL_MASK 0x000000FF
-#define EVT_EFI_SIGNAL_MAX 2
-
-typedef
-VOID
-(EFIAPI *EFI_EVENT_NOTIFY) (
- IN EFI_EVENT Event,
- IN VOID *Context
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CREATE_EVENT) (
- IN UINT32 Type,
- IN EFI_TPL NotifyTpl,
- IN EFI_EVENT_NOTIFY NotifyFunction,
- IN VOID *NotifyContext,
- OUT EFI_EVENT *Event
- );
-
-typedef enum {
- TimerCancel,
- TimerPeriodic,
- TimerRelative,
- TimerTypeMax
-} EFI_TIMER_DELAY;
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SET_TIMER) (
- IN EFI_EVENT Event,
- IN EFI_TIMER_DELAY Type,
- IN UINT64 TriggerTime
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SIGNAL_EVENT) (
- IN EFI_EVENT Event
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_WAIT_FOR_EVENT) (
- IN UINTN NumberOfEvents,
- IN EFI_EVENT *Event,
- OUT UINTN *Index
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CLOSE_EVENT) (
- IN EFI_EVENT Event
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CHECK_EVENT) (
- IN EFI_EVENT Event
- );
-
-//
-// Task priority level
-//
-
-#define TPL_APPLICATION 4
-#define TPL_CALLBACK 8
-#define TPL_NOTIFY 16
-#define TPL_HIGH_LEVEL 31
-
-typedef
-EFI_TPL
-(EFIAPI *EFI_RAISE_TPL) (
- IN EFI_TPL NewTpl
- );
-
-typedef
-VOID
-(EFIAPI *EFI_RESTORE_TPL) (
- IN EFI_TPL OldTpl
- );
-
-
-//
-// EFI platform varibles
-//
-
-#define EFI_GLOBAL_VARIABLE \
- { 0x8BE4DF61, 0x93CA, 0x11d2, {0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C} }
-
-// Variable attributes
-#define EFI_VARIABLE_NON_VOLATILE 0x00000001
-#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
-#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
-
-// Variable size limitation
-#define EFI_MAXIMUM_VARIABLE_SIZE 1024
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_VARIABLE) (
- IN CHAR16 *VariableName,
- IN EFI_GUID *VendorGuid,
- OUT UINT32 *Attributes OPTIONAL,
- IN OUT UINTN *DataSize,
- OUT VOID *Data
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_NEXT_VARIABLE_NAME) (
- IN OUT UINTN *VariableNameSize,
- IN OUT CHAR16 *VariableName,
- IN OUT EFI_GUID *VendorGuid
- );
-
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SET_VARIABLE) (
- IN const CHAR16 *VariableName,
- IN EFI_GUID *VendorGuid,
- IN UINT32 Attributes,
- IN UINTN DataSize,
- IN VOID *Data
- );
-
-
-//
-// EFI Time
-//
-
-typedef struct {
- UINT32 Resolution; // 1e-6 parts per million
- UINT32 Accuracy; // hertz
- BOOLEAN SetsToZero; // Set clears sub-second time
-} EFI_TIME_CAPABILITIES;
-
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_TIME) (
- OUT EFI_TIME *Time,
- OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SET_TIME) (
- IN EFI_TIME *Time
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_WAKEUP_TIME) (
- OUT BOOLEAN *Enabled,
- OUT BOOLEAN *Pending,
- OUT EFI_TIME *Time
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SET_WAKEUP_TIME) (
- IN BOOLEAN Enable,
- IN EFI_TIME *Time OPTIONAL
- );
-
-
-//
-// Image functions
-//
-
-
-// PE32+ Subsystem type for EFI images
-
-#if !defined(IMAGE_SUBSYSTEM_EFI_APPLICATION)
-#define IMAGE_SUBSYSTEM_EFI_APPLICATION 10
-#define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11
-#define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12
-#endif
-
-// PE32+ Machine type for EFI images
-
-#if !defined(EFI_IMAGE_MACHINE_IA32)
-#define EFI_IMAGE_MACHINE_IA32 0x014c
-#endif
-
-#if !defined(EFI_IMAGE_MACHINE_EBC)
-#define EFI_IMAGE_MACHINE_EBC 0x0EBC
-#endif
-
-// Image Entry prototype
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IMAGE_ENTRY_POINT) (
- IN EFI_HANDLE ImageHandle,
- IN struct _EFI_SYSTEM_TABLE *SystemTable
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IMAGE_LOAD) (
- IN BOOLEAN BootPolicy,
- IN EFI_HANDLE ParentImageHandle,
- IN EFI_DEVICE_PATH *FilePath,
- IN VOID *SourceBuffer OPTIONAL,
- IN UINTN SourceSize,
- OUT EFI_HANDLE *ImageHandle
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IMAGE_START) (
- IN EFI_HANDLE ImageHandle,
- OUT UINTN *ExitDataSize,
- OUT CHAR16 **ExitData OPTIONAL
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_EXIT) (
- IN EFI_HANDLE ImageHandle,
- IN EFI_STATUS ExitStatus,
- IN UINTN ExitDataSize,
- IN CHAR16 *ExitData OPTIONAL
- ) __dead2;
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IMAGE_UNLOAD) (
- IN EFI_HANDLE ImageHandle
- );
-
-
-// Image handle
-#define LOADED_IMAGE_PROTOCOL \
- { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
-
-#define EFI_LOADED_IMAGE_INFORMATION_REVISION 0x1000
-typedef struct {
- UINT32 Revision;
- EFI_HANDLE ParentHandle;
- struct _EFI_SYSTEM_TABLE *SystemTable;
-
- // Source location of image
- EFI_HANDLE DeviceHandle;
- EFI_DEVICE_PATH *FilePath;
- VOID *Reserved;
-
- // Images load options
- UINT32 LoadOptionsSize;
- VOID *LoadOptions;
-
- // Location of where image was loaded
- VOID *ImageBase;
- UINT64 ImageSize;
- EFI_MEMORY_TYPE ImageCodeType;
- EFI_MEMORY_TYPE ImageDataType;
-
- // If the driver image supports a dynamic unload request
- EFI_IMAGE_UNLOAD Unload;
-
-} EFI_LOADED_IMAGE;
-
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_EXIT_BOOT_SERVICES) (
- IN EFI_HANDLE ImageHandle,
- IN UINTN MapKey
- );
-
-//
-// Misc
-//
-
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_STALL) (
- IN UINTN Microseconds
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SET_WATCHDOG_TIMER) (
- IN UINTN Timeout,
- IN UINT64 WatchdogCode,
- IN UINTN DataSize,
- IN CHAR16 *WatchdogData OPTIONAL
- );
-
-
-typedef enum {
- EfiResetCold,
- EfiResetWarm,
- EfiResetShutdown
-} EFI_RESET_TYPE;
-
-typedef
-VOID
-(EFIAPI *EFI_RESET_SYSTEM) (
- IN EFI_RESET_TYPE ResetType,
- IN EFI_STATUS ResetStatus,
- IN UINTN DataSize,
- IN CHAR16 *ResetData OPTIONAL
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) (
- OUT UINT64 *Count
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) (
- OUT UINT32 *HighCount
- );
-
-//
-// Protocol handler functions
-//
-
-typedef enum {
- EFI_NATIVE_INTERFACE
-} EFI_INTERFACE_TYPE;
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) (
- IN OUT EFI_HANDLE *Handle,
- IN EFI_GUID *Protocol,
- IN EFI_INTERFACE_TYPE InterfaceType,
- IN VOID *Interface
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) (
- IN EFI_HANDLE Handle,
- IN EFI_GUID *Protocol,
- IN VOID *OldInterface,
- IN VOID *NewInterface
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) (
- IN EFI_HANDLE Handle,
- IN EFI_GUID *Protocol,
- IN VOID *Interface
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_HANDLE_PROTOCOL) (
- IN EFI_HANDLE Handle,
- IN EFI_GUID *Protocol,
- OUT VOID **Interface
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) (
- IN EFI_GUID *Protocol,
- IN EFI_EVENT Event,
- OUT VOID **Registration
- );
-
-typedef enum {
- AllHandles,
- ByRegisterNotify,
- ByProtocol
-} EFI_LOCATE_SEARCH_TYPE;
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_LOCATE_HANDLE) (
- IN EFI_LOCATE_SEARCH_TYPE SearchType,
- IN EFI_GUID *Protocol OPTIONAL,
- IN VOID *SearchKey OPTIONAL,
- IN OUT UINTN *BufferSize,
- OUT EFI_HANDLE *Buffer
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_LOCATE_DEVICE_PATH) (
- IN EFI_GUID *Protocol,
- IN OUT EFI_DEVICE_PATH **DevicePath,
- OUT EFI_HANDLE *Device
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) (
- IN EFI_GUID *Guid,
- IN VOID *Table
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_RESERVED_SERVICE) (
- VOID
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CONNECT_CONTROLLER) (
- IN EFI_HANDLE ControllerHandle,
- IN EFI_HANDLE *DriverImageHandle OPTIONAL,
- IN EFI_DEVICE_PATH *RemainingDevicePath OPTIONAL,
- IN BOOLEAN Recursive
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DISCONNECT_CONTROLLER)(
- IN EFI_HANDLE ControllerHandle,
- IN EFI_HANDLE DriverImageHandle, OPTIONAL
- IN EFI_HANDLE ChildHandle OPTIONAL
- );
-
-#define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001
-#define EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002
-#define EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004
-#define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
-#define EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010
-#define EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_OPEN_PROTOCOL) (
- IN EFI_HANDLE Handle,
- IN EFI_GUID *Protocol,
- OUT VOID **Interface,
- IN EFI_HANDLE ImageHandle,
- IN EFI_HANDLE ControllerHandle, OPTIONAL
- IN UINT32 Attributes
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CLOSE_PROTOCOL) (
- IN EFI_HANDLE Handle,
- IN EFI_GUID *Protocol,
- IN EFI_HANDLE ImageHandle,
- IN EFI_HANDLE DeviceHandle
- );
-
-typedef struct {
- EFI_HANDLE AgentHandle;
- EFI_HANDLE ControllerHandle;
- UINT32 Attributes;
- UINT32 OpenCount;
-} EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION) (
- IN EFI_HANDLE UserHandle,
- IN EFI_GUID *Protocol,
- IN EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
- OUT UINTN *EntryCount
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PROTOCOLS_PER_HANDLE) (
- IN EFI_HANDLE UserHandle,
- OUT EFI_GUID ***ProtocolBuffer,
- OUT UINTN *ProtocolBufferCount
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_LOCATE_HANDLE_BUFFER) (
- IN EFI_LOCATE_SEARCH_TYPE SearchType,
- IN EFI_GUID *Protocol OPTIONAL,
- IN VOID *SearchKey OPTIONAL,
- IN OUT UINTN *NumberHandles,
- OUT EFI_HANDLE **Buffer
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_LOCATE_PROTOCOL) (
- EFI_GUID *Protocol,
- VOID *Registration, OPTIONAL
- VOID **Interface
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
- IN OUT EFI_HANDLE *Handle,
- ...
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
- IN EFI_HANDLE Handle,
- ...
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CALCULATE_CRC32) (
- IN VOID *Data,
- IN UINTN DataSize,
- OUT UINT32 *Crc32
- );
-
-typedef
-VOID
-(EFIAPI *EFI_COPY_MEM) (
- IN VOID *Destination,
- IN VOID *Source,
- IN UINTN Length
- );
-
-typedef
-VOID
-(EFIAPI *EFI_SET_MEM) (
- IN VOID *Buffer,
- IN UINTN Size,
- IN UINT8 Value
- );
-
-//
-// Standard EFI table header
-//
-
-typedef struct _EFI_TABLE_HEARDER {
- UINT64 Signature;
- UINT32 Revision;
- UINT32 HeaderSize;
- UINT32 CRC32;
- UINT32 Reserved;
-} EFI_TABLE_HEADER;
-
-
-//
-// EFI Runtime Serivces Table
-//
-
-#define EFI_RUNTIME_SERVICES_SIGNATURE 0x56524553544e5552
-#define EFI_RUNTIME_SERVICES_REVISION ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
-
-typedef struct {
- EFI_TABLE_HEADER Hdr;
-
- //
- // Time services
- //
-
- EFI_GET_TIME GetTime;
- EFI_SET_TIME SetTime;
- EFI_GET_WAKEUP_TIME GetWakeupTime;
- EFI_SET_WAKEUP_TIME SetWakeupTime;
-
- //
- // Virtual memory services
- //
-
- EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap;
- EFI_CONVERT_POINTER ConvertPointer;
-
- //
- // Variable serviers
- //
-
- EFI_GET_VARIABLE GetVariable;
- EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName;
- EFI_SET_VARIABLE SetVariable;
-
- //
- // Misc
- //
-
- EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount;
- EFI_RESET_SYSTEM ResetSystem;
-
-} EFI_RUNTIME_SERVICES;
-
-
-//
-// EFI Boot Services Table
-//
-
-#define EFI_BOOT_SERVICES_SIGNATURE 0x56524553544f4f42
-#define EFI_BOOT_SERVICES_REVISION ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
-
-typedef struct {
-
- EFI_TABLE_HEADER Hdr;
-
- //
- // Task priority functions
- //
-
- EFI_RAISE_TPL RaiseTPL;
- EFI_RESTORE_TPL RestoreTPL;
-
- //
- // Memory functions
- //
-
- EFI_ALLOCATE_PAGES AllocatePages;
- EFI_FREE_PAGES FreePages;
- EFI_GET_MEMORY_MAP GetMemoryMap;
- EFI_ALLOCATE_POOL AllocatePool;
- EFI_FREE_POOL FreePool;
-
- //
- // Event & timer functions
- //
-
- EFI_CREATE_EVENT CreateEvent;
- EFI_SET_TIMER SetTimer;
- EFI_WAIT_FOR_EVENT WaitForEvent;
- EFI_SIGNAL_EVENT SignalEvent;
- EFI_CLOSE_EVENT CloseEvent;
- EFI_CHECK_EVENT CheckEvent;
-
- //
- // Protocol handler functions
- //
-
- EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface;
- EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
- EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
- EFI_HANDLE_PROTOCOL HandleProtocol;
- VOID *Reserved;
- EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify;
- EFI_LOCATE_HANDLE LocateHandle;
- EFI_LOCATE_DEVICE_PATH LocateDevicePath;
- EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
-
- //
- // Image functions
- //
-
- EFI_IMAGE_LOAD LoadImage;
- EFI_IMAGE_START StartImage;
- EFI_EXIT Exit;
- EFI_IMAGE_UNLOAD UnloadImage;
- EFI_EXIT_BOOT_SERVICES ExitBootServices;
-
- //
- // Misc functions
- //
-
- EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount;
- EFI_STALL Stall;
- EFI_SET_WATCHDOG_TIMER SetWatchdogTimer;
-
- //
- // DriverSupport Services
- //
- EFI_CONNECT_CONTROLLER ConnectController;
- EFI_DISCONNECT_CONTROLLER DisconnectController;
-
- //
- // Open and Close Protocol Services
- //
- EFI_OPEN_PROTOCOL OpenProtocol;
- EFI_CLOSE_PROTOCOL CloseProtocol;
- EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation;
-
- //
- // Library Services to reduce size of drivers
- //
- EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle;
- EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer;
- EFI_LOCATE_PROTOCOL LocateProtocol;
-
- EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces;
- EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces;
-
- //
- // CRC32 services
- //
- EFI_CALCULATE_CRC32 CalculateCrc32;
-
- //
- // Memory Utility Services
- //
- EFI_COPY_MEM CopyMem;
- EFI_SET_MEM SetMem;
-
-} EFI_BOOT_SERVICES;
-
-
-//
-// EFI Configuration Table and GUID definitions
-//
-
-#define MPS_TABLE_GUID \
- { 0xeb9d2d2f, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
-
-#define ACPI_TABLE_GUID \
- { 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
-
-#define ACPI_20_TABLE_GUID \
- { 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
-
-#define SMBIOS_TABLE_GUID \
- { 0xeb9d2d31, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
-
-#define SAL_SYSTEM_TABLE_GUID \
- { 0xeb9d2d32, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
-
-#define FDT_TABLE_GUID \
- { 0xb1b621d5, 0xf19c, 0x41a5, {0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0} }
-
-#define DXE_SERVICES_TABLE_GUID \
- { 0x5ad34ba, 0x6f02, 0x4214, {0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9} }
-
-#define HOB_LIST_TABLE_GUID \
- { 0x7739f24c, 0x93d7, 0x11d4, {0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
-
-#define MEMORY_TYPE_INFORMATION_TABLE_GUID \
- { 0x4c19049f, 0x4137, 0x4dd3, {0x9c, 0x10, 0x8b, 0x97, 0xa8, 0x3f, 0xfd, 0xfa} }
-
-#define DEBUG_IMAGE_INFO_TABLE_GUID \
- { 0x49152e77, 0x1ada, 0x4764, {0xb7, 0xa2, 0x7a, 0xfe, 0xfe, 0xd9, 0x5e, 0x8b} }
-
-typedef struct _EFI_CONFIGURATION_TABLE {
- EFI_GUID VendorGuid;
- VOID *VendorTable;
-} EFI_CONFIGURATION_TABLE;
-
-
-//
-// EFI System Table
-//
-
-
-
-
-#define EFI_SYSTEM_TABLE_SIGNATURE 0x5453595320494249
-#define EFI_SYSTEM_TABLE_REVISION ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
-#define EFI_1_10_SYSTEM_TABLE_REVISION ((1<<16) | 10)
-#define EFI_1_02_SYSTEM_TABLE_REVISION ((1<<16) | 02)
-
-typedef struct _EFI_SYSTEM_TABLE {
- EFI_TABLE_HEADER Hdr;
-
- CHAR16 *FirmwareVendor;
- UINT32 FirmwareRevision;
-
- EFI_HANDLE ConsoleInHandle;
- SIMPLE_INPUT_INTERFACE *ConIn;
-
- EFI_HANDLE ConsoleOutHandle;
- SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut;
-
- EFI_HANDLE StandardErrorHandle;
- SIMPLE_TEXT_OUTPUT_INTERFACE *StdErr;
-
- EFI_RUNTIME_SERVICES *RuntimeServices;
- EFI_BOOT_SERVICES *BootServices;
-
- UINTN NumberOfTableEntries;
- EFI_CONFIGURATION_TABLE *ConfigurationTable;
-
-} EFI_SYSTEM_TABLE;
-
-#endif
diff --git a/sys/boot/efi/include/efichar.h b/sys/boot/efi/include/efichar.h
deleted file mode 100644
index 2fa4ed44792c..000000000000
--- a/sys/boot/efi/include/efichar.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*-
- * Copyright (c) 2010 Marcel Moolenaar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef _BOOT_EFI_EFICHAR_H_
-#define _BOOT_EFI_EFICHAR_H_
-
-int ucs2_to_utf8(const efi_char *, char **);
-int utf8_to_ucs2(const char *, efi_char **, size_t *);
-int ucs2len(const efi_char *);
-
-#endif /* _BOOT_EFI_EFICHAR_H_ */
diff --git a/sys/boot/efi/include/eficon.h b/sys/boot/efi/include/eficon.h
deleted file mode 100644
index 2f719e70a7e4..000000000000
--- a/sys/boot/efi/include/eficon.h
+++ /dev/null
@@ -1,309 +0,0 @@
-/* $FreeBSD$ */
-#ifndef _EFI_CON_H
-#define _EFI_CON_H
-
-/*++
-
-Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- eficon.h
-
-Abstract:
-
- EFI console protocols
-
-
-
-Revision History
-
---*/
-
-//
-// Text output protocol
-//
-
-#define SIMPLE_TEXT_OUTPUT_PROTOCOL \
- { 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
-
-INTERFACE_DECL(_SIMPLE_TEXT_OUTPUT_INTERFACE);
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_RESET) (
- IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
- IN BOOLEAN ExtendedVerification
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_OUTPUT_STRING) (
- IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
- IN CHAR16 *String
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_TEST_STRING) (
- IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
- IN CHAR16 *String
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_QUERY_MODE) (
- IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
- IN UINTN ModeNumber,
- OUT UINTN *Columns,
- OUT UINTN *Rows
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_SET_MODE) (
- IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
- IN UINTN ModeNumber
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_SET_ATTRIBUTE) (
- IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
- IN UINTN Attribute
- );
-
-#define EFI_BLACK 0x00
-#define EFI_BLUE 0x01
-#define EFI_GREEN 0x02
-#define EFI_CYAN (EFI_BLUE | EFI_GREEN)
-#define EFI_RED 0x04
-#define EFI_MAGENTA (EFI_BLUE | EFI_RED)
-#define EFI_BROWN (EFI_GREEN | EFI_RED)
-#define EFI_LIGHTGRAY (EFI_BLUE | EFI_GREEN | EFI_RED)
-#define EFI_BRIGHT 0x08
-#define EFI_DARKGRAY (EFI_BRIGHT)
-#define EFI_LIGHTBLUE (EFI_BLUE | EFI_BRIGHT)
-#define EFI_LIGHTGREEN (EFI_GREEN | EFI_BRIGHT)
-#define EFI_LIGHTCYAN (EFI_CYAN | EFI_BRIGHT)
-#define EFI_LIGHTRED (EFI_RED | EFI_BRIGHT)
-#define EFI_LIGHTMAGENTA (EFI_MAGENTA | EFI_BRIGHT)
-#define EFI_YELLOW (EFI_BROWN | EFI_BRIGHT)
-#define EFI_WHITE (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT)
-
-#define EFI_TEXT_ATTR(f,b) ((f) | ((b) << 4))
-
-#define EFI_BACKGROUND_BLACK 0x00
-#define EFI_BACKGROUND_BLUE 0x10
-#define EFI_BACKGROUND_GREEN 0x20
-#define EFI_BACKGROUND_CYAN (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN)
-#define EFI_BACKGROUND_RED 0x40
-#define EFI_BACKGROUND_MAGENTA (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED)
-#define EFI_BACKGROUND_BROWN (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
-#define EFI_BACKGROUND_LIGHTGRAY (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
-
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_CLEAR_SCREEN) (
- IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_SET_CURSOR_POSITION) (
- IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
- IN UINTN Column,
- IN UINTN Row
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_TEXT_ENABLE_CURSOR) (
- IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
- IN BOOLEAN Enable
- );
-
-typedef struct {
- INT32 MaxMode;
- // current settings
- INT32 Mode;
- INT32 Attribute;
- INT32 CursorColumn;
- INT32 CursorRow;
- BOOLEAN CursorVisible;
-} SIMPLE_TEXT_OUTPUT_MODE;
-
-typedef struct _SIMPLE_TEXT_OUTPUT_INTERFACE {
- EFI_TEXT_RESET Reset;
-
- EFI_TEXT_OUTPUT_STRING OutputString;
- EFI_TEXT_TEST_STRING TestString;
-
- EFI_TEXT_QUERY_MODE QueryMode;
- EFI_TEXT_SET_MODE SetMode;
- EFI_TEXT_SET_ATTRIBUTE SetAttribute;
-
- EFI_TEXT_CLEAR_SCREEN ClearScreen;
- EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition;
- EFI_TEXT_ENABLE_CURSOR EnableCursor;
-
- // Current mode
- SIMPLE_TEXT_OUTPUT_MODE *Mode;
-} SIMPLE_TEXT_OUTPUT_INTERFACE;
-
-//
-// Define's for required EFI Unicode Box Draw character
-//
-
-#define BOXDRAW_HORIZONTAL 0x2500
-#define BOXDRAW_VERTICAL 0x2502
-#define BOXDRAW_DOWN_RIGHT 0x250c
-#define BOXDRAW_DOWN_LEFT 0x2510
-#define BOXDRAW_UP_RIGHT 0x2514
-#define BOXDRAW_UP_LEFT 0x2518
-#define BOXDRAW_VERTICAL_RIGHT 0x251c
-#define BOXDRAW_VERTICAL_LEFT 0x2524
-#define BOXDRAW_DOWN_HORIZONTAL 0x252c
-#define BOXDRAW_UP_HORIZONTAL 0x2534
-#define BOXDRAW_VERTICAL_HORIZONTAL 0x253c
-
-#define BOXDRAW_DOUBLE_HORIZONTAL 0x2550
-#define BOXDRAW_DOUBLE_VERTICAL 0x2551
-#define BOXDRAW_DOWN_RIGHT_DOUBLE 0x2552
-#define BOXDRAW_DOWN_DOUBLE_RIGHT 0x2553
-#define BOXDRAW_DOUBLE_DOWN_RIGHT 0x2554
-
-#define BOXDRAW_DOWN_LEFT_DOUBLE 0x2555
-#define BOXDRAW_DOWN_DOUBLE_LEFT 0x2556
-#define BOXDRAW_DOUBLE_DOWN_LEFT 0x2557
-
-#define BOXDRAW_UP_RIGHT_DOUBLE 0x2558
-#define BOXDRAW_UP_DOUBLE_RIGHT 0x2559
-#define BOXDRAW_DOUBLE_UP_RIGHT 0x255a
-
-#define BOXDRAW_UP_LEFT_DOUBLE 0x255b
-#define BOXDRAW_UP_DOUBLE_LEFT 0x255c
-#define BOXDRAW_DOUBLE_UP_LEFT 0x255d
-
-#define BOXDRAW_VERTICAL_RIGHT_DOUBLE 0x255e
-#define BOXDRAW_VERTICAL_DOUBLE_RIGHT 0x255f
-#define BOXDRAW_DOUBLE_VERTICAL_RIGHT 0x2560
-
-#define BOXDRAW_VERTICAL_LEFT_DOUBLE 0x2561
-#define BOXDRAW_VERTICAL_DOUBLE_LEFT 0x2562
-#define BOXDRAW_DOUBLE_VERTICAL_LEFT 0x2563
-
-#define BOXDRAW_DOWN_HORIZONTAL_DOUBLE 0x2564
-#define BOXDRAW_DOWN_DOUBLE_HORIZONTAL 0x2565
-#define BOXDRAW_DOUBLE_DOWN_HORIZONTAL 0x2566
-
-#define BOXDRAW_UP_HORIZONTAL_DOUBLE 0x2567
-#define BOXDRAW_UP_DOUBLE_HORIZONTAL 0x2568
-#define BOXDRAW_DOUBLE_UP_HORIZONTAL 0x2569
-
-#define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE 0x256a
-#define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL 0x256b
-#define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL 0x256c
-
-//
-// EFI Required Block Elements Code Chart
-//
-
-#define BLOCKELEMENT_FULL_BLOCK 0x2588
-#define BLOCKELEMENT_LIGHT_SHADE 0x2591
-//
-// EFI Required Geometric Shapes Code Chart
-//
-
-#define GEOMETRICSHAPE_UP_TRIANGLE 0x25b2
-#define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba
-#define GEOMETRICSHAPE_DOWN_TRIANGLE 0x25bc
-#define GEOMETRICSHAPE_LEFT_TRIANGLE 0x25c4
-
-//
-// EFI Required Arrow shapes
-//
-
-#define ARROW_UP 0x2191
-#define ARROW_DOWN 0x2193
-
-//
-// Text input protocol
-//
-
-#define SIMPLE_TEXT_INPUT_PROTOCOL \
- { 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
-
-INTERFACE_DECL(_SIMPLE_INPUT_INTERFACE);
-
-typedef struct {
- UINT16 ScanCode;
- CHAR16 UnicodeChar;
-} EFI_INPUT_KEY;
-
-//
-// Baseline unicode control chars
-//
-
-#define CHAR_NULL 0x0000
-#define CHAR_BACKSPACE 0x0008
-#define CHAR_TAB 0x0009
-#define CHAR_LINEFEED 0x000A
-#define CHAR_CARRIAGE_RETURN 0x000D
-
-//
-// Scan codes for base line keys
-//
-
-#define SCAN_NULL 0x0000
-#define SCAN_UP 0x0001
-#define SCAN_DOWN 0x0002
-#define SCAN_RIGHT 0x0003
-#define SCAN_LEFT 0x0004
-#define SCAN_HOME 0x0005
-#define SCAN_END 0x0006
-#define SCAN_INSERT 0x0007
-#define SCAN_DELETE 0x0008
-#define SCAN_PAGE_UP 0x0009
-#define SCAN_PAGE_DOWN 0x000A
-#define SCAN_F1 0x000B
-#define SCAN_F2 0x000C
-#define SCAN_F3 0x000D
-#define SCAN_F4 0x000E
-#define SCAN_F5 0x000F
-#define SCAN_F6 0x0010
-#define SCAN_F7 0x0011
-#define SCAN_F8 0x0012
-#define SCAN_F9 0x0013
-#define SCAN_F10 0x0014
-#define SCAN_ESC 0x0017
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_INPUT_RESET) (
- IN struct _SIMPLE_INPUT_INTERFACE *This,
- IN BOOLEAN ExtendedVerification
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_INPUT_READ_KEY) (
- IN struct _SIMPLE_INPUT_INTERFACE *This,
- OUT EFI_INPUT_KEY *Key
- );
-
-typedef struct _SIMPLE_INPUT_INTERFACE {
- EFI_INPUT_RESET Reset;
- EFI_INPUT_READ_KEY ReadKeyStroke;
- EFI_EVENT WaitForKey;
-} SIMPLE_INPUT_INTERFACE;
-
-#endif
diff --git a/sys/boot/efi/include/eficonsctl.h b/sys/boot/efi/include/eficonsctl.h
deleted file mode 100644
index 68be3d69f4fd..000000000000
--- a/sys/boot/efi/include/eficonsctl.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/*-
- * Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * Original Module Name: ConsoleControl.h
- * Abstract: Abstraction of a Text mode or GOP/UGA screen
- */
-
-/* $FreeBSD$ */
-
-#ifndef _EFI_CONS_CTL_H
-#define _EFI_CONS_CTL_H
-
-#define EFI_CONSOLE_CONTROL_PROTOCOL_GUID \
- { 0xf42f7782, 0x12e, 0x4c12, {0x99, 0x56, 0x49, 0xf9, 0x43, 0x4, 0xf7, 0x21} }
-
-typedef struct _EFI_CONSOLE_CONTROL_PROTOCOL EFI_CONSOLE_CONTROL_PROTOCOL;
-
-
-typedef enum {
- EfiConsoleControlScreenText,
- EfiConsoleControlScreenGraphics,
- EfiConsoleControlScreenMaxValue
-} EFI_CONSOLE_CONTROL_SCREEN_MODE;
-
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CONSOLE_CONTROL_PROTOCOL_GET_MODE) (
- IN EFI_CONSOLE_CONTROL_PROTOCOL *This,
- OUT EFI_CONSOLE_CONTROL_SCREEN_MODE *Mode,
- OUT BOOLEAN *GopUgaExists, OPTIONAL
- OUT BOOLEAN *StdInLocked OPTIONAL
- )
-/*++
-
- Routine Description:
- Return the current video mode information. Also returns info about existence
- of Graphics Output devices or UGA Draw devices in system, and if the Std In
- device is locked. All the arguments are optional and only returned if a non
- NULL pointer is passed in.
-
- Arguments:
- This - Protocol instance pointer.
- Mode - Are we in text of grahics mode.
- GopUgaExists - TRUE if Console Spliter has found a GOP or UGA device
- StdInLocked - TRUE if StdIn device is keyboard locked
-
- Returns:
- EFI_SUCCESS - Mode information returned.
-
---*/
-;
-
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CONSOLE_CONTROL_PROTOCOL_SET_MODE) (
- IN EFI_CONSOLE_CONTROL_PROTOCOL *This,
- IN EFI_CONSOLE_CONTROL_SCREEN_MODE Mode
- )
-/*++
-
- Routine Description:
- Set the current mode to either text or graphics. Graphics is
- for Quiet Boot.
-
- Arguments:
- This - Protocol instance pointer.
- Mode - Mode to set the
-
- Returns:
- EFI_SUCCESS - Mode information returned.
-
---*/
-;
-
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_CONSOLE_CONTROL_PROTOCOL_LOCK_STD_IN) (
- IN EFI_CONSOLE_CONTROL_PROTOCOL *This,
- IN CHAR16 *Password
- )
-/*++
-
- Routine Description:
- Lock Std In devices until Password is typed.
-
- Arguments:
- This - Protocol instance pointer.
- Password - Password needed to unlock screen. NULL means unlock keyboard
-
- Returns:
- EFI_SUCCESS - Mode information returned.
- EFI_DEVICE_ERROR - Std In not locked
-
---*/
-;
-
-
-
-struct _EFI_CONSOLE_CONTROL_PROTOCOL {
- EFI_CONSOLE_CONTROL_PROTOCOL_GET_MODE GetMode;
- EFI_CONSOLE_CONTROL_PROTOCOL_SET_MODE SetMode;
- EFI_CONSOLE_CONTROL_PROTOCOL_LOCK_STD_IN LockStdIn;
-};
-
-extern EFI_GUID gEfiConsoleControlProtocolGuid;
-
-#endif
diff --git a/sys/boot/efi/include/efidebug.h b/sys/boot/efi/include/efidebug.h
deleted file mode 100644
index 5576d5f4e48c..000000000000
--- a/sys/boot/efi/include/efidebug.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/* $FreeBSD$ */
-#ifndef _EFI_DEBUG_H
-#define _EFI_DEBUG_H
-
-/*++
-
-Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- efidebug.h
-
-Abstract:
-
- EFI library debug functions
-
-
-
-Revision History
-
---*/
-
-extern UINTN EFIDebug;
-
-#if EFI_DEBUG
-
- #define DBGASSERT(a) DbgAssert(__FILE__, __LINE__, #a)
- #define DEBUG(a) DbgPrint a
-
-#else
-
- #define DBGASSERT(a)
- #define DEBUG(a)
-
-#endif
-
-#if EFI_DEBUG_CLEAR_MEMORY
-
- #define DBGSETMEM(a,l) SetMem(a,l,(CHAR8)BAD_POINTER)
-
-#else
-
- #define DBGSETMEM(a,l)
-
-#endif
-
-#define D_INIT 0x00000001 // Initialization style messages
-#define D_WARN 0x00000002 // Warnings
-#define D_LOAD 0x00000004 // Load events
-#define D_FS 0x00000008 // EFI File system
-#define D_POOL 0x00000010 // Alloc & Free's
-#define D_PAGE 0x00000020 // Alloc & Free's
-#define D_INFO 0x00000040 // Verbose
-#define D_VARIABLE 0x00000100 // Variable
-#define D_VAR 0x00000100 // Variable
-#define D_BM 0x00000400 // Boot Manager
-#define D_BLKIO 0x00001000 // BlkIo Driver
-#define D_BLKIO_ULTRA 0x00002000 // BlkIo Driver
-#define D_NET 0x00004000 // SNI Driver
-#define D_NET_ULTRA 0x00008000 // SNI Driver
-#define D_UNDI 0x00010000 // UNDI Driver
-#define D_LOADFILE 0x00020000 // UNDI Driver
-#define D_EVENT 0x00080000 // Event messages
-
-#define D_ERROR 0x80000000 // Error
-
-#define D_RESERVED 0x7ff40A80 // Bits not reserved above
-
-//
-// Current Debug level of the system, value of EFIDebug
-//
-//#define EFI_DBUG_MASK (D_ERROR | D_WARN | D_LOAD | D_BLKIO | D_INIT)
-#define EFI_DBUG_MASK (D_ERROR)
-
-//
-//
-//
-
-#if EFI_DEBUG
-
- #define ASSERT(a) if(!(a)) DBGASSERT(a)
- #define ASSERT_LOCKED(l) if(!(l)->Lock) DBGASSERT(l not locked)
- #define ASSERT_STRUCT(p,t) DBGASSERT(t not structure), p
-
-#else
-
- #define ASSERT(a)
- #define ASSERT_LOCKED(l)
- #define ASSERT_STRUCT(p,t)
-
-#endif
-
-//
-// Prototypes
-//
-
-INTN
-DbgAssert (
- CHAR8 *file,
- INTN lineno,
- CHAR8 *string
- );
-
-INTN
-DbgPrint (
- INTN mask,
- CHAR8 *format,
- ...
- );
-
-#endif
diff --git a/sys/boot/efi/include/efidef.h b/sys/boot/efi/include/efidef.h
deleted file mode 100644
index 9cc5cdcbe883..000000000000
--- a/sys/boot/efi/include/efidef.h
+++ /dev/null
@@ -1,206 +0,0 @@
-/* $FreeBSD$ */
-#ifndef _EFI_DEF_H
-#define _EFI_DEF_H
-
-/*++
-
-Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- efidef.h
-
-Abstract:
-
- EFI definitions
-
-
-
-
-Revision History
-
---*/
-
-typedef UINT16 CHAR16;
-typedef UINT8 CHAR8;
-#ifndef ACPI_THREAD_ID /* ACPI's definitions are fine */
-typedef UINT8 BOOLEAN;
-#endif
-
-#ifndef TRUE
- #define TRUE ((BOOLEAN) 1)
- #define FALSE ((BOOLEAN) 0)
-#endif
-
-#ifndef NULL
- #define NULL ((VOID *) 0)
-#endif
-
-typedef UINTN EFI_STATUS;
-typedef UINT64 EFI_LBA;
-typedef UINTN EFI_TPL;
-typedef VOID *EFI_HANDLE;
-typedef VOID *EFI_EVENT;
-
-
-//
-// Prototype argument decoration for EFI parameters to indicate
-// their direction
-//
-// IN - argument is passed into the function
-// OUT - argument (pointer) is returned from the function
-// OPTIONAL - argument is optional
-//
-
-#ifndef IN
- #define IN
- #define OUT
- #define OPTIONAL
-#endif
-
-
-//
-// A GUID
-//
-
-typedef struct {
- UINT32 Data1;
- UINT16 Data2;
- UINT16 Data3;
- UINT8 Data4[8];
-} EFI_GUID;
-
-
-//
-// Time
-//
-
-typedef struct {
- UINT16 Year; // 1998 - 20XX
- UINT8 Month; // 1 - 12
- UINT8 Day; // 1 - 31
- UINT8 Hour; // 0 - 23
- UINT8 Minute; // 0 - 59
- UINT8 Second; // 0 - 59
- UINT8 Pad1;
- UINT32 Nanosecond; // 0 - 999,999,999
- INT16 TimeZone; // -1440 to 1440 or 2047
- UINT8 Daylight;
- UINT8 Pad2;
-} EFI_TIME;
-
-// Bit definitions for EFI_TIME.Daylight
-#define EFI_TIME_ADJUST_DAYLIGHT 0x01
-#define EFI_TIME_IN_DAYLIGHT 0x02
-
-// Value definition for EFI_TIME.TimeZone
-#define EFI_UNSPECIFIED_TIMEZONE 0x07FF
-
-
-
-//
-// Networking
-//
-
-typedef struct {
- UINT8 Addr[4];
-} EFI_IPv4_ADDRESS;
-
-typedef struct {
- UINT8 Addr[16];
-} EFI_IPv6_ADDRESS;
-
-typedef struct {
- UINT8 Addr[32];
-} EFI_MAC_ADDRESS;
-
-//
-// Memory
-//
-
-typedef UINT64 EFI_PHYSICAL_ADDRESS;
-typedef UINT64 EFI_VIRTUAL_ADDRESS;
-
-typedef enum {
- AllocateAnyPages,
- AllocateMaxAddress,
- AllocateAddress,
- MaxAllocateType
-} EFI_ALLOCATE_TYPE;
-
-//Preseve the attr on any range supplied.
-//ConventialMemory must have WB,SR,SW when supplied.
-//When allocating from ConventialMemory always make it WB,SR,SW
-//When returning to ConventialMemory always make it WB,SR,SW
-//When getting the memory map, or on RT for runtime types
-
-
-typedef enum {
- EfiReservedMemoryType,
- EfiLoaderCode,
- EfiLoaderData,
- EfiBootServicesCode,
- EfiBootServicesData,
- EfiRuntimeServicesCode,
- EfiRuntimeServicesData,
- EfiConventionalMemory,
- EfiUnusableMemory,
- EfiACPIReclaimMemory,
- EfiACPIMemoryNVS,
- EfiMemoryMappedIO,
- EfiMemoryMappedIOPortSpace,
- EfiPalCode,
- EfiMaxMemoryType
-} EFI_MEMORY_TYPE;
-
-// possible caching types for the memory range
-#define EFI_MEMORY_UC 0x0000000000000001
-#define EFI_MEMORY_WC 0x0000000000000002
-#define EFI_MEMORY_WT 0x0000000000000004
-#define EFI_MEMORY_WB 0x0000000000000008
-#define EFI_MEMORY_UCE 0x0000000000000010
-
-// physical memory protection on range
-#define EFI_MEMORY_WP 0x0000000000001000
-#define EFI_MEMORY_RP 0x0000000000002000
-#define EFI_MEMORY_XP 0x0000000000004000
-
-// range requires a runtime mapping
-#define EFI_MEMORY_RUNTIME 0x8000000000000000
-
-#define EFI_MEMORY_DESCRIPTOR_VERSION 1
-typedef struct {
- UINT32 Type; // Field size is 32 bits followed by 32 bit pad
- UINT32 Pad;
- EFI_PHYSICAL_ADDRESS PhysicalStart; // Field size is 64 bits
- EFI_VIRTUAL_ADDRESS VirtualStart; // Field size is 64 bits
- UINT64 NumberOfPages; // Field size is 64 bits
- UINT64 Attribute; // Field size is 64 bits
-} EFI_MEMORY_DESCRIPTOR;
-
-//
-// International Language
-//
-
-typedef UINT8 ISO_639_2;
-#define ISO_639_2_ENTRY_SIZE 3
-
-//
-//
-//
-
-#define EFI_PAGE_SIZE 4096
-#define EFI_PAGE_MASK 0xFFF
-#define EFI_PAGE_SHIFT 12
-
-#define EFI_SIZE_TO_PAGES(a) \
- ( ((a) >> EFI_PAGE_SHIFT) + (((a) & EFI_PAGE_MASK) ? 1 : 0) )
-
-#endif
diff --git a/sys/boot/efi/include/efidevp.h b/sys/boot/efi/include/efidevp.h
deleted file mode 100644
index cda6b41fdd4f..000000000000
--- a/sys/boot/efi/include/efidevp.h
+++ /dev/null
@@ -1,454 +0,0 @@
-/* $FreeBSD$ */
-#ifndef _DEVPATH_H
-#define _DEVPATH_H
-
-/*++
-
-Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- devpath.h
-
-Abstract:
-
- Defines for parsing the EFI Device Path structures
-
-
-
-Revision History
-
---*/
-
-//
-// Device Path structures - Section C
-//
-
-typedef struct _EFI_DEVICE_PATH {
- UINT8 Type;
- UINT8 SubType;
- UINT8 Length[2];
-} EFI_DEVICE_PATH;
-
-#define EFI_DP_TYPE_MASK 0x7F
-#define EFI_DP_TYPE_UNPACKED 0x80
-
-#define END_DEVICE_PATH_TYPE 0x7f
-
-#define END_ENTIRE_DEVICE_PATH_SUBTYPE 0xff
-#define END_INSTANCE_DEVICE_PATH_SUBTYPE 0x01
-#define END_DEVICE_PATH_LENGTH (sizeof(EFI_DEVICE_PATH))
-
-
-#define DP_IS_END_TYPE(a)
-#define DP_IS_END_SUBTYPE(a) ( ((a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE )
-
-#define DevicePathType(a) ( ((a)->Type) & EFI_DP_TYPE_MASK )
-#define DevicePathSubType(a) ( (a)->SubType )
-#define DevicePathNodeLength(a) ((size_t)(((a)->Length[0]) | ((a)->Length[1] << 8)))
-#define NextDevicePathNode(a) ( (EFI_DEVICE_PATH *) ( ((UINT8 *) (a)) + DevicePathNodeLength(a)))
-#define IsDevicePathType(a, t) ( DevicePathType(a) == t )
-#define IsDevicePathEndType(a) IsDevicePathType(a, END_DEVICE_PATH_TYPE)
-#define IsDevicePathEndSubType(a) ( (a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE )
-#define IsDevicePathEnd(a) ( IsDevicePathEndType(a) && IsDevicePathEndSubType(a) )
-#define IsDevicePathUnpacked(a) ( (a)->Type & EFI_DP_TYPE_UNPACKED )
-
-
-#define SetDevicePathNodeLength(a,l) { \
- (a)->Length[0] = (UINT8) (l); \
- (a)->Length[1] = (UINT8) ((l) >> 8); \
- }
-
-#define SetDevicePathEndNode(a) { \
- (a)->Type = END_DEVICE_PATH_TYPE; \
- (a)->SubType = END_ENTIRE_DEVICE_PATH_SUBTYPE; \
- (a)->Length[0] = sizeof(EFI_DEVICE_PATH); \
- (a)->Length[1] = 0; \
- }
-
-/*
- *
- */
-#define HARDWARE_DEVICE_PATH 0x01
-
-#define HW_PCI_DP 0x01
-typedef struct _PCI_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT8 Function;
- UINT8 Device;
-} PCI_DEVICE_PATH;
-
-#define HW_PCCARD_DP 0x02
-typedef struct _PCCARD_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT8 FunctionNumber;
-} PCCARD_DEVICE_PATH;
-
-#define HW_MEMMAP_DP 0x03
-typedef struct _MEMMAP_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT32 MemoryType;
- EFI_PHYSICAL_ADDRESS StartingAddress;
- EFI_PHYSICAL_ADDRESS EndingAddress;
-} MEMMAP_DEVICE_PATH;
-
-#define HW_VENDOR_DP 0x04
-typedef struct _VENDOR_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- EFI_GUID Guid;
-} VENDOR_DEVICE_PATH;
-
-#define UNKNOWN_DEVICE_GUID \
- { 0xcf31fac5, 0xc24e, 0x11d2, {0x85, 0xf3, 0x0, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b} }
-
-typedef struct _UKNOWN_DEVICE_VENDOR_DP {
- VENDOR_DEVICE_PATH DevicePath;
- UINT8 LegacyDriveLetter;
-} UNKNOWN_DEVICE_VENDOR_DEVICE_PATH;
-
-#define HW_CONTROLLER_DP 0x05
-typedef struct _CONTROLLER_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT32 Controller;
-} CONTROLLER_DEVICE_PATH;
-
-/*
- *
- */
-#define ACPI_DEVICE_PATH 0x02
-
-#define ACPI_DP 0x01
-typedef struct _ACPI_HID_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT32 HID;
- UINT32 UID;
-} ACPI_HID_DEVICE_PATH;
-
-#define ACPI_EXTENDED_DP 0x02
-typedef struct _ACPI_EXTENDED_HID_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT32 HID;
- UINT32 UID;
- UINT32 CID;
-} ACPI_EXTENDED_HID_DEVICE_PATH;
-
-//
-// EISA ID Macro
-// EISA ID Definition 32-bits
-// bits[15:0] - three character compressed ASCII EISA ID.
-// bits[31:16] - binary number
-// Compressed ASCII is 5 bits per character 0b00001 = 'A' 0b11010 = 'Z'
-//
-#define PNP_EISA_ID_CONST 0x41d0
-#define EISA_ID(_Name, _Num) ((UINT32) ((_Name) | (_Num) << 16))
-#define EISA_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
-#define EFI_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
-
-#define PNP_EISA_ID_MASK 0xffff
-#define EISA_ID_TO_NUM(_Id) ((_Id) >> 16)
-/*
- *
- */
-#define MESSAGING_DEVICE_PATH 0x03
-
-#define MSG_ATAPI_DP 0x01
-typedef struct _ATAPI_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT8 PrimarySecondary;
- UINT8 SlaveMaster;
- UINT16 Lun;
-} ATAPI_DEVICE_PATH;
-
-#define MSG_SCSI_DP 0x02
-typedef struct _SCSI_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT16 Pun;
- UINT16 Lun;
-} SCSI_DEVICE_PATH;
-
-#define MSG_FIBRECHANNEL_DP 0x03
-typedef struct _FIBRECHANNEL_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT32 Reserved;
- UINT64 WWN;
- UINT64 Lun;
-} FIBRECHANNEL_DEVICE_PATH;
-
-#define MSG_1394_DP 0x04
-typedef struct _F1394_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT32 Reserved;
- UINT64 Guid;
-} F1394_DEVICE_PATH;
-
-#define MSG_USB_DP 0x05
-typedef struct _USB_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT8 ParentPortNumber;
- UINT8 InterfaceNumber;
-} USB_DEVICE_PATH;
-
-#define MSG_USB_CLASS_DP 0x0F
-typedef struct _USB_CLASS_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT16 VendorId;
- UINT16 ProductId;
- UINT8 DeviceClass;
- UINT8 DeviceSubClass;
- UINT8 DeviceProtocol;
-} USB_CLASS_DEVICE_PATH;
-
-#define MSG_I2O_DP 0x06
-typedef struct _I2O_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT32 Tid;
-} I2O_DEVICE_PATH;
-
-#define MSG_MAC_ADDR_DP 0x0b
-typedef struct _MAC_ADDR_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- EFI_MAC_ADDRESS MacAddress;
- UINT8 IfType;
-} MAC_ADDR_DEVICE_PATH;
-
-#define MSG_IPv4_DP 0x0c
-typedef struct _IPv4_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- EFI_IPv4_ADDRESS LocalIpAddress;
- EFI_IPv4_ADDRESS RemoteIpAddress;
- UINT16 LocalPort;
- UINT16 RemotePort;
- UINT16 Protocol;
- BOOLEAN StaticIpAddress;
-} IPv4_DEVICE_PATH;
-
-#define MSG_IPv6_DP 0x0d
-typedef struct _IPv6_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- EFI_IPv6_ADDRESS LocalIpAddress;
- EFI_IPv6_ADDRESS RemoteIpAddress;
- UINT16 LocalPort;
- UINT16 RemotePort;
- UINT16 Protocol;
- BOOLEAN StaticIpAddress;
-} IPv6_DEVICE_PATH;
-
-#define MSG_INFINIBAND_DP 0x09
-typedef struct _INFINIBAND_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT32 ResourceFlags;
- UINT8 PortGid[16];
- UINT64 ServiceId;
- UINT64 TargetPortId;
- UINT64 DeviceId;
-} INFINIBAND_DEVICE_PATH;
-
-#define INFINIBAND_RESOURCE_FLAG_IOC_SERVICE 0x01
-#define INFINIBAND_RESOURCE_FLAG_EXTENDED_BOOT_ENVIRONMENT 0x02
-#define INFINIBAND_RESOURCE_FLAG_CONSOLE_PROTOCOL 0x04
-#define INFINIBAND_RESOURCE_FLAG_STORAGE_PROTOCOL 0x08
-#define INFINIBAND_RESOURCE_FLAG_NETWORK_PROTOCOL 0x10
-
-#define MSG_UART_DP 0x0e
-typedef struct _UART_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT32 Reserved;
- UINT64 BaudRate;
- UINT8 DataBits;
- UINT8 Parity;
- UINT8 StopBits;
-} UART_DEVICE_PATH;
-
-#define MSG_VENDOR_DP 0x0A
-/* Use VENDOR_DEVICE_PATH struct */
-
-#define DEVICE_PATH_MESSAGING_PC_ANSI \
- { 0xe0c14753, 0xf9be, 0x11d2, {0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
-
-#define DEVICE_PATH_MESSAGING_VT_100 \
- { 0xdfa66065, 0xb419, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
-
-#define DEVICE_PATH_MESSAGING_VT_100_PLUS \
- { 0x7baec70b, 0x57e0, 0x4c76, {0x8e, 0x87, 0x2f, 0x9e, 0x28, 0x08, 0x83, 0x43} }
-
-#define DEVICE_PATH_MESSAGING_VT_UTF8 \
- { 0xad15a0d6, 0x8bec, 0x4acf, {0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 0x88} }
-
-#define MSG_SATA_DP 0x12
-typedef struct _SATA_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT16 HBAPortNumber;
- UINT16 PortMultiplierPortNumber;
- UINT16 Lun;
-} SATA_DEVICE_PATH;
-
-#define MEDIA_DEVICE_PATH 0x04
-
-#define MEDIA_HARDDRIVE_DP 0x01
-typedef struct _HARDDRIVE_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT32 PartitionNumber;
- UINT64 PartitionStart;
- UINT64 PartitionSize;
- UINT8 Signature[16];
- UINT8 MBRType;
- UINT8 SignatureType;
-} HARDDRIVE_DEVICE_PATH;
-
-#define MBR_TYPE_PCAT 0x01
-#define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02
-
-#define SIGNATURE_TYPE_MBR 0x01
-#define SIGNATURE_TYPE_GUID 0x02
-
-#define MEDIA_CDROM_DP 0x02
-typedef struct _CDROM_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT32 BootEntry;
- UINT64 PartitionStart;
- UINT64 PartitionSize;
-} CDROM_DEVICE_PATH;
-
-#define MEDIA_VENDOR_DP 0x03
-/* Use VENDOR_DEVICE_PATH struct */
-
-#define MEDIA_FILEPATH_DP 0x04
-typedef struct _FILEPATH_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- CHAR16 PathName[1];
-} FILEPATH_DEVICE_PATH;
-
-#define SIZE_OF_FILEPATH_DEVICE_PATH EFI_FIELD_OFFSET(FILEPATH_DEVICE_PATH,PathName)
-
-#define MEDIA_PROTOCOL_DP 0x05
-typedef struct _MEDIA_PROTOCOL_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- EFI_GUID Protocol;
-} MEDIA_PROTOCOL_DEVICE_PATH;
-
-
-#define BBS_DEVICE_PATH 0x05
-#define BBS_BBS_DP 0x01
-typedef struct _BBS_BBS_DEVICE_PATH {
- EFI_DEVICE_PATH Header;
- UINT16 DeviceType;
- UINT16 StatusFlag;
- CHAR8 String[1];
-} BBS_BBS_DEVICE_PATH;
-
-/* DeviceType definitions - from BBS specification */
-#define BBS_TYPE_FLOPPY 0x01
-#define BBS_TYPE_HARDDRIVE 0x02
-#define BBS_TYPE_CDROM 0x03
-#define BBS_TYPE_PCMCIA 0x04
-#define BBS_TYPE_USB 0x05
-#define BBS_TYPE_EMBEDDED_NETWORK 0x06
-#define BBS_TYPE_DEV 0x80
-#define BBS_TYPE_UNKNOWN 0xFF
-
-typedef union {
- EFI_DEVICE_PATH DevPath;
- PCI_DEVICE_PATH Pci;
- PCCARD_DEVICE_PATH PcCard;
- MEMMAP_DEVICE_PATH MemMap;
- VENDOR_DEVICE_PATH Vendor;
- UNKNOWN_DEVICE_VENDOR_DEVICE_PATH UnknownVendor;
- CONTROLLER_DEVICE_PATH Controller;
- ACPI_HID_DEVICE_PATH Acpi;
-
- ATAPI_DEVICE_PATH Atapi;
- SCSI_DEVICE_PATH Scsi;
- FIBRECHANNEL_DEVICE_PATH FibreChannel;
-
- F1394_DEVICE_PATH F1394;
- USB_DEVICE_PATH Usb;
- USB_CLASS_DEVICE_PATH UsbClass;
- I2O_DEVICE_PATH I2O;
- MAC_ADDR_DEVICE_PATH MacAddr;
- IPv4_DEVICE_PATH Ipv4;
- IPv6_DEVICE_PATH Ipv6;
- INFINIBAND_DEVICE_PATH InfiniBand;
- UART_DEVICE_PATH Uart;
-
- HARDDRIVE_DEVICE_PATH HardDrive;
- CDROM_DEVICE_PATH CD;
-
- FILEPATH_DEVICE_PATH FilePath;
- MEDIA_PROTOCOL_DEVICE_PATH MediaProtocol;
-
- BBS_BBS_DEVICE_PATH Bbs;
-
-} EFI_DEV_PATH;
-
-typedef union {
- EFI_DEVICE_PATH *DevPath;
- PCI_DEVICE_PATH *Pci;
- PCCARD_DEVICE_PATH *PcCard;
- MEMMAP_DEVICE_PATH *MemMap;
- VENDOR_DEVICE_PATH *Vendor;
- UNKNOWN_DEVICE_VENDOR_DEVICE_PATH *UnknownVendor;
- CONTROLLER_DEVICE_PATH *Controller;
- ACPI_HID_DEVICE_PATH *Acpi;
- ACPI_EXTENDED_HID_DEVICE_PATH *ExtendedAcpi;
-
- ATAPI_DEVICE_PATH *Atapi;
- SCSI_DEVICE_PATH *Scsi;
- FIBRECHANNEL_DEVICE_PATH *FibreChannel;
-
- F1394_DEVICE_PATH *F1394;
- USB_DEVICE_PATH *Usb;
- USB_CLASS_DEVICE_PATH *UsbClass;
- I2O_DEVICE_PATH *I2O;
- MAC_ADDR_DEVICE_PATH *MacAddr;
- IPv4_DEVICE_PATH *Ipv4;
- IPv6_DEVICE_PATH *Ipv6;
- INFINIBAND_DEVICE_PATH *InfiniBand;
- UART_DEVICE_PATH *Uart;
-
- HARDDRIVE_DEVICE_PATH *HardDrive;
-
- FILEPATH_DEVICE_PATH *FilePath;
- MEDIA_PROTOCOL_DEVICE_PATH *MediaProtocol;
-
- CDROM_DEVICE_PATH *CD;
- BBS_BBS_DEVICE_PATH *Bbs;
-
-} EFI_DEV_PATH_PTR;
-
-#define EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID \
- { 0xbc62157e, 0x3e33, 0x4fec, { 0x99, 0x20, 0x2d, 0x3b, 0x36, 0xd7, 0x50, 0xdf } }
-
-#define EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID \
- { 0x8b843e20, 0x8132, 0x4852, { 0x90, 0xcc, 0x55, 0x1a, 0x4e, 0x4a, 0x7f, 0x1c } }
-
-INTERFACE_DECL(_EFI_DEVICE_PATH_PROTOCOL);
-
-typedef
-CHAR16*
-(EFIAPI *EFI_DEVICE_PATH_TO_TEXT_NODE) (
- IN struct _EFI_DEVICE_PATH *This,
- IN BOOLEAN DisplayOnly,
- IN BOOLEAN AllowShortCuts
- );
-
-typedef
-CHAR16*
-(EFIAPI *EFI_DEVICE_PATH_TO_TEXT_PATH) (
- IN struct _EFI_DEVICE_PATH *This,
- IN BOOLEAN DisplayOnly,
- IN BOOLEAN AllowShortCuts
- );
-
-typedef struct _EFI_DEVICE_PATH_TO_TEXT_PROTOCOL {
- EFI_DEVICE_PATH_TO_TEXT_NODE ConvertDeviceNodeToText;
- EFI_DEVICE_PATH_TO_TEXT_PATH ConvertDevicePathToText;
-} EFI_DEVICE_PATH_TO_TEXT_PROTOCOL;
-
-#endif
diff --git a/sys/boot/efi/include/efierr.h b/sys/boot/efi/include/efierr.h
deleted file mode 100644
index a8b655718599..000000000000
--- a/sys/boot/efi/include/efierr.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* $FreeBSD$ */
-#ifndef _EFI_ERR_H
-#define _EFI_ERR_H
-
-/*++
-
-Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- efierr.h
-
-Abstract:
-
- EFI error codes
-
-
-
-
-Revision History
-
---*/
-
-
-#define EFIWARN(a) (a)
-#define EFI_ERROR(a) (((INTN) a) < 0)
-#define EFI_ERROR_CODE(a) (unsigned long)(a & ~EFI_ERROR_MASK)
-
-
-#define EFI_SUCCESS 0
-#define EFI_LOAD_ERROR EFIERR(1)
-#define EFI_INVALID_PARAMETER EFIERR(2)
-#define EFI_UNSUPPORTED EFIERR(3)
-#define EFI_BAD_BUFFER_SIZE EFIERR(4)
-#define EFI_BUFFER_TOO_SMALL EFIERR(5)
-#define EFI_NOT_READY EFIERR(6)
-#define EFI_DEVICE_ERROR EFIERR(7)
-#define EFI_WRITE_PROTECTED EFIERR(8)
-#define EFI_OUT_OF_RESOURCES EFIERR(9)
-#define EFI_VOLUME_CORRUPTED EFIERR(10)
-#define EFI_VOLUME_FULL EFIERR(11)
-#define EFI_NO_MEDIA EFIERR(12)
-#define EFI_MEDIA_CHANGED EFIERR(13)
-#define EFI_NOT_FOUND EFIERR(14)
-#define EFI_ACCESS_DENIED EFIERR(15)
-#define EFI_NO_RESPONSE EFIERR(16)
-#define EFI_NO_MAPPING EFIERR(17)
-#define EFI_TIMEOUT EFIERR(18)
-#define EFI_NOT_STARTED EFIERR(19)
-#define EFI_ALREADY_STARTED EFIERR(20)
-#define EFI_ABORTED EFIERR(21)
-#define EFI_ICMP_ERROR EFIERR(22)
-#define EFI_TFTP_ERROR EFIERR(23)
-#define EFI_PROTOCOL_ERROR EFIERR(24)
-
-#define EFI_WARN_UNKNOWN_GLYPH EFIWARN(1)
-#define EFI_WARN_DELETE_FAILURE EFIWARN(2)
-#define EFI_WARN_WRITE_FAILURE EFIWARN(3)
-#define EFI_WARN_BUFFER_TOO_SMALL EFIWARN(4)
-
-#endif
diff --git a/sys/boot/efi/include/efifpswa.h b/sys/boot/efi/include/efifpswa.h
deleted file mode 100644
index 21823c5ff6f1..000000000000
--- a/sys/boot/efi/include/efifpswa.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* $FreeBSD$ */
-#ifndef _EFI_FPSWA_H
-#define _EFI_FPSWA_H
-
-/*
- * EFI FP SWA Driver (Floating Point Software Assist)
- */
-
-#define EFI_INTEL_FPSWA \
- { 0xc41b6531, 0x97b9, 0x11d3, {0x9a, 0x29, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
-
-INTERFACE_DECL(_FPSWA_INTERFACE);
-
-typedef struct _FPSWA_RET {
- UINT64 status;
- UINT64 err1;
- UINT64 err2;
- UINT64 err3;
-} FPSWA_RET;
-
-typedef
-FPSWA_RET
-(EFIAPI *EFI_FPSWA) (
- IN UINTN TrapType,
- IN OUT VOID *Bundle,
- IN OUT UINT64 *pipsr,
- IN OUT UINT64 *pfsr,
- IN OUT UINT64 *pisr,
- IN OUT UINT64 *ppreds,
- IN OUT UINT64 *pifs,
- IN OUT VOID *fp_state
- );
-
-typedef struct _FPSWA_INTERFACE {
- UINT32 Revision;
- UINT32 Reserved;
- EFI_FPSWA Fpswa;
-} FPSWA_INTERFACE;
-
-#endif
diff --git a/sys/boot/efi/include/efifs.h b/sys/boot/efi/include/efifs.h
deleted file mode 100644
index 58febb66eb75..000000000000
--- a/sys/boot/efi/include/efifs.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/* $FreeBSD$ */
-#ifndef _EFI_FS_H
-#define _EFI_FS_H
-
-/*++
-
-Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- efifs.h
-
-Abstract:
-
- EFI File System structures
-
-
-
-Revision History
-
---*/
-
-
-//
-// EFI Partition header (normaly starts in LBA 1)
-//
-
-#define EFI_PARTITION_SIGNATURE 0x5053595320494249
-#define EFI_PARTITION_REVISION 0x00010001
-#define MIN_EFI_PARTITION_BLOCK_SIZE 512
-#define EFI_PARTITION_LBA 1
-
-typedef struct _EFI_PARTITION_HEADER {
- EFI_TABLE_HEADER Hdr;
- UINT32 DirectoryAllocationNumber;
- UINT32 BlockSize;
- EFI_LBA FirstUsableLba;
- EFI_LBA LastUsableLba;
- EFI_LBA UnusableSpace;
- EFI_LBA FreeSpace;
- EFI_LBA RootFile;
- EFI_LBA SecutiryFile;
-} EFI_PARTITION_HEADER;
-
-
-//
-// File header
-//
-
-#define EFI_FILE_HEADER_SIGNATURE 0x454c494620494249
-#define EFI_FILE_HEADER_REVISION 0x00010000
-#define EFI_FILE_STRING_SIZE 260
-
-typedef struct _EFI_FILE_HEADER {
- EFI_TABLE_HEADER Hdr;
- UINT32 Class;
- UINT32 LBALOffset;
- EFI_LBA Parent;
- UINT64 FileSize;
- UINT64 FileAttributes;
- EFI_TIME FileCreateTime;
- EFI_TIME FileModificationTime;
- EFI_GUID VendorGuid;
- CHAR16 FileString[EFI_FILE_STRING_SIZE];
-} EFI_FILE_HEADER;
-
-
-//
-// Return the file's first LBAL which is in the same
-// logical block as the file header
-//
-
-#define EFI_FILE_LBAL(a) ((EFI_LBAL *) (((CHAR8 *) (a)) + (a)->LBALOffset))
-
-#define EFI_FILE_CLASS_FREE_SPACE 1
-#define EFI_FILE_CLASS_EMPTY 2
-#define EFI_FILE_CLASS_NORMAL 3
-
-
-//
-// Logical Block Address List - the fundemental block
-// description structure
-//
-
-#define EFI_LBAL_SIGNATURE 0x4c41424c20494249
-#define EFI_LBAL_REVISION 0x00010000
-
-typedef struct _EFI_LBAL {
- EFI_TABLE_HEADER Hdr;
- UINT32 Class;
- EFI_LBA Parent;
- EFI_LBA Next;
- UINT32 ArraySize;
- UINT32 ArrayCount;
-} EFI_LBAL;
-
-// Array size
-#define EFI_LBAL_ARRAY_SIZE(lbal,offs,blks) \
- (((blks) - (offs) - (lbal)->Hdr.HeaderSize) / sizeof(EFI_RL))
-
-//
-// Logical Block run-length
-//
-
-typedef struct {
- EFI_LBA Start;
- UINT64 Length;
-} EFI_RL;
-
-//
-// Return the run-length structure from an LBAL header
-//
-
-#define EFI_LBAL_RL(a) ((EFI_RL*) (((CHAR8 *) (a)) + (a)->Hdr.HeaderSize))
-
-#endif
diff --git a/sys/boot/efi/include/efigop.h b/sys/boot/efi/include/efigop.h
deleted file mode 100644
index 104fa6e44b5a..000000000000
--- a/sys/boot/efi/include/efigop.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/* $FreeBSD$ */
-/*++
-
-Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- efigop.h
-
-Abstract:
- Info about framebuffers
-
-
-
-
-Revision History
-
---*/
-
-#ifndef _EFIGOP_H
-#define _EFIGOP_H
-
-#define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
- { 0x9042a9de, 0x23dc, 0x4a38, {0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a} }
-
-INTERFACE_DECL(_EFI_GRAPHICS_OUTPUT);
-
-typedef struct {
- UINT32 RedMask;
- UINT32 GreenMask;
- UINT32 BlueMask;
- UINT32 ReservedMask;
-} EFI_PIXEL_BITMASK;
-
-typedef enum {
- PixelRedGreenBlueReserved8BitPerColor,
- PixelBlueGreenRedReserved8BitPerColor,
- PixelBitMask,
- PixelBltOnly,
- PixelFormatMax,
-} EFI_GRAPHICS_PIXEL_FORMAT;
-
-typedef struct {
- UINT32 Version;
- UINT32 HorizontalResolution;
- UINT32 VerticalResolution;
- EFI_GRAPHICS_PIXEL_FORMAT PixelFormat;
- EFI_PIXEL_BITMASK PixelInformation;
- UINT32 PixelsPerScanLine;
-} EFI_GRAPHICS_OUTPUT_MODE_INFORMATION;
-
-typedef struct {
- UINT32 MaxMode;
- UINT32 Mode;
- EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info;
- UINTN SizeOfInfo;
- EFI_PHYSICAL_ADDRESS FrameBufferBase;
- UINTN FrameBufferSize;
-} EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE;
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE) (
- IN struct _EFI_GRAPHICS_OUTPUT *This,
- IN UINT32 ModeNumber,
- OUT UINTN *SizeOfInfo,
- OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE) (
- IN struct _EFI_GRAPHICS_OUTPUT *This,
- IN UINT32 ModeNumber
- );
-
-typedef struct {
- UINT8 Blue;
- UINT8 Green;
- UINT8 Red;
- UINT8 Reserved;
-} EFI_GRAPHICS_OUTPUT_BLT_PIXEL;
-
-typedef enum {
- EfiBltVideoFill,
- EfiBltVideoToBltBuffer,
- EfiBltBufferToVideo,
- EfiBltVideoToVideo,
- EfiGraphcisOutputBltOperationMax,
-} EFI_GRAPHICS_OUTPUT_BLT_OPERATION;
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT) (
- IN struct _EFI_GRAPHICS_OUTPUT *This,
- IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer,
- IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,
- IN UINTN SourceX,
- IN UINTN SourceY,
- IN UINTN DestinationX,
- IN UINTN DestinationY,
- IN UINTN Width,
- IN UINTN Height,
- IN UINTN Delta
- );
-
-typedef struct _EFI_GRAPHICS_OUTPUT {
- EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE QueryMode;
- EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE SetMode;
- EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT Blt;
- EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Mode;
-} EFI_GRAPHICS_OUTPUT;
-
-#endif /* _EFIGOP_H */
diff --git a/sys/boot/efi/include/efilib.h b/sys/boot/efi/include/efilib.h
deleted file mode 100644
index 8721bc576626..000000000000
--- a/sys/boot/efi/include/efilib.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/*-
- * Copyright (c) 2000 Doug Rabson
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef _LOADER_EFILIB_H
-#define _LOADER_EFILIB_H
-
-#include <stand.h>
-#include <stdbool.h>
-#include <sys/queue.h>
-
-extern EFI_HANDLE IH;
-extern EFI_SYSTEM_TABLE *ST;
-extern EFI_BOOT_SERVICES *BS;
-extern EFI_RUNTIME_SERVICES *RS;
-
-extern struct devsw efipart_fddev;
-extern struct devsw efipart_cddev;
-extern struct devsw efipart_hddev;
-extern struct devsw efinet_dev;
-extern struct netif_driver efinetif;
-
-/* EFI block device data, included here to help efi_zfs_probe() */
-typedef STAILQ_HEAD(pdinfo_list, pdinfo) pdinfo_list_t;
-
-typedef struct pdinfo
-{
- STAILQ_ENTRY(pdinfo) pd_link; /* link in device list */
- pdinfo_list_t pd_part; /* list of partitions */
- EFI_HANDLE pd_handle;
- EFI_HANDLE pd_alias;
- EFI_DEVICE_PATH *pd_devpath;
- EFI_BLOCK_IO *pd_blkio;
- uint32_t pd_unit; /* unit number */
- uint32_t pd_open; /* reference counter */
- void *pd_bcache; /* buffer cache data */
-} pdinfo_t;
-
-pdinfo_list_t *efiblk_get_pdinfo_list(struct devsw *dev);
-pdinfo_t *efiblk_get_pdinfo(struct devdesc *dev);
-
-void *efi_get_table(EFI_GUID *tbl);
-
-int efi_getdev(void **vdev, const char *devspec, const char **path);
-char *efi_fmtdev(void *vdev);
-int efi_setcurrdev(struct env_var *ev, int flags, const void *value);
-
-
-int efi_register_handles(struct devsw *, EFI_HANDLE *, EFI_HANDLE *, int);
-EFI_HANDLE efi_find_handle(struct devsw *, int);
-int efi_handle_lookup(EFI_HANDLE, struct devsw **, int *, uint64_t *);
-int efi_handle_update_dev(EFI_HANDLE, struct devsw *, int, uint64_t);
-
-EFI_DEVICE_PATH *efi_lookup_image_devpath(EFI_HANDLE);
-EFI_DEVICE_PATH *efi_lookup_devpath(EFI_HANDLE);
-EFI_HANDLE efi_devpath_handle(EFI_DEVICE_PATH *);
-EFI_DEVICE_PATH *efi_devpath_last_node(EFI_DEVICE_PATH *);
-EFI_DEVICE_PATH *efi_devpath_trim(EFI_DEVICE_PATH *);
-bool efi_devpath_match(EFI_DEVICE_PATH *, EFI_DEVICE_PATH *);
-bool efi_devpath_is_prefix(EFI_DEVICE_PATH *, EFI_DEVICE_PATH *);
-CHAR16 *efi_devpath_name(EFI_DEVICE_PATH *);
-void efi_free_devpath_name(CHAR16 *);
-
-int efi_status_to_errno(EFI_STATUS);
-EFI_STATUS errno_to_efi_status(int errno);
-
-void efi_time_init(void);
-void efi_time_fini(void);
-
-EFI_STATUS efi_main(EFI_HANDLE Ximage, EFI_SYSTEM_TABLE* Xsystab);
-
-EFI_STATUS main(int argc, CHAR16 *argv[]);
-void efi_exit(EFI_STATUS status) __dead2;
-void delay(int usecs);
-
-/* EFI environment initialization. */
-void efi_init_environment(void);
-
-/* CHAR16 utility functions. */
-int wcscmp(CHAR16 *, CHAR16 *);
-void cpy8to16(const char *, CHAR16 *, size_t);
-void cpy16to8(const CHAR16 *, char *, size_t);
-
-#endif /* _LOADER_EFILIB_H */
diff --git a/sys/boot/efi/include/efinet.h b/sys/boot/efi/include/efinet.h
deleted file mode 100644
index 3ac58b2431ca..000000000000
--- a/sys/boot/efi/include/efinet.h
+++ /dev/null
@@ -1,348 +0,0 @@
-/* $FreeBSD$ */
-#ifndef _EFINET_H
-#define _EFINET_H
-
-
-/*++
-Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
- efinet.h
-
-Abstract:
- EFI Simple Network protocol
-
-Revision History
---*/
-
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Simple Network Protocol
-//
-
-#define EFI_SIMPLE_NETWORK_PROTOCOL \
- { 0xA19832B9, 0xAC25, 0x11D3, {0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
-
-
-INTERFACE_DECL(_EFI_SIMPLE_NETWORK);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-typedef struct {
- //
- // Total number of frames received. Includes frames with errors and
- // dropped frames.
- //
- UINT64 RxTotalFrames;
-
- //
- // Number of valid frames received and copied into receive buffers.
- //
- UINT64 RxGoodFrames;
-
- //
- // Number of frames below the minimum length for the media.
- // This would be <64 for ethernet.
- //
- UINT64 RxUndersizeFrames;
-
- //
- // Number of frames longer than the maxminum length for the
- // media. This would be >1500 for ethernet.
- //
- UINT64 RxOversizeFrames;
-
- //
- // Valid frames that were dropped because receive buffers were full.
- //
- UINT64 RxDroppedFrames;
-
- //
- // Number of valid unicast frames received and not dropped.
- //
- UINT64 RxUnicastFrames;
-
- //
- // Number of valid broadcast frames received and not dropped.
- //
- UINT64 RxBroadcastFrames;
-
- //
- // Number of valid mutlicast frames received and not dropped.
- //
- UINT64 RxMulticastFrames;
-
- //
- // Number of frames w/ CRC or alignment errors.
- //
- UINT64 RxCrcErrorFrames;
-
- //
- // Total number of bytes received. Includes frames with errors
- // and dropped frames.
- //
- UINT64 RxTotalBytes;
-
- //
- // Transmit statistics.
- //
- UINT64 TxTotalFrames;
- UINT64 TxGoodFrames;
- UINT64 TxUndersizeFrames;
- UINT64 TxOversizeFrames;
- UINT64 TxDroppedFrames;
- UINT64 TxUnicastFrames;
- UINT64 TxBroadcastFrames;
- UINT64 TxMulticastFrames;
- UINT64 TxCrcErrorFrames;
- UINT64 TxTotalBytes;
-
- //
- // Number of collisions detection on this subnet.
- //
- UINT64 Collisions;
-
- //
- // Number of frames destined for unsupported protocol.
- //
- UINT64 UnsupportedProtocol;
-
-} EFI_NETWORK_STATISTICS;
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-typedef enum {
- EfiSimpleNetworkStopped,
- EfiSimpleNetworkStarted,
- EfiSimpleNetworkInitialized,
- EfiSimpleNetworkMaxState
-} EFI_SIMPLE_NETWORK_STATE;
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-#define EFI_SIMPLE_NETWORK_RECEIVE_UNICAST 0x01
-#define EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST 0x02
-#define EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST 0x04
-#define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS 0x08
-#define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST 0x10
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-#define EFI_SIMPLE_NETWORK_RECEIVE_INTERRUPT 0x01
-#define EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT 0x02
-#define EFI_SIMPLE_NETWORK_COMMAND_INTERRUPT 0x04
-#define EFI_SIMPLE_NETWORK_SOFTWARE_INTERRUPT 0x08
-
-///////////////////////////////////////////////////////////////////////////////
-//
-#define MAX_MCAST_FILTER_CNT 16
-typedef struct {
- UINT32 State;
- UINT32 HwAddressSize;
- UINT32 MediaHeaderSize;
- UINT32 MaxPacketSize;
- UINT32 NvRamSize;
- UINT32 NvRamAccessSize;
- UINT32 ReceiveFilterMask;
- UINT32 ReceiveFilterSetting;
- UINT32 MaxMCastFilterCount;
- UINT32 MCastFilterCount;
- EFI_MAC_ADDRESS MCastFilter[MAX_MCAST_FILTER_CNT];
- EFI_MAC_ADDRESS CurrentAddress;
- EFI_MAC_ADDRESS BroadcastAddress;
- EFI_MAC_ADDRESS PermanentAddress;
- UINT8 IfType;
- BOOLEAN MacAddressChangeable;
- BOOLEAN MultipleTxSupported;
- BOOLEAN MediaPresentSupported;
- BOOLEAN MediaPresent;
-} EFI_SIMPLE_NETWORK_MODE;
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SIMPLE_NETWORK_START) (
- IN struct _EFI_SIMPLE_NETWORK *This
-);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SIMPLE_NETWORK_STOP) (
- IN struct _EFI_SIMPLE_NETWORK *This
-);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SIMPLE_NETWORK_INITIALIZE) (
- IN struct _EFI_SIMPLE_NETWORK *This,
- IN UINTN ExtraRxBufferSize OPTIONAL,
- IN UINTN ExtraTxBufferSize OPTIONAL
-);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SIMPLE_NETWORK_RESET) (
- IN struct _EFI_SIMPLE_NETWORK *This,
- IN BOOLEAN ExtendedVerification
-);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SIMPLE_NETWORK_SHUTDOWN) (
- IN struct _EFI_SIMPLE_NETWORK *This
-);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SIMPLE_NETWORK_RECEIVE_FILTERS) (
- IN struct _EFI_SIMPLE_NETWORK *This,
- IN UINT32 Enable,
- IN UINT32 Disable,
- IN BOOLEAN ResetMCastFilter,
- IN UINTN MCastFilterCnt OPTIONAL,
- IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL
-);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SIMPLE_NETWORK_STATION_ADDRESS) (
- IN struct _EFI_SIMPLE_NETWORK *This,
- IN BOOLEAN Reset,
- IN EFI_MAC_ADDRESS *New OPTIONAL
-);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SIMPLE_NETWORK_STATISTICS) (
- IN struct _EFI_SIMPLE_NETWORK *This,
- IN BOOLEAN Reset,
- IN OUT UINTN *StatisticsSize OPTIONAL,
- OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL
-);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC) (
- IN struct _EFI_SIMPLE_NETWORK *This,
- IN BOOLEAN IPv6,
- IN EFI_IP_ADDRESS *IP,
- OUT EFI_MAC_ADDRESS *MAC
-);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SIMPLE_NETWORK_NVDATA) (
- IN struct _EFI_SIMPLE_NETWORK *This,
- IN BOOLEAN ReadWrite,
- IN UINTN Offset,
- IN UINTN BufferSize,
- IN OUT VOID *Buffer
-);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SIMPLE_NETWORK_GET_STATUS) (
- IN struct _EFI_SIMPLE_NETWORK *This,
- OUT UINT32 *InterruptStatus OPTIONAL,
- OUT VOID **TxBuf OPTIONAL
-);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SIMPLE_NETWORK_TRANSMIT) (
- IN struct _EFI_SIMPLE_NETWORK *This,
- IN UINTN HeaderSize,
- IN UINTN BufferSize,
- IN VOID *Buffer,
- IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL,
- IN EFI_MAC_ADDRESS *DestAddr OPTIONAL,
- IN UINT16 *Protocol OPTIONAL
-);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SIMPLE_NETWORK_RECEIVE) (
- IN struct _EFI_SIMPLE_NETWORK *This,
- OUT UINTN *HeaderSize OPTIONAL,
- IN OUT UINTN *BufferSize,
- OUT VOID *Buffer,
- OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL,
- OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL,
- OUT UINT16 *Protocol OPTIONAL
-);
-
-///////////////////////////////////////////////////////////////////////////////
-//
-
-#define EFI_SIMPLE_NETWORK_INTERFACE_REVISION 0x00010000
-
-typedef struct _EFI_SIMPLE_NETWORK {
- UINT64 Revision;
- EFI_SIMPLE_NETWORK_START Start;
- EFI_SIMPLE_NETWORK_STOP Stop;
- EFI_SIMPLE_NETWORK_INITIALIZE Initialize;
- EFI_SIMPLE_NETWORK_RESET Reset;
- EFI_SIMPLE_NETWORK_SHUTDOWN Shutdown;
- EFI_SIMPLE_NETWORK_RECEIVE_FILTERS ReceiveFilters;
- EFI_SIMPLE_NETWORK_STATION_ADDRESS StationAddress;
- EFI_SIMPLE_NETWORK_STATISTICS Statistics;
- EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC MCastIpToMac;
- EFI_SIMPLE_NETWORK_NVDATA NvData;
- EFI_SIMPLE_NETWORK_GET_STATUS GetStatus;
- EFI_SIMPLE_NETWORK_TRANSMIT Transmit;
- EFI_SIMPLE_NETWORK_RECEIVE Receive;
- EFI_EVENT WaitForPacket;
- EFI_SIMPLE_NETWORK_MODE *Mode;
-} EFI_SIMPLE_NETWORK;
-
-#endif /* _EFINET_H */
diff --git a/sys/boot/efi/include/efipart.h b/sys/boot/efi/include/efipart.h
deleted file mode 100644
index ef1a8709d91b..000000000000
--- a/sys/boot/efi/include/efipart.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* $FreeBSD$ */
-#ifndef _EFI_PART_H
-#define _EFI_PART_H
-
-/*++
-
-Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- efipart.h
-
-Abstract:
- Info about disk partitions and Master Boot Records
-
-
-
-
-Revision History
-
---*/
-
-//
-//
-//
-
-#define EFI_PARTITION 0xef
-#define MBR_SIZE 512
-
-#pragma pack(1)
-
-typedef struct {
- UINT8 BootIndicator;
- UINT8 StartHead;
- UINT8 StartSector;
- UINT8 StartTrack;
- UINT8 OSIndicator;
- UINT8 EndHead;
- UINT8 EndSector;
- UINT8 EndTrack;
- UINT8 StartingLBA[4];
- UINT8 SizeInLBA[4];
-} MBR_PARTITION_RECORD;
-
-#define EXTRACT_UINT32(D) (UINT32)(D[0] | (D[1] << 8) | (D[2] << 16) | (D[3] << 24))
-
-#define MBR_SIGNATURE 0xaa55
-#define MIN_MBR_DEVICE_SIZE 0x80000
-#define MBR_ERRATA_PAD 0x40000 // 128 MB
-
-#define MAX_MBR_PARTITIONS 4
-typedef struct {
- UINT8 BootStrapCode[440];
- UINT8 UniqueMbrSignature[4];
- UINT8 Unknown[2];
- MBR_PARTITION_RECORD Partition[MAX_MBR_PARTITIONS];
- UINT16 Signature;
-} MASTER_BOOT_RECORD;
-#pragma pack()
-
-
-#endif
diff --git a/sys/boot/efi/include/efipciio.h b/sys/boot/efi/include/efipciio.h
deleted file mode 100644
index b00d6ecc994a..000000000000
--- a/sys/boot/efi/include/efipciio.h
+++ /dev/null
@@ -1,557 +0,0 @@
-/* $FreeBSD$ */
-/** @file
- EFI PCI I/O Protocol provides the basic Memory, I/O, PCI configuration,
- and DMA interfaces that a driver uses to access its PCI controller.
-
- Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
- This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#ifndef __PCI_IO_H__
-#define __PCI_IO_H__
-
-///
-/// Global ID for the PCI I/O Protocol
-///
-#define EFI_PCI_IO_PROTOCOL_GUID \
- { 0x4cf5b200, 0x68b8, 0x4ca5, {0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x2, 0x9a} }
-
-typedef struct _EFI_PCI_IO_PROTOCOL EFI_PCI_IO_PROTOCOL;
-
-///
-/// *******************************************************
-/// EFI_PCI_IO_PROTOCOL_WIDTH
-/// *******************************************************
-///
-typedef enum {
- EfiPciIoWidthUint8 = 0,
- EfiPciIoWidthUint16,
- EfiPciIoWidthUint32,
- EfiPciIoWidthUint64,
- EfiPciIoWidthFifoUint8,
- EfiPciIoWidthFifoUint16,
- EfiPciIoWidthFifoUint32,
- EfiPciIoWidthFifoUint64,
- EfiPciIoWidthFillUint8,
- EfiPciIoWidthFillUint16,
- EfiPciIoWidthFillUint32,
- EfiPciIoWidthFillUint64,
- EfiPciIoWidthMaximum
-} EFI_PCI_IO_PROTOCOL_WIDTH;
-
-//
-// Complete PCI address generater
-//
-#define EFI_PCI_IO_PASS_THROUGH_BAR 0xff ///< Special BAR that passes a memory or I/O cycle through unchanged
-#define EFI_PCI_IO_ATTRIBUTE_MASK 0x077f ///< All the following I/O and Memory cycles
-#define EFI_PCI_IO_ATTRIBUTE_ISA_MOTHERBOARD_IO 0x0001 ///< I/O cycles 0x0000-0x00FF (10 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_ISA_IO 0x0002 ///< I/O cycles 0x0100-0x03FF or greater (10 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO 0x0004 ///< I/O cycles 0x3C6, 0x3C8, 0x3C9 (10 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY 0x0008 ///< MEM cycles 0xA0000-0xBFFFF (24 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_VGA_IO 0x0010 ///< I/O cycles 0x3B0-0x3BB and 0x3C0-0x3DF (10 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_IDE_PRIMARY_IO 0x0020 ///< I/O cycles 0x1F0-0x1F7, 0x3F6, 0x3F7 (10 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_IDE_SECONDARY_IO 0x0040 ///< I/O cycles 0x170-0x177, 0x376, 0x377 (10 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x0080 ///< Map a memory range so writes are combined
-#define EFI_PCI_IO_ATTRIBUTE_IO 0x0100 ///< Enable the I/O decode bit in the PCI Config Header
-#define EFI_PCI_IO_ATTRIBUTE_MEMORY 0x0200 ///< Enable the Memory decode bit in the PCI Config Header
-#define EFI_PCI_IO_ATTRIBUTE_BUS_MASTER 0x0400 ///< Enable the DMA bit in the PCI Config Header
-#define EFI_PCI_IO_ATTRIBUTE_MEMORY_CACHED 0x0800 ///< Map a memory range so all r/w accesses are cached
-#define EFI_PCI_IO_ATTRIBUTE_MEMORY_DISABLE 0x1000 ///< Disable a memory range
-#define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_DEVICE 0x2000 ///< Clear for an add-in PCI Device
-#define EFI_PCI_IO_ATTRIBUTE_EMBEDDED_ROM 0x4000 ///< Clear for a physical PCI Option ROM accessed through ROM BAR
-#define EFI_PCI_IO_ATTRIBUTE_DUAL_ADDRESS_CYCLE 0x8000 ///< Clear for PCI controllers that can not genrate a DAC
-#define EFI_PCI_IO_ATTRIBUTE_ISA_IO_16 0x10000 ///< I/O cycles 0x0100-0x03FF or greater (16 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO_16 0x20000 ///< I/O cycles 0x3C6, 0x3C8, 0x3C9 (16 bit decode)
-#define EFI_PCI_IO_ATTRIBUTE_VGA_IO_16 0x40000 ///< I/O cycles 0x3B0-0x3BB and 0x3C0-0x3DF (16 bit decode)
-
-#define EFI_PCI_DEVICE_ENABLE (EFI_PCI_IO_ATTRIBUTE_IO | EFI_PCI_IO_ATTRIBUTE_MEMORY | EFI_PCI_IO_ATTRIBUTE_BUS_MASTER)
-#define EFI_VGA_DEVICE_ENABLE (EFI_PCI_IO_ATTRIBUTE_VGA_PALETTE_IO | EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY | EFI_PCI_IO_ATTRIBUTE_VGA_IO | EFI_PCI_IO_ATTRIBUTE_IO)
-
-///
-/// *******************************************************
-/// EFI_PCI_IO_PROTOCOL_OPERATION
-/// *******************************************************
-///
-typedef enum {
- ///
- /// A read operation from system memory by a bus master.
- ///
- EfiPciIoOperationBusMasterRead,
- ///
- /// A write operation from system memory by a bus master.
- ///
- EfiPciIoOperationBusMasterWrite,
- ///
- /// Provides both read and write access to system memory by both the processor and a
- /// bus master. The buffer is coherent from both the processor's and the bus master's point of view.
- ///
- EfiPciIoOperationBusMasterCommonBuffer,
- EfiPciIoOperationMaximum
-} EFI_PCI_IO_PROTOCOL_OPERATION;
-
-///
-/// *******************************************************
-/// EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION
-/// *******************************************************
-///
-typedef enum {
- ///
- /// Retrieve the PCI controller's current attributes, and return them in Result.
- ///
- EfiPciIoAttributeOperationGet,
- ///
- /// Set the PCI controller's current attributes to Attributes.
- ///
- EfiPciIoAttributeOperationSet,
- ///
- /// Enable the attributes specified by the bits that are set in Attributes for this PCI controller.
- ///
- EfiPciIoAttributeOperationEnable,
- ///
- /// Disable the attributes specified by the bits that are set in Attributes for this PCI controller.
- ///
- EfiPciIoAttributeOperationDisable,
- ///
- /// Retrieve the PCI controller's supported attributes, and return them in Result.
- ///
- EfiPciIoAttributeOperationSupported,
- EfiPciIoAttributeOperationMaximum
-} EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION;
-
-/**
- Reads from the memory space of a PCI controller. Returns either when the polling exit criteria is
- satisfied or after a defined duration.
-
- @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
- @param Width Signifies the width of the memory or I/O operations.
- @param BarIndex The BAR index of the standard PCI Configuration header to use as the
- base address for the memory operation to perform.
- @param Offset The offset within the selected BAR to start the memory operation.
- @param Mask Mask used for the polling criteria.
- @param Value The comparison value used for the polling exit criteria.
- @param Delay The number of 100 ns units to poll.
- @param Result Pointer to the last value read from the memory location.
-
- @retval EFI_SUCCESS The last data returned from the access matched the poll exit criteria.
- @retval EFI_UNSUPPORTED BarIndex not valid for this PCI controller.
- @retval EFI_UNSUPPORTED Offset is not valid for the BarIndex of this PCI controller.
- @retval EFI_TIMEOUT Delay expired before a match occurred.
- @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
- @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_IO_PROTOCOL_POLL_IO_MEM)(
- IN EFI_PCI_IO_PROTOCOL *This,
- IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
- IN UINT8 BarIndex,
- IN UINT64 Offset,
- IN UINT64 Mask,
- IN UINT64 Value,
- IN UINT64 Delay,
- OUT UINT64 *Result
- );
-
-/**
- Enable a PCI driver to access PCI controller registers in the PCI memory or I/O space.
-
- @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
- @param Width Signifies the width of the memory or I/O operations.
- @param BarIndex The BAR index of the standard PCI Configuration header to use as the
- base address for the memory or I/O operation to perform.
- @param Offset The offset within the selected BAR to start the memory or I/O operation.
- @param Count The number of memory or I/O operations to perform.
- @param Buffer For read operations, the destination buffer to store the results. For write
- operations, the source buffer to write data from.
-
- @retval EFI_SUCCESS The data was read from or written to the PCI controller.
- @retval EFI_UNSUPPORTED BarIndex not valid for this PCI controller.
- @retval EFI_UNSUPPORTED The address range specified by Offset, Width, and Count is not
- valid for the PCI BAR specified by BarIndex.
- @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
- @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_IO_PROTOCOL_IO_MEM)(
- IN EFI_PCI_IO_PROTOCOL *This,
- IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
- IN UINT8 BarIndex,
- IN UINT64 Offset,
- IN UINTN Count,
- IN OUT VOID *Buffer
- );
-
-typedef struct {
- ///
- /// Read PCI controller registers in the PCI memory or I/O space.
- ///
- EFI_PCI_IO_PROTOCOL_IO_MEM Read;
- ///
- /// Write PCI controller registers in the PCI memory or I/O space.
- ///
- EFI_PCI_IO_PROTOCOL_IO_MEM Write;
-} EFI_PCI_IO_PROTOCOL_ACCESS;
-
-/**
- Enable a PCI driver to access PCI controller registers in PCI configuration space.
-
- @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
- @param Width Signifies the width of the memory operations.
- @param Offset The offset within the PCI configuration space for the PCI controller.
- @param Count The number of PCI configuration operations to perform.
- @param Buffer For read operations, the destination buffer to store the results. For write
- operations, the source buffer to write data from.
-
-
- @retval EFI_SUCCESS The data was read from or written to the PCI controller.
- @retval EFI_UNSUPPORTED The address range specified by Offset, Width, and Count is not
- valid for the PCI configuration header of the PCI controller.
- @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
- @retval EFI_INVALID_PARAMETER Buffer is NULL or Width is invalid.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_IO_PROTOCOL_CONFIG)(
- IN EFI_PCI_IO_PROTOCOL *This,
- IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
- IN UINT32 Offset,
- IN UINTN Count,
- IN OUT VOID *Buffer
- );
-
-typedef struct {
- ///
- /// Read PCI controller registers in PCI configuration space.
- ///
- EFI_PCI_IO_PROTOCOL_CONFIG Read;
- ///
- /// Write PCI controller registers in PCI configuration space.
- ///
- EFI_PCI_IO_PROTOCOL_CONFIG Write;
-} EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS;
-
-/**
- Enables a PCI driver to copy one region of PCI memory space to another region of PCI
- memory space.
-
- @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
- @param Width Signifies the width of the memory operations.
- @param DestBarIndex The BAR index in the standard PCI Configuration header to use as the
- base address for the memory operation to perform.
- @param DestOffset The destination offset within the BAR specified by DestBarIndex to
- start the memory writes for the copy operation.
- @param SrcBarIndex The BAR index in the standard PCI Configuration header to use as the
- base address for the memory operation to perform.
- @param SrcOffset The source offset within the BAR specified by SrcBarIndex to start
- the memory reads for the copy operation.
- @param Count The number of memory operations to perform. Bytes moved is Width
- size * Count, starting at DestOffset and SrcOffset.
-
- @retval EFI_SUCCESS The data was copied from one memory region to another memory region.
- @retval EFI_UNSUPPORTED DestBarIndex not valid for this PCI controller.
- @retval EFI_UNSUPPORTED SrcBarIndex not valid for this PCI controller.
- @retval EFI_UNSUPPORTED The address range specified by DestOffset, Width, and Count
- is not valid for the PCI BAR specified by DestBarIndex.
- @retval EFI_UNSUPPORTED The address range specified by SrcOffset, Width, and Count is
- not valid for the PCI BAR specified by SrcBarIndex.
- @retval EFI_INVALID_PARAMETER Width is invalid.
- @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_IO_PROTOCOL_COPY_MEM)(
- IN EFI_PCI_IO_PROTOCOL *This,
- IN EFI_PCI_IO_PROTOCOL_WIDTH Width,
- IN UINT8 DestBarIndex,
- IN UINT64 DestOffset,
- IN UINT8 SrcBarIndex,
- IN UINT64 SrcOffset,
- IN UINTN Count
- );
-
-/**
- Provides the PCI controller-specific addresses needed to access system memory.
-
- @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
- @param Operation Indicates if the bus master is going to read or write to system memory.
- @param HostAddress The system memory address to map to the PCI controller.
- @param NumberOfBytes On input the number of bytes to map. On output the number of bytes
- that were mapped.
- @param DeviceAddress The resulting map address for the bus master PCI controller to use to
- access the hosts HostAddress.
- @param Mapping A resulting value to pass to Unmap().
-
- @retval EFI_SUCCESS The range was mapped for the returned NumberOfBytes.
- @retval EFI_UNSUPPORTED The HostAddress cannot be mapped as a common buffer.
- @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
- @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
- @retval EFI_DEVICE_ERROR The system hardware could not map the requested address.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_IO_PROTOCOL_MAP)(
- IN EFI_PCI_IO_PROTOCOL *This,
- IN EFI_PCI_IO_PROTOCOL_OPERATION Operation,
- IN VOID *HostAddress,
- IN OUT UINTN *NumberOfBytes,
- OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,
- OUT VOID **Mapping
- );
-
-/**
- Completes the Map() operation and releases any corresponding resources.
-
- @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
- @param Mapping The mapping value returned from Map().
-
- @retval EFI_SUCCESS The range was unmapped.
- @retval EFI_DEVICE_ERROR The data was not committed to the target system memory.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_IO_PROTOCOL_UNMAP)(
- IN EFI_PCI_IO_PROTOCOL *This,
- IN VOID *Mapping
- );
-
-/**
- Allocates pages that are suitable for an EfiPciIoOperationBusMasterCommonBuffer
- mapping.
-
- @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
- @param Type This parameter is not used and must be ignored.
- @param MemoryType The type of memory to allocate, EfiBootServicesData or
- EfiRuntimeServicesData.
- @param Pages The number of pages to allocate.
- @param HostAddress A pointer to store the base system memory address of the
- allocated range.
- @param Attributes The requested bit mask of attributes for the allocated range.
-
- @retval EFI_SUCCESS The requested memory pages were allocated.
- @retval EFI_UNSUPPORTED Attributes is unsupported. The only legal attribute bits are
- MEMORY_WRITE_COMBINE and MEMORY_CACHED.
- @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
- @retval EFI_OUT_OF_RESOURCES The memory pages could not be allocated.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER)(
- IN EFI_PCI_IO_PROTOCOL *This,
- IN EFI_ALLOCATE_TYPE Type,
- IN EFI_MEMORY_TYPE MemoryType,
- IN UINTN Pages,
- OUT VOID **HostAddress,
- IN UINT64 Attributes
- );
-
-/**
- Frees memory that was allocated with AllocateBuffer().
-
- @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
- @param Pages The number of pages to free.
- @param HostAddress The base system memory address of the allocated range.
-
- @retval EFI_SUCCESS The requested memory pages were freed.
- @retval EFI_INVALID_PARAMETER The memory range specified by HostAddress and Pages
- was not allocated with AllocateBuffer().
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_IO_PROTOCOL_FREE_BUFFER)(
- IN EFI_PCI_IO_PROTOCOL *This,
- IN UINTN Pages,
- IN VOID *HostAddress
- );
-
-/**
- Flushes all PCI posted write transactions from a PCI host bridge to system memory.
-
- @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
-
- @retval EFI_SUCCESS The PCI posted write transactions were flushed from the PCI host
- bridge to system memory.
- @retval EFI_DEVICE_ERROR The PCI posted write transactions were not flushed from the PCI
- host bridge due to a hardware error.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_IO_PROTOCOL_FLUSH)(
- IN EFI_PCI_IO_PROTOCOL *This
- );
-
-/**
- Retrieves this PCI controller's current PCI bus number, device number, and function number.
-
- @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
- @param SegmentNumber The PCI controller's current PCI segment number.
- @param BusNumber The PCI controller's current PCI bus number.
- @param DeviceNumber The PCI controller's current PCI device number.
- @param FunctionNumber The PCI controller's current PCI function number.
-
- @retval EFI_SUCCESS The PCI controller location was returned.
- @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_IO_PROTOCOL_GET_LOCATION)(
- IN EFI_PCI_IO_PROTOCOL *This,
- OUT UINTN *SegmentNumber,
- OUT UINTN *BusNumber,
- OUT UINTN *DeviceNumber,
- OUT UINTN *FunctionNumber
- );
-
-/**
- Performs an operation on the attributes that this PCI controller supports. The operations include
- getting the set of supported attributes, retrieving the current attributes, setting the current
- attributes, enabling attributes, and disabling attributes.
-
- @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
- @param Operation The operation to perform on the attributes for this PCI controller.
- @param Attributes The mask of attributes that are used for Set, Enable, and Disable
- operations.
- @param Result A pointer to the result mask of attributes that are returned for the Get
- and Supported operations.
-
- @retval EFI_SUCCESS The operation on the PCI controller's attributes was completed.
- @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
- @retval EFI_UNSUPPORTED one or more of the bits set in
- Attributes are not supported by this PCI controller or one of
- its parent bridges when Operation is Set, Enable or Disable.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_IO_PROTOCOL_ATTRIBUTES)(
- IN EFI_PCI_IO_PROTOCOL *This,
- IN EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION Operation,
- IN UINT64 Attributes,
- OUT UINT64 *Result OPTIONAL
- );
-
-/**
- Gets the attributes that this PCI controller supports setting on a BAR using
- SetBarAttributes(), and retrieves the list of resource descriptors for a BAR.
-
- @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
- @param BarIndex The BAR index of the standard PCI Configuration header to use as the
- base address for resource range. The legal range for this field is 0..5.
- @param Supports A pointer to the mask of attributes that this PCI controller supports
- setting for this BAR with SetBarAttributes().
- @param Resources A pointer to the ACPI 2.0 resource descriptors that describe the current
- configuration of this BAR of the PCI controller.
-
- @retval EFI_SUCCESS If Supports is not NULL, then the attributes that the PCI
- controller supports are returned in Supports. If Resources
- is not NULL, then the ACPI 2.0 resource descriptors that the PCI
- controller is currently using are returned in Resources.
- @retval EFI_INVALID_PARAMETER Both Supports and Attributes are NULL.
- @retval EFI_UNSUPPORTED BarIndex not valid for this PCI controller.
- @retval EFI_OUT_OF_RESOURCES There are not enough resources available to allocate
- Resources.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES)(
- IN EFI_PCI_IO_PROTOCOL *This,
- IN UINT8 BarIndex,
- OUT UINT64 *Supports, OPTIONAL
- OUT VOID **Resources OPTIONAL
- );
-
-/**
- Sets the attributes for a range of a BAR on a PCI controller.
-
- @param This A pointer to the EFI_PCI_IO_PROTOCOL instance.
- @param Attributes The mask of attributes to set for the resource range specified by
- BarIndex, Offset, and Length.
- @param BarIndex The BAR index of the standard PCI Configuration header to use as the
- base address for resource range. The legal range for this field is 0..5.
- @param Offset A pointer to the BAR relative base address of the resource range to be
- modified by the attributes specified by Attributes.
- @param Length A pointer to the length of the resource range to be modified by the
- attributes specified by Attributes.
-
- @retval EFI_SUCCESS The set of attributes specified by Attributes for the resource
- range specified by BarIndex, Offset, and Length were
- set on the PCI controller, and the actual resource range is returned
- in Offset and Length.
- @retval EFI_INVALID_PARAMETER Offset or Length is NULL.
- @retval EFI_UNSUPPORTED BarIndex not valid for this PCI controller.
- @retval EFI_OUT_OF_RESOURCES There are not enough resources to set the attributes on the
- resource range specified by BarIndex, Offset, and
- Length.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES)(
- IN EFI_PCI_IO_PROTOCOL *This,
- IN UINT64 Attributes,
- IN UINT8 BarIndex,
- IN OUT UINT64 *Offset,
- IN OUT UINT64 *Length
- );
-
-///
-/// The EFI_PCI_IO_PROTOCOL provides the basic Memory, I/O, PCI configuration,
-/// and DMA interfaces used to abstract accesses to PCI controllers.
-/// There is one EFI_PCI_IO_PROTOCOL instance for each PCI controller on a PCI bus.
-/// A device driver that wishes to manage a PCI controller in a system will have to
-/// retrieve the EFI_PCI_IO_PROTOCOL instance that is associated with the PCI controller.
-///
-struct _EFI_PCI_IO_PROTOCOL {
- EFI_PCI_IO_PROTOCOL_POLL_IO_MEM PollMem;
- EFI_PCI_IO_PROTOCOL_POLL_IO_MEM PollIo;
- EFI_PCI_IO_PROTOCOL_ACCESS Mem;
- EFI_PCI_IO_PROTOCOL_ACCESS Io;
- EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS Pci;
- EFI_PCI_IO_PROTOCOL_COPY_MEM CopyMem;
- EFI_PCI_IO_PROTOCOL_MAP Map;
- EFI_PCI_IO_PROTOCOL_UNMAP Unmap;
- EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER AllocateBuffer;
- EFI_PCI_IO_PROTOCOL_FREE_BUFFER FreeBuffer;
- EFI_PCI_IO_PROTOCOL_FLUSH Flush;
- EFI_PCI_IO_PROTOCOL_GET_LOCATION GetLocation;
- EFI_PCI_IO_PROTOCOL_ATTRIBUTES Attributes;
- EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES GetBarAttributes;
- EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES SetBarAttributes;
-
- ///
- /// The size, in bytes, of the ROM image.
- ///
- UINT64 RomSize;
-
- ///
- /// A pointer to the in memory copy of the ROM image. The PCI Bus Driver is responsible
- /// for allocating memory for the ROM image, and copying the contents of the ROM to memory.
- /// The contents of this buffer are either from the PCI option ROM that can be accessed
- /// through the ROM BAR of the PCI controller, or it is from a platform-specific location.
- /// The Attributes() function can be used to determine from which of these two sources
- /// the RomImage buffer was initialized.
- ///
- VOID *RomImage;
-};
-
-extern EFI_GUID gEfiPciIoProtocolGuid;
-
-#endif
diff --git a/sys/boot/efi/include/efiprot.h b/sys/boot/efi/include/efiprot.h
deleted file mode 100644
index 351b2d347ad4..000000000000
--- a/sys/boot/efi/include/efiprot.h
+++ /dev/null
@@ -1,636 +0,0 @@
-/* $FreeBSD$ */
-#ifndef _EFI_PROT_H
-#define _EFI_PROT_H
-
-/*++
-
-Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- efiprot.h
-
-Abstract:
-
- EFI Protocols
-
-
-
-Revision History
-
---*/
-
-#include <efidef.h>
-
-//
-// Device Path protocol
-//
-
-#define DEVICE_PATH_PROTOCOL \
- { 0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
-
-
-//
-// Block IO protocol
-//
-
-#define BLOCK_IO_PROTOCOL \
- { 0x964e5b21, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
-#define EFI_BLOCK_IO_INTERFACE_REVISION 0x00010000
-
-INTERFACE_DECL(_EFI_BLOCK_IO);
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_BLOCK_RESET) (
- IN struct _EFI_BLOCK_IO *This,
- IN BOOLEAN ExtendedVerification
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_BLOCK_READ) (
- IN struct _EFI_BLOCK_IO *This,
- IN UINT32 MediaId,
- IN EFI_LBA LBA,
- IN UINTN BufferSize,
- OUT VOID *Buffer
- );
-
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_BLOCK_WRITE) (
- IN struct _EFI_BLOCK_IO *This,
- IN UINT32 MediaId,
- IN EFI_LBA LBA,
- IN UINTN BufferSize,
- IN VOID *Buffer
- );
-
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_BLOCK_FLUSH) (
- IN struct _EFI_BLOCK_IO *This
- );
-
-
-
-typedef struct {
- UINT32 MediaId;
- BOOLEAN RemovableMedia;
- BOOLEAN MediaPresent;
-
- BOOLEAN LogicalPartition;
- BOOLEAN ReadOnly;
- BOOLEAN WriteCaching;
-
- UINT32 BlockSize;
- UINT32 IoAlign;
-
- EFI_LBA LastBlock;
-} EFI_BLOCK_IO_MEDIA;
-
-typedef struct _EFI_BLOCK_IO {
- UINT64 Revision;
-
- EFI_BLOCK_IO_MEDIA *Media;
-
- EFI_BLOCK_RESET Reset;
- EFI_BLOCK_READ ReadBlocks;
- EFI_BLOCK_WRITE WriteBlocks;
- EFI_BLOCK_FLUSH FlushBlocks;
-
-} EFI_BLOCK_IO;
-
-
-
-//
-// Disk Block IO protocol
-//
-
-#define DISK_IO_PROTOCOL \
- { 0xce345171, 0xba0b, 0x11d2, {0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
-#define EFI_DISK_IO_INTERFACE_REVISION 0x00010000
-
-INTERFACE_DECL(_EFI_DISK_IO);
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DISK_READ) (
- IN struct _EFI_DISK_IO *This,
- IN UINT32 MediaId,
- IN UINT64 Offset,
- IN UINTN BufferSize,
- OUT VOID *Buffer
- );
-
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DISK_WRITE) (
- IN struct _EFI_DISK_IO *This,
- IN UINT32 MediaId,
- IN UINT64 Offset,
- IN UINTN BufferSize,
- IN VOID *Buffer
- );
-
-
-typedef struct _EFI_DISK_IO {
- UINT64 Revision;
- EFI_DISK_READ ReadDisk;
- EFI_DISK_WRITE WriteDisk;
-} EFI_DISK_IO;
-
-
-//
-// Simple file system protocol
-//
-
-#define SIMPLE_FILE_SYSTEM_PROTOCOL \
- { 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
-
-INTERFACE_DECL(_EFI_FILE_IO_INTERFACE);
-INTERFACE_DECL(_EFI_FILE_HANDLE);
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_VOLUME_OPEN) (
- IN struct _EFI_FILE_IO_INTERFACE *This,
- OUT struct _EFI_FILE_HANDLE **Root
- );
-
-#define EFI_FILE_IO_INTERFACE_REVISION 0x00010000
-
-typedef struct _EFI_FILE_IO_INTERFACE {
- UINT64 Revision;
- EFI_VOLUME_OPEN OpenVolume;
-} EFI_FILE_IO_INTERFACE;
-
-//
-//
-//
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_OPEN) (
- IN struct _EFI_FILE_HANDLE *File,
- OUT struct _EFI_FILE_HANDLE **NewHandle,
- IN CHAR16 *FileName,
- IN UINT64 OpenMode,
- IN UINT64 Attributes
- );
-
-// Open modes
-#define EFI_FILE_MODE_READ 0x0000000000000001
-#define EFI_FILE_MODE_WRITE 0x0000000000000002
-#define EFI_FILE_MODE_CREATE 0x8000000000000000
-
-// File attributes
-#define EFI_FILE_READ_ONLY 0x0000000000000001
-#define EFI_FILE_HIDDEN 0x0000000000000002
-#define EFI_FILE_SYSTEM 0x0000000000000004
-#define EFI_FILE_RESERVIED 0x0000000000000008
-#define EFI_FILE_DIRECTORY 0x0000000000000010
-#define EFI_FILE_ARCHIVE 0x0000000000000020
-#define EFI_FILE_VALID_ATTR 0x0000000000000037
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_CLOSE) (
- IN struct _EFI_FILE_HANDLE *File
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_DELETE) (
- IN struct _EFI_FILE_HANDLE *File
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_READ) (
- IN struct _EFI_FILE_HANDLE *File,
- IN OUT UINTN *BufferSize,
- OUT VOID *Buffer
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_WRITE) (
- IN struct _EFI_FILE_HANDLE *File,
- IN OUT UINTN *BufferSize,
- IN VOID *Buffer
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_SET_POSITION) (
- IN struct _EFI_FILE_HANDLE *File,
- IN UINT64 Position
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_GET_POSITION) (
- IN struct _EFI_FILE_HANDLE *File,
- OUT UINT64 *Position
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_GET_INFO) (
- IN struct _EFI_FILE_HANDLE *File,
- IN EFI_GUID *InformationType,
- IN OUT UINTN *BufferSize,
- OUT VOID *Buffer
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_SET_INFO) (
- IN struct _EFI_FILE_HANDLE *File,
- IN EFI_GUID *InformationType,
- IN UINTN BufferSize,
- IN VOID *Buffer
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_FILE_FLUSH) (
- IN struct _EFI_FILE_HANDLE *File
- );
-
-
-
-#define EFI_FILE_HANDLE_REVISION 0x00010000
-typedef struct _EFI_FILE_HANDLE {
- UINT64 Revision;
- EFI_FILE_OPEN Open;
- EFI_FILE_CLOSE Close;
- EFI_FILE_DELETE Delete;
- EFI_FILE_READ Read;
- EFI_FILE_WRITE Write;
- EFI_FILE_GET_POSITION GetPosition;
- EFI_FILE_SET_POSITION SetPosition;
- EFI_FILE_GET_INFO GetInfo;
- EFI_FILE_SET_INFO SetInfo;
- EFI_FILE_FLUSH Flush;
-} EFI_FILE, *EFI_FILE_HANDLE;
-
-
-//
-// File information types
-//
-
-#define EFI_FILE_INFO_ID \
- { 0x9576e92, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
-
-typedef struct {
- UINT64 Size;
- UINT64 FileSize;
- UINT64 PhysicalSize;
- EFI_TIME CreateTime;
- EFI_TIME LastAccessTime;
- EFI_TIME ModificationTime;
- UINT64 Attribute;
- CHAR16 FileName[1];
-} EFI_FILE_INFO;
-
-//
-// The FileName field of the EFI_FILE_INFO data structure is variable length.
-// Whenever code needs to know the size of the EFI_FILE_INFO data structure, it needs to
-// be the size of the data structure without the FileName field. The following macro
-// computes this size correctly no matter how big the FileName array is declared.
-// This is required to make the EFI_FILE_INFO data structure ANSI compilant.
-//
-
-#define SIZE_OF_EFI_FILE_INFO EFI_FIELD_OFFSET(EFI_FILE_INFO,FileName)
-
-#define EFI_FILE_SYSTEM_INFO_ID \
- { 0x9576e93, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
-
-typedef struct {
- UINT64 Size;
- BOOLEAN ReadOnly;
- UINT64 VolumeSize;
- UINT64 FreeSpace;
- UINT32 BlockSize;
- CHAR16 VolumeLabel[1];
-} EFI_FILE_SYSTEM_INFO;
-
-//
-// The VolumeLabel field of the EFI_FILE_SYSTEM_INFO data structure is variable length.
-// Whenever code needs to know the size of the EFI_FILE_SYSTEM_INFO data structure, it needs
-// to be the size of the data structure without the VolumeLable field. The following macro
-// computes this size correctly no matter how big the VolumeLable array is declared.
-// This is required to make the EFI_FILE_SYSTEM_INFO data structure ANSI compilant.
-//
-
-#define SIZE_OF_EFI_FILE_SYSTEM_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_INFO,VolumeLabel)
-
-#define EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID \
- { 0xDB47D7D3,0xFE81, 0x11d3, {0x9A, 0x35, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
-
-typedef struct {
- CHAR16 VolumeLabel[1];
-} EFI_FILE_SYSTEM_VOLUME_LABEL_INFO;
-
-#define SIZE_OF_EFI_FILE_SYSTEM_VOLUME_LABEL_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_VOLUME_LABEL_INFO,VolumeLabel)
-
-//
-// Load file protocol
-//
-
-
-#define LOAD_FILE_PROTOCOL \
- { 0x56EC3091, 0x954C, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
-
-INTERFACE_DECL(_EFI_LOAD_FILE_INTERFACE);
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_LOAD_FILE) (
- IN struct _EFI_LOAD_FILE_INTERFACE *This,
- IN EFI_DEVICE_PATH *FilePath,
- IN BOOLEAN BootPolicy,
- IN OUT UINTN *BufferSize,
- IN VOID *Buffer OPTIONAL
- );
-
-typedef struct _EFI_LOAD_FILE_INTERFACE {
- EFI_LOAD_FILE LoadFile;
-} EFI_LOAD_FILE_INTERFACE;
-
-
-//
-// Device IO protocol
-//
-
-#define DEVICE_IO_PROTOCOL \
- { 0xaf6ac311, 0x84c3, 0x11d2, {0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
-
-INTERFACE_DECL(_EFI_DEVICE_IO_INTERFACE);
-
-typedef enum {
- IO_UINT8,
- IO_UINT16,
- IO_UINT32,
- IO_UINT64,
-//
-// Specification Change: Copy from MMIO to MMIO vs. MMIO to buffer, buffer to MMIO
-//
- MMIO_COPY_UINT8,
- MMIO_COPY_UINT16,
- MMIO_COPY_UINT32,
- MMIO_COPY_UINT64
-} EFI_IO_WIDTH;
-
-#define EFI_PCI_ADDRESS(bus,dev,func,reg) \
- ( (UINT64) ( (((UINTN)bus) << 24) + (((UINTN)dev) << 16) + (((UINTN)func) << 8) + ((UINTN)reg) ))
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DEVICE_IO) (
- IN struct _EFI_DEVICE_IO_INTERFACE *This,
- IN EFI_IO_WIDTH Width,
- IN UINT64 Address,
- IN UINTN Count,
- IN OUT VOID *Buffer
- );
-
-typedef struct {
- EFI_DEVICE_IO Read;
- EFI_DEVICE_IO Write;
-} EFI_IO_ACCESS;
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PCI_DEVICE_PATH) (
- IN struct _EFI_DEVICE_IO_INTERFACE *This,
- IN UINT64 Address,
- IN OUT EFI_DEVICE_PATH **PciDevicePath
- );
-
-typedef enum {
- EfiBusMasterRead,
- EfiBusMasterWrite,
- EfiBusMasterCommonBuffer
-} EFI_IO_OPERATION_TYPE;
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IO_MAP) (
- IN struct _EFI_DEVICE_IO_INTERFACE *This,
- IN EFI_IO_OPERATION_TYPE Operation,
- IN EFI_PHYSICAL_ADDRESS *HostAddress,
- IN OUT UINTN *NumberOfBytes,
- OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,
- OUT VOID **Mapping
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IO_UNMAP) (
- IN struct _EFI_DEVICE_IO_INTERFACE *This,
- IN VOID *Mapping
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IO_ALLOCATE_BUFFER) (
- IN struct _EFI_DEVICE_IO_INTERFACE *This,
- IN EFI_ALLOCATE_TYPE Type,
- IN EFI_MEMORY_TYPE MemoryType,
- IN UINTN Pages,
- IN OUT EFI_PHYSICAL_ADDRESS *HostAddress
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IO_FLUSH) (
- IN struct _EFI_DEVICE_IO_INTERFACE *This
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_IO_FREE_BUFFER) (
- IN struct _EFI_DEVICE_IO_INTERFACE *This,
- IN UINTN Pages,
- IN EFI_PHYSICAL_ADDRESS HostAddress
- );
-
-typedef struct _EFI_DEVICE_IO_INTERFACE {
- EFI_IO_ACCESS Mem;
- EFI_IO_ACCESS Io;
- EFI_IO_ACCESS Pci;
- EFI_IO_MAP Map;
- EFI_PCI_DEVICE_PATH PciDevicePath;
- EFI_IO_UNMAP Unmap;
- EFI_IO_ALLOCATE_BUFFER AllocateBuffer;
- EFI_IO_FLUSH Flush;
- EFI_IO_FREE_BUFFER FreeBuffer;
-} EFI_DEVICE_IO_INTERFACE;
-
-
-//
-// Unicode Collation protocol
-//
-
-#define UNICODE_COLLATION_PROTOCOL \
- { 0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
-
-#define UNICODE_BYTE_ORDER_MARK (CHAR16)(0xfeff)
-
-INTERFACE_DECL(_EFI_UNICODE_COLLATION_INTERFACE);
-
-typedef
-INTN
-(EFIAPI *EFI_UNICODE_COLLATION_STRICOLL) (
- IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
- IN CHAR16 *s1,
- IN CHAR16 *s2
- );
-
-typedef
-BOOLEAN
-(EFIAPI *EFI_UNICODE_COLLATION_METAIMATCH) (
- IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
- IN CHAR16 *String,
- IN CHAR16 *Pattern
- );
-
-typedef
-VOID
-(EFIAPI *EFI_UNICODE_COLLATION_STRLWR) (
- IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
- IN OUT CHAR16 *Str
- );
-
-typedef
-VOID
-(EFIAPI *EFI_UNICODE_COLLATION_STRUPR) (
- IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
- IN OUT CHAR16 *Str
- );
-
-typedef
-VOID
-(EFIAPI *EFI_UNICODE_COLLATION_FATTOSTR) (
- IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
- IN UINTN FatSize,
- IN CHAR8 *Fat,
- OUT CHAR16 *String
- );
-
-typedef
-BOOLEAN
-(EFIAPI *EFI_UNICODE_COLLATION_STRTOFAT) (
- IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
- IN CHAR16 *String,
- IN UINTN FatSize,
- OUT CHAR8 *Fat
- );
-
-
-typedef struct _EFI_UNICODE_COLLATION_INTERFACE {
-
- // general
- EFI_UNICODE_COLLATION_STRICOLL StriColl;
- EFI_UNICODE_COLLATION_METAIMATCH MetaiMatch;
- EFI_UNICODE_COLLATION_STRLWR StrLwr;
- EFI_UNICODE_COLLATION_STRUPR StrUpr;
-
- // for supporting fat volumes
- EFI_UNICODE_COLLATION_FATTOSTR FatToStr;
- EFI_UNICODE_COLLATION_STRTOFAT StrToFat;
-
- CHAR8 *SupportedLanguages;
-} EFI_UNICODE_COLLATION_INTERFACE;
-
-//
-// Driver Binding protocol
-//
-
-#define DRIVER_BINDING_PROTOCOL \
- { 0x18a031ab, 0xb443, 0x4d1a, {0xa5, 0xc0, 0x0c, 0x09, 0x26, 0x1e, 0x9f, 0x71} }
-
-INTERFACE_DECL(_EFI_DRIVER_BINDING);
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DRIVER_BINDING_SUPPORTED) (
- IN struct _EFI_DRIVER_BINDING *This,
- IN EFI_HANDLE ControllerHandle,
- IN EFI_DEVICE_PATH *RemainingPath
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DRIVER_BINDING_START) (
- IN struct _EFI_DRIVER_BINDING *This,
- IN EFI_HANDLE ControllerHandle,
- IN EFI_DEVICE_PATH *RemainingPath
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DRIVER_BINDING_STOP) (
- IN struct _EFI_DRIVER_BINDING *This,
- IN EFI_HANDLE ControllerHandle,
- IN UINTN NumberOfChildren,
- IN EFI_HANDLE *ChildHandleBuffer
- );
-
-typedef struct _EFI_DRIVER_BINDING {
- EFI_DRIVER_BINDING_SUPPORTED Supported;
- EFI_DRIVER_BINDING_START Start;
- EFI_DRIVER_BINDING_STOP Stop;
- UINT32 Version;
- EFI_HANDLE ImageHandle;
- EFI_HANDLE DriverBindingHandle;
-} EFI_DRIVER_BINDING;
-
-//
-// Component Name Protocol 2
-//
-
-#define COMPONENT_NAME2_PROTOCOL \
- { 0x6a7a5cff, 0xe8d9, 0x4f70, {0xba, 0xda, 0x75, 0xab, 0x30, 0x25, 0xce, 0x14 } }
-
-INTERFACE_DECL(_EFI_COMPONENT_NAME2);
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_COMPONENT_NAME_GET_DRIVER_NAME) (
- IN struct _EFI_COMPONENT_NAME2 *This,
- IN CHAR8 * Language,
- OUT CHAR16 **DriverName
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_COMPONENT_NAME_GET_CONTROLLER_NAME) (
- IN struct _EFI_COMPONENT_NAME2 *This,
- IN EFI_HANDLE ControllerHandle,
- IN EFI_HANDLE ChildHandle OPTIONAL,
- IN CHAR8 *Language,
- OUT CHAR16 **ControllerName
- );
-
-typedef struct _EFI_COMPONENT_NAME2 {
- EFI_COMPONENT_NAME_GET_DRIVER_NAME GetDriverName;
- EFI_COMPONENT_NAME_GET_CONTROLLER_NAME GetControllerName;
- CHAR8 **SupportedLanguages;
-} EFI_COMPONENT_NAME2;
-
-#endif
diff --git a/sys/boot/efi/include/efipxebc.h b/sys/boot/efi/include/efipxebc.h
deleted file mode 100644
index ba0b2e9b6c5d..000000000000
--- a/sys/boot/efi/include/efipxebc.h
+++ /dev/null
@@ -1,472 +0,0 @@
-/* $FreeBSD$ */
-#ifndef _EFIPXEBC_H
-#define _EFIPXEBC_H
-
-/*++
-
-Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- efipxebc.h
-
-Abstract:
-
- EFI PXE Base Code Protocol
-
-
-
-Revision History
-
---*/
-
-//
-// PXE Base Code protocol
-//
-
-#define EFI_PXE_BASE_CODE_PROTOCOL \
- { 0x03c4e603, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
-
-INTERFACE_DECL(_EFI_PXE_BASE_CODE);
-
-#define DEFAULT_TTL 8
-#define DEFAULT_ToS 0
-//
-// Address definitions
-//
-
-typedef union {
- UINT32 Addr[4];
- EFI_IPv4_ADDRESS v4;
- EFI_IPv6_ADDRESS v6;
-} EFI_IP_ADDRESS;
-
-typedef UINT16 EFI_PXE_BASE_CODE_UDP_PORT;
-
-//
-// Packet definitions
-//
-
-typedef struct {
- UINT8 BootpOpcode;
- UINT8 BootpHwType;
- UINT8 BootpHwAddrLen;
- UINT8 BootpGateHops;
- UINT32 BootpIdent;
- UINT16 BootpSeconds;
- UINT16 BootpFlags;
- UINT8 BootpCiAddr[4];
- UINT8 BootpYiAddr[4];
- UINT8 BootpSiAddr[4];
- UINT8 BootpGiAddr[4];
- UINT8 BootpHwAddr[16];
- UINT8 BootpSrvName[64];
- UINT8 BootpBootFile[128];
- UINT32 DhcpMagik;
- UINT8 DhcpOptions[56];
-} EFI_PXE_BASE_CODE_DHCPV4_PACKET;
-
-// TBD in EFI v1.1
-//typedef struct {
-// UINT8 reserved;
-//} EFI_PXE_BASE_CODE_DHCPV6_PACKET;
-
-typedef union {
- UINT8 Raw[1472];
- EFI_PXE_BASE_CODE_DHCPV4_PACKET Dhcpv4;
-// EFI_PXE_BASE_CODE_DHCPV6_PACKET Dhcpv6;
-} EFI_PXE_BASE_CODE_PACKET;
-
-typedef struct {
- UINT8 Type;
- UINT8 Code;
- UINT16 Checksum;
- union {
- UINT32 reserved;
- UINT32 Mtu;
- UINT32 Pointer;
- struct {
- UINT16 Identifier;
- UINT16 Sequence;
- } Echo;
- } u;
- UINT8 Data[494];
-} EFI_PXE_BASE_CODE_ICMP_ERROR;
-
-typedef struct {
- UINT8 ErrorCode;
- CHAR8 ErrorString[127];
-} EFI_PXE_BASE_CODE_TFTP_ERROR;
-
-//
-// IP Receive Filter definitions
-//
-#define EFI_PXE_BASE_CODE_MAX_IPCNT 8
-typedef struct {
- UINT8 Filters;
- UINT8 IpCnt;
- UINT16 reserved;
- EFI_IP_ADDRESS IpList[EFI_PXE_BASE_CODE_MAX_IPCNT];
-} EFI_PXE_BASE_CODE_IP_FILTER;
-
-#define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP 0x0001
-#define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST 0x0002
-#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS 0x0004
-#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST 0x0008
-
-//
-// ARP Cache definitions
-//
-
-typedef struct {
- EFI_IP_ADDRESS IpAddr;
- EFI_MAC_ADDRESS MacAddr;
-} EFI_PXE_BASE_CODE_ARP_ENTRY;
-
-typedef struct {
- EFI_IP_ADDRESS IpAddr;
- EFI_IP_ADDRESS SubnetMask;
- EFI_IP_ADDRESS GwAddr;
-} EFI_PXE_BASE_CODE_ROUTE_ENTRY;
-
-//
-// UDP definitions
-//
-
-#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP 0x0001
-#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT 0x0002
-#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP 0x0004
-#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT 0x0008
-#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER 0x0010
-#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_MAY_FRAGMENT 0x0020
-
-//
-// Discover() definitions
-//
-
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_BOOTSTRAP 0
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_MS_WINNT_RIS 1
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_INTEL_LCM 2
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_DOSUNDI 3
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_NEC_ESMPRO 4
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_WSoD 5
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_LCCM 6
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_CA_UNICENTER_TNG 7
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_HP_OPENVIEW 8
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_9 9
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_10 10
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_11 11
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_NOT_USED_12 12
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_INSTALL 13
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_BOOT 14
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_REMBO 15
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_BEOBOOT 16
-//
-// 17 through 32767 are reserved
-// 32768 through 65279 are for vendor use
-// 65280 through 65534 are reserved
-//
-#define EFI_PXE_BASE_CODE_BOOT_TYPE_PXETEST 65535
-
-#define EFI_PXE_BASE_CODE_BOOT_LAYER_MASK 0x7FFF
-#define EFI_PXE_BASE_CODE_BOOT_LAYER_INITIAL 0x0000
-#define EFI_PXE_BASE_CODE_BOOT_LAYER_CREDENTIALS 0x8000
-
-
-typedef struct {
- UINT16 Type;
- BOOLEAN AcceptAnyResponse;
- UINT8 Reserved;
- EFI_IP_ADDRESS IpAddr;
-} EFI_PXE_BASE_CODE_SRVLIST;
-
-typedef struct {
- BOOLEAN UseMCast;
- BOOLEAN UseBCast;
- BOOLEAN UseUCast;
- BOOLEAN MustUseList;
- EFI_IP_ADDRESS ServerMCastIp;
- UINT16 IpCnt;
- EFI_PXE_BASE_CODE_SRVLIST SrvList[1];
-} EFI_PXE_BASE_CODE_DISCOVER_INFO;
-
-//
-// Mtftp() definitions
-//
-
-typedef enum {
- EFI_PXE_BASE_CODE_TFTP_FIRST,
- EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE,
- EFI_PXE_BASE_CODE_TFTP_READ_FILE,
- EFI_PXE_BASE_CODE_TFTP_WRITE_FILE,
- EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY,
- EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE,
- EFI_PXE_BASE_CODE_MTFTP_READ_FILE,
- EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY,
- EFI_PXE_BASE_CODE_MTFTP_LAST
-} EFI_PXE_BASE_CODE_TFTP_OPCODE;
-
-typedef struct {
- EFI_IP_ADDRESS MCastIp;
- EFI_PXE_BASE_CODE_UDP_PORT CPort;
- EFI_PXE_BASE_CODE_UDP_PORT SPort;
- UINT16 ListenTimeout;
- UINT16 TransmitTimeout;
-} EFI_PXE_BASE_CODE_MTFTP_INFO;
-
-//
-// PXE Base Code Mode structure
-//
-
-#define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES 8
-#define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES 8
-
-typedef struct {
- BOOLEAN Started;
- BOOLEAN Ipv6Available;
- BOOLEAN Ipv6Supported;
- BOOLEAN UsingIpv6;
- BOOLEAN BisSupported;
- BOOLEAN BisDetected;
- BOOLEAN AutoArp;
- BOOLEAN SendGUID;
- BOOLEAN DhcpDiscoverValid;
- BOOLEAN DhcpAckReceived;
- BOOLEAN ProxyOfferReceived;
- BOOLEAN PxeDiscoverValid;
- BOOLEAN PxeReplyReceived;
- BOOLEAN PxeBisReplyReceived;
- BOOLEAN IcmpErrorReceived;
- BOOLEAN TftpErrorReceived;
- BOOLEAN MakeCallbacks;
- UINT8 TTL;
- UINT8 ToS;
- EFI_IP_ADDRESS StationIp;
- EFI_IP_ADDRESS SubnetMask;
- EFI_PXE_BASE_CODE_PACKET DhcpDiscover;
- EFI_PXE_BASE_CODE_PACKET DhcpAck;
- EFI_PXE_BASE_CODE_PACKET ProxyOffer;
- EFI_PXE_BASE_CODE_PACKET PxeDiscover;
- EFI_PXE_BASE_CODE_PACKET PxeReply;
- EFI_PXE_BASE_CODE_PACKET PxeBisReply;
- EFI_PXE_BASE_CODE_IP_FILTER IpFilter;
- UINT32 ArpCacheEntries;
- EFI_PXE_BASE_CODE_ARP_ENTRY ArpCache[EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES];
- UINT32 RouteTableEntries;
- EFI_PXE_BASE_CODE_ROUTE_ENTRY RouteTable[EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES];
- EFI_PXE_BASE_CODE_ICMP_ERROR IcmpError;
- EFI_PXE_BASE_CODE_TFTP_ERROR TftpError;
-} EFI_PXE_BASE_CODE_MODE;
-
-//
-// PXE Base Code Interface Function definitions
-//
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PXE_BASE_CODE_START) (
- IN struct _EFI_PXE_BASE_CODE *This,
- IN BOOLEAN UseIpv6
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PXE_BASE_CODE_STOP) (
- IN struct _EFI_PXE_BASE_CODE *This
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PXE_BASE_CODE_DHCP) (
- IN struct _EFI_PXE_BASE_CODE *This,
- IN BOOLEAN SortOffers
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PXE_BASE_CODE_DISCOVER) (
- IN struct _EFI_PXE_BASE_CODE *This,
- IN UINT16 Type,
- IN UINT16 *Layer,
- IN BOOLEAN UseBis,
- IN OUT EFI_PXE_BASE_CODE_DISCOVER_INFO *Info OPTIONAL
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PXE_BASE_CODE_MTFTP) (
- IN struct _EFI_PXE_BASE_CODE *This,
- IN EFI_PXE_BASE_CODE_TFTP_OPCODE Operation,
- IN OUT VOID *BufferPtr OPTIONAL,
- IN BOOLEAN Overwrite,
- IN OUT UINT64 *BufferSize,
- IN UINTN *BlockSize OPTIONAL,
- IN EFI_IP_ADDRESS *ServerIp,
- IN UINT8 *Filename,
- IN EFI_PXE_BASE_CODE_MTFTP_INFO *Info OPTIONAL,
- IN BOOLEAN DontUseBuffer
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PXE_BASE_CODE_UDP_WRITE) (
- IN struct _EFI_PXE_BASE_CODE *This,
- IN UINT16 OpFlags,
- IN EFI_IP_ADDRESS *DestIp,
- IN EFI_PXE_BASE_CODE_UDP_PORT *DestPort,
- IN EFI_IP_ADDRESS *GatewayIp, OPTIONAL
- IN EFI_IP_ADDRESS *SrcIp, OPTIONAL
- IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort, OPTIONAL
- IN UINTN *HeaderSize, OPTIONAL
- IN VOID *HeaderPtr, OPTIONAL
- IN UINTN *BufferSize,
- IN VOID *BufferPtr
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PXE_BASE_CODE_UDP_READ) (
- IN struct _EFI_PXE_BASE_CODE *This,
- IN UINT16 OpFlags,
- IN OUT EFI_IP_ADDRESS *DestIp, OPTIONAL
- IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort, OPTIONAL
- IN OUT EFI_IP_ADDRESS *SrcIp, OPTIONAL
- IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort, OPTIONAL
- IN UINTN *HeaderSize, OPTIONAL
- IN VOID *HeaderPtr, OPTIONAL
- IN OUT UINTN *BufferSize,
- IN VOID *BufferPtr
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PXE_BASE_CODE_SET_IP_FILTER) (
- IN struct _EFI_PXE_BASE_CODE *This,
- IN EFI_PXE_BASE_CODE_IP_FILTER *NewFilter
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PXE_BASE_CODE_ARP) (
- IN struct _EFI_PXE_BASE_CODE *This,
- IN EFI_IP_ADDRESS *IpAddr,
- IN EFI_MAC_ADDRESS *MacAddr OPTIONAL
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PXE_BASE_CODE_SET_PARAMETERS) (
- IN struct _EFI_PXE_BASE_CODE *This,
- IN BOOLEAN *NewAutoArp, OPTIONAL
- IN BOOLEAN *NewSendGUID, OPTIONAL
- IN UINT8 *NewTTL, OPTIONAL
- IN UINT8 *NewToS, OPTIONAL
- IN BOOLEAN *NewMakeCallback OPTIONAL
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PXE_BASE_CODE_SET_STATION_IP) (
- IN struct _EFI_PXE_BASE_CODE *This,
- IN EFI_IP_ADDRESS *NewStationIp, OPTIONAL
- IN EFI_IP_ADDRESS *NewSubnetMask OPTIONAL
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_PXE_BASE_CODE_SET_PACKETS) (
- IN struct _EFI_PXE_BASE_CODE *This,
- BOOLEAN *NewDhcpDiscoverValid, OPTIONAL
- BOOLEAN *NewDhcpAckReceived, OPTIONAL
- BOOLEAN *NewProxyOfferReceived, OPTIONAL
- BOOLEAN *NewPxeDiscoverValid, OPTIONAL
- BOOLEAN *NewPxeReplyReceived, OPTIONAL
- BOOLEAN *NewPxeBisReplyReceived,OPTIONAL
- IN EFI_PXE_BASE_CODE_PACKET *NewDhcpDiscover, OPTIONAL
- IN EFI_PXE_BASE_CODE_PACKET *NewDhcpAck, OPTIONAL
- IN EFI_PXE_BASE_CODE_PACKET *NewProxyOffer, OPTIONAL
- IN EFI_PXE_BASE_CODE_PACKET *NewPxeDiscover, OPTIONAL
- IN EFI_PXE_BASE_CODE_PACKET *NewPxeReply, OPTIONAL
- IN EFI_PXE_BASE_CODE_PACKET *NewPxeBisReply OPTIONAL
- );
-
-//
-// PXE Base Code Protocol structure
-//
-
-#define EFI_PXE_BASE_CODE_INTERFACE_REVISION 0x00010000
-
-typedef struct _EFI_PXE_BASE_CODE {
- UINT64 Revision;
- EFI_PXE_BASE_CODE_START Start;
- EFI_PXE_BASE_CODE_STOP Stop;
- EFI_PXE_BASE_CODE_DHCP Dhcp;
- EFI_PXE_BASE_CODE_DISCOVER Discover;
- EFI_PXE_BASE_CODE_MTFTP Mtftp;
- EFI_PXE_BASE_CODE_UDP_WRITE UdpWrite;
- EFI_PXE_BASE_CODE_UDP_READ UdpRead;
- EFI_PXE_BASE_CODE_SET_IP_FILTER SetIpFilter;
- EFI_PXE_BASE_CODE_ARP Arp;
- EFI_PXE_BASE_CODE_SET_PARAMETERS SetParameters;
- EFI_PXE_BASE_CODE_SET_STATION_IP SetStationIp;
- EFI_PXE_BASE_CODE_SET_PACKETS SetPackets;
- EFI_PXE_BASE_CODE_MODE *Mode;
-} EFI_PXE_BASE_CODE;
-
-//
-// Call Back Definitions
-//
-
-#define EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL \
- { 0x245dca21, 0xfb7b, 0x11d3, {0x8f, 0x01, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
-
-//
-// Revision Number
-//
-
-#define EFI_PXE_BASE_CODE_CALLBACK_INTERFACE_REVISION 0x00010000
-
-INTERFACE_DECL(_EFI_PXE_BASE_CODE_CALLBACK);
-
-typedef enum {
- EFI_PXE_BASE_CODE_FUNCTION_FIRST,
- EFI_PXE_BASE_CODE_FUNCTION_DHCP,
- EFI_PXE_BASE_CODE_FUNCTION_DISCOVER,
- EFI_PXE_BASE_CODE_FUNCTION_MTFTP,
- EFI_PXE_BASE_CODE_FUNCTION_UDP_WRITE,
- EFI_PXE_BASE_CODE_FUNCTION_UDP_READ,
- EFI_PXE_BASE_CODE_FUNCTION_ARP,
- EFI_PXE_BASE_CODE_FUNCTION_IGMP,
- EFI_PXE_BASE_CODE_PXE_FUNCTION_LAST
-} EFI_PXE_BASE_CODE_FUNCTION;
-
-typedef enum {
- EFI_PXE_BASE_CODE_CALLBACK_STATUS_FIRST,
- EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE,
- EFI_PXE_BASE_CODE_CALLBACK_STATUS_ABORT,
- EFI_PXE_BASE_CODE_CALLBACK_STATUS_LAST
-} EFI_PXE_BASE_CODE_CALLBACK_STATUS;
-
-typedef
-EFI_PXE_BASE_CODE_CALLBACK_STATUS
-(EFIAPI *EFI_PXE_CALLBACK) (
- IN struct _EFI_PXE_BASE_CODE_CALLBACK *This,
- IN EFI_PXE_BASE_CODE_FUNCTION Function,
- IN BOOLEAN Received,
- IN UINT32 PacketLen,
- IN EFI_PXE_BASE_CODE_PACKET *Packet OPTIONAL
- );
-
-typedef struct _EFI_PXE_BASE_CODE_CALLBACK {
- UINT64 Revision;
- EFI_PXE_CALLBACK Callback;
-} EFI_PXE_BASE_CODE_CALLBACK;
-
-#endif /* _EFIPXEBC_H */
diff --git a/sys/boot/efi/include/efiser.h b/sys/boot/efi/include/efiser.h
deleted file mode 100644
index e3d66e203a4b..000000000000
--- a/sys/boot/efi/include/efiser.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/* $FreeBSD$ */
-#ifndef _EFI_SER_H
-#define _EFI_SER_H
-
-/*++
-
-Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- efiser.h
-
-Abstract:
-
- EFI serial protocol
-
-Revision History
-
---*/
-
-//
-// Serial protocol
-//
-
-#define SERIAL_IO_PROTOCOL \
- { 0xBB25CF6F, 0xF1D4, 0x11D2, {0x9A, 0x0C, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0xFD} }
-
-INTERFACE_DECL(_SERIAL_IO_INTERFACE);
-
-typedef enum {
- DefaultParity,
- NoParity,
- EvenParity,
- OddParity,
- MarkParity,
- SpaceParity
-} EFI_PARITY_TYPE;
-
-typedef enum {
- DefaultStopBits,
- OneStopBit, // 1 stop bit
- OneFiveStopBits, // 1.5 stop bits
- TwoStopBits // 2 stop bits
-} EFI_STOP_BITS_TYPE;
-
-#define EFI_SERIAL_CLEAR_TO_SEND 0x0010 // RO
-#define EFI_SERIAL_DATA_SET_READY 0x0020 // RO
-#define EFI_SERIAL_RING_INDICATE 0x0040 // RO
-#define EFI_SERIAL_CARRIER_DETECT 0x0080 // RO
-#define EFI_SERIAL_REQUEST_TO_SEND 0x0002 // WO
-#define EFI_SERIAL_DATA_TERMINAL_READY 0x0001 // WO
-#define EFI_SERIAL_INPUT_BUFFER_EMPTY 0x0100 // RO
-#define EFI_SERIAL_OUTPUT_BUFFER_EMPTY 0x0200 // RO
-#define EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE 0x1000 // RW
-#define EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE 0x2000 // RW
-#define EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE 0x4000 // RW
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SERIAL_RESET) (
- IN struct _SERIAL_IO_INTERFACE *This
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SERIAL_SET_ATTRIBUTES) (
- IN struct _SERIAL_IO_INTERFACE *This,
- IN UINT64 BaudRate,
- IN UINT32 ReceiveFifoDepth,
- IN UINT32 Timeout,
- IN EFI_PARITY_TYPE Parity,
- IN UINT8 DataBits,
- IN EFI_STOP_BITS_TYPE StopBits
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SERIAL_SET_CONTROL_BITS) (
- IN struct _SERIAL_IO_INTERFACE *This,
- IN UINT32 Control
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SERIAL_GET_CONTROL_BITS) (
- IN struct _SERIAL_IO_INTERFACE *This,
- OUT UINT32 *Control
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SERIAL_WRITE) (
- IN struct _SERIAL_IO_INTERFACE *This,
- IN OUT UINTN *BufferSize,
- IN VOID *Buffer
- );
-
-typedef
-EFI_STATUS
-(EFIAPI *EFI_SERIAL_READ) (
- IN struct _SERIAL_IO_INTERFACE *This,
- IN OUT UINTN *BufferSize,
- OUT VOID *Buffer
- );
-
-typedef struct {
- UINT32 ControlMask;
-
- // current Attributes
- UINT32 Timeout;
- UINT64 BaudRate;
- UINT32 ReceiveFifoDepth;
- UINT32 DataBits;
- UINT32 Parity;
- UINT32 StopBits;
-} SERIAL_IO_MODE;
-
-#define SERIAL_IO_INTERFACE_REVISION 0x00010000
-
-typedef struct _SERIAL_IO_INTERFACE {
- UINT32 Revision;
- EFI_SERIAL_RESET Reset;
- EFI_SERIAL_SET_ATTRIBUTES SetAttributes;
- EFI_SERIAL_SET_CONTROL_BITS SetControl;
- EFI_SERIAL_GET_CONTROL_BITS GetControl;
- EFI_SERIAL_WRITE Write;
- EFI_SERIAL_READ Read;
-
- SERIAL_IO_MODE *Mode;
-} SERIAL_IO_INTERFACE;
-
-#endif
diff --git a/sys/boot/efi/include/efistdarg.h b/sys/boot/efi/include/efistdarg.h
deleted file mode 100644
index 25f556984112..000000000000
--- a/sys/boot/efi/include/efistdarg.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* $FreeBSD$ */
-#ifndef _EFISTDARG_H_
-#define _EFISTDARG_H_
-
-/*++
-
-Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- devpath.h
-
-Abstract:
-
- Defines for parsing the EFI Device Path structures
-
-
-
-Revision History
-
---*/
-
-#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(UINTN) - 1) & ~(sizeof(UINTN) - 1) )
-
-typedef CHAR8 * va_list;
-
-#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
-#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
-#define va_end(ap) ( ap = (va_list)0 )
-
-
-#endif /* _INC_STDARG */
diff --git a/sys/boot/efi/include/efiuga.h b/sys/boot/efi/include/efiuga.h
deleted file mode 100644
index 28c738e7fbc4..000000000000
--- a/sys/boot/efi/include/efiuga.h
+++ /dev/null
@@ -1,168 +0,0 @@
-/* $FreeBSD$ */
-/** @file
- UGA Draw protocol from the EFI 1.1 specification.
-
- Abstraction of a very simple graphics device.
-
- Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
-
- This program and the accompanying materials are licensed and made available
- under the terms and conditions of the BSD License which accompanies this
- distribution. The full text of the license may be found at:
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
- File name: UgaDraw.h
-
-**/
-
-#ifndef __UGA_DRAW_H__
-#define __UGA_DRAW_H__
-
-#define EFI_UGA_DRAW_PROTOCOL_GUID \
- { 0x982c298b, 0xf4fa, 0x41cb, {0xb8, 0x38, 0x77, 0xaa, 0x68, 0x8f, 0xb8, 0x39} }
-
-typedef struct _EFI_UGA_DRAW_PROTOCOL EFI_UGA_DRAW_PROTOCOL;
-
-/**
- Return the current video mode information.
-
- @param This Protocol instance pointer.
- @param HorizontalResolution Current video horizontal resolution in pixels
- @param VerticalResolution Current video vertical resolution in pixels
- @param ColorDepth Current video color depth in bits per pixel
- @param RefreshRate Current video refresh rate in Hz.
-
- @retval EFI_SUCCESS Mode information returned.
- @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()
- @retval EFI_INVALID_PARAMETER One of the input args was NULL.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_UGA_DRAW_PROTOCOL_GET_MODE) (
- IN EFI_UGA_DRAW_PROTOCOL *This,
- OUT UINT32 *HorizontalResolution,
- OUT UINT32 *VerticalResolution,
- OUT UINT32 *ColorDepth,
- OUT UINT32 *RefreshRate
- )
-;
-
-/**
- Return the current video mode information.
-
- @param This Protocol instance pointer.
- @param HorizontalResolution Current video horizontal resolution in pixels
- @param VerticalResolution Current video vertical resolution in pixels
- @param ColorDepth Current video color depth in bits per pixel
- @param RefreshRate Current video refresh rate in Hz.
-
- @retval EFI_SUCCESS Mode information returned.
- @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_UGA_DRAW_PROTOCOL_SET_MODE) (
- IN EFI_UGA_DRAW_PROTOCOL *This,
- IN UINT32 HorizontalResolution,
- IN UINT32 VerticalResolution,
- IN UINT32 ColorDepth,
- IN UINT32 RefreshRate
- )
-;
-
-typedef struct {
- UINT8 Blue;
- UINT8 Green;
- UINT8 Red;
- UINT8 Reserved;
-} EFI_UGA_PIXEL;
-
-typedef union {
- EFI_UGA_PIXEL Pixel;
- UINT32 Raw;
-} EFI_UGA_PIXEL_UNION;
-
-typedef enum {
- EfiUgaVideoFill,
- EfiUgaVideoToBltBuffer,
- EfiUgaBltBufferToVideo,
- EfiUgaVideoToVideo,
- EfiUgaBltMax
-} EFI_UGA_BLT_OPERATION;
-
-/**
- Type specifying a pointer to a function to perform an UGA Blt operation.
-
- The following table defines actions for BltOperations:
-
- <B>EfiUgaVideoFill</B> - Write data from the BltBuffer pixel (SourceX, SourceY)
- directly to every pixel of the video display rectangle
- (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
- Only one pixel will be used from the BltBuffer. Delta is NOT used.
-
- <B>EfiUgaVideoToBltBuffer</B> - Read data from the video display rectangle
- (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in
- the BltBuffer rectangle (DestinationX, DestinationY )
- (DestinationX + Width, DestinationY + Height). If DestinationX or
- DestinationY is not zero then Delta must be set to the length in bytes
- of a row in the BltBuffer.
-
- <B>EfiUgaBltBufferToVideo</B> - Write data from the BltBuffer rectangle
- (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the
- video display rectangle (DestinationX, DestinationY)
- (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is
- not zero then Delta must be set to the length in bytes of a row in the
- BltBuffer.
-
- <B>EfiUgaVideoToVideo</B> - Copy from the video display rectangle (SourceX, SourceY)
- (SourceX + Width, SourceY + Height) .to the video display rectangle
- (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
- The BltBuffer and Delta are not used in this mode.
-
-
- @param[in] This - Protocol instance pointer.
- @param[in] BltBuffer - Buffer containing data to blit into video buffer. This
- buffer has a size of Width*Height*sizeof(EFI_UGA_PIXEL)
- @param[in] BltOperation - Operation to perform on BlitBuffer and video memory
- @param[in] SourceX - X coordinate of source for the BltBuffer.
- @param[in] SourceY - Y coordinate of source for the BltBuffer.
- @param[in] DestinationX - X coordinate of destination for the BltBuffer.
- @param[in] DestinationY - Y coordinate of destination for the BltBuffer.
- @param[in] Width - Width of rectangle in BltBuffer in pixels.
- @param[in] Height - Hight of rectangle in BltBuffer in pixels.
- @param[in] Delta - OPTIONAL
-
- @retval EFI_SUCCESS - The Blt operation completed.
- @retval EFI_INVALID_PARAMETER - BltOperation is not valid.
- @retval EFI_DEVICE_ERROR - A hardware error occurred writting to the video buffer.
-
---*/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_UGA_DRAW_PROTOCOL_BLT) (
- IN EFI_UGA_DRAW_PROTOCOL * This,
- IN EFI_UGA_PIXEL * BltBuffer, OPTIONAL
- IN EFI_UGA_BLT_OPERATION BltOperation,
- IN UINTN SourceX,
- IN UINTN SourceY,
- IN UINTN DestinationX,
- IN UINTN DestinationY,
- IN UINTN Width,
- IN UINTN Height,
- IN UINTN Delta OPTIONAL
- );
-
-struct _EFI_UGA_DRAW_PROTOCOL {
- EFI_UGA_DRAW_PROTOCOL_GET_MODE GetMode;
- EFI_UGA_DRAW_PROTOCOL_SET_MODE SetMode;
- EFI_UGA_DRAW_PROTOCOL_BLT Blt;
-};
-
-extern EFI_GUID gEfiUgaDrawProtocolGuid;
-
-#endif
diff --git a/sys/boot/efi/include/efizfs.h b/sys/boot/efi/include/efizfs.h
deleted file mode 100644
index 1fd034fb2ab3..000000000000
--- a/sys/boot/efi/include/efizfs.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*-
- * Copyright (c) 2016 Eric McCorkle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#include <stdint.h>
-#include <stdbool.h>
-
-#ifndef _EFIZFS_H_
-#define _EFIZFS_H_
-
-#ifdef EFI_ZFS_BOOT
-typedef STAILQ_HEAD(zfsinfo_list, zfsinfo) zfsinfo_list_t;
-
-typedef struct zfsinfo
-{
- STAILQ_ENTRY(zfsinfo) zi_link;
- EFI_HANDLE zi_handle;
- uint64_t zi_pool_guid;
-} zfsinfo_t;
-
-extern uint64_t pool_guid;
-
-extern void efi_zfs_probe(void);
-extern zfsinfo_list_t *efizfs_get_zfsinfo_list(void);
-extern bool efi_zfs_is_preferred(EFI_HANDLE *h);
-extern EFI_HANDLE efizfs_get_handle_by_guid(uint64_t);
-
-#endif
-
-#endif
diff --git a/sys/boot/efi/include/i386/efibind.h b/sys/boot/efi/include/i386/efibind.h
deleted file mode 100644
index 0f1d4f115598..000000000000
--- a/sys/boot/efi/include/i386/efibind.h
+++ /dev/null
@@ -1,267 +0,0 @@
-/* $FreeBSD$ */
-/*++
-
-Copyright (c) 1999 - 2003 Intel Corporation. All rights reserved
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-Module Name:
-
- efefind.h
-
-Abstract:
-
- EFI to compile bindings
-
-
-
-
-Revision History
-
---*/
-
-#pragma pack()
-
-
-#ifdef __FreeBSD__
-#include <sys/stdint.h>
-#else
-//
-// Basic int types of various widths
-//
-
-#if (__STDC_VERSION__ < 199901L )
-
- // No ANSI C 1999/2000 stdint.h integer width declarations
-
- #ifdef _MSC_EXTENSIONS
-
- // Use Microsoft C compiler integer width declarations
-
- typedef unsigned __int64 uint64_t;
- typedef __int64 int64_t;
- typedef unsigned __int32 uint32_t;
- typedef __int32 int32_t;
- typedef unsigned short uint16_t;
- typedef short int16_t;
- typedef unsigned char uint8_t;
- typedef char int8_t;
- #else
- #ifdef UNIX_LP64
-
- // Use LP64 programming model from C_FLAGS for integer width declarations
-
- typedef unsigned long uint64_t;
- typedef long int64_t;
- typedef unsigned int uint32_t;
- typedef int int32_t;
- typedef unsigned short uint16_t;
- typedef short int16_t;
- typedef unsigned char uint8_t;
- typedef char int8_t;
- #else
-
- // Assume P64 programming model from C_FLAGS for integer width declarations
-
- typedef unsigned long long uint64_t;
- typedef long long int64_t;
- typedef unsigned int uint32_t;
- typedef int int32_t;
- typedef unsigned short uint16_t;
- typedef short int16_t;
- typedef unsigned char uint8_t;
- typedef char int8_t;
- #endif
- #endif
-#endif
-#endif /* __FreeBSD__ */
-
-//
-// Basic EFI types of various widths
-//
-
-#ifndef ACPI_THREAD_ID /* ACPI's definitions are fine, use those */
-#define ACPI_USE_SYSTEM_INTTYPES 1 /* Tell ACPI we've defined types */
-
-typedef uint64_t UINT64;
-typedef int64_t INT64;
-
-#ifndef _BASETSD_H_
- typedef uint32_t UINT32;
- typedef int32_t INT32;
-#endif
-
-typedef uint16_t UINT16;
-typedef int16_t INT16;
-typedef uint8_t UINT8;
-typedef int8_t INT8;
-
-#endif
-
-#undef VOID
-#define VOID void
-
-
-typedef int32_t INTN;
-typedef uint32_t UINTN;
-
-#ifdef EFI_NT_EMULATOR
- #define POST_CODE(_Data)
-#else
- #ifdef EFI_DEBUG
-#define POST_CODE(_Data) __asm mov eax,(_Data) __asm out 0x80,al
- #else
- #define POST_CODE(_Data)
- #endif
-#endif
-
-#define EFIERR(a) (0x80000000 | a)
-#define EFI_ERROR_MASK 0x80000000
-#define EFIERR_OEM(a) (0xc0000000 | a)
-
-
-#define BAD_POINTER 0xFBFBFBFB
-#define MAX_ADDRESS 0xFFFFFFFF
-
-#define BREAKPOINT() __asm { int 3 }
-
-//
-// Pointers must be aligned to these address to function
-//
-
-#define MIN_ALIGNMENT_SIZE 4
-
-#define ALIGN_VARIABLE(Value ,Adjustment) \
- (UINTN)Adjustment = 0; \
- if((UINTN)Value % MIN_ALIGNMENT_SIZE) \
- (UINTN)Adjustment = MIN_ALIGNMENT_SIZE - ((UINTN)Value % MIN_ALIGNMENT_SIZE); \
- Value = (UINTN)Value + (UINTN)Adjustment
-
-
-//
-// Define macros to build data structure signatures from characters.
-//
-
-#define EFI_SIGNATURE_16(A,B) ((A) | (B<<8))
-#define EFI_SIGNATURE_32(A,B,C,D) (EFI_SIGNATURE_16(A,B) | (EFI_SIGNATURE_16(C,D) << 16))
-#define EFI_SIGNATURE_64(A,B,C,D,E,F,G,H) (EFI_SIGNATURE_32(A,B,C,D) | ((UINT64)(EFI_SIGNATURE_32(E,F,G,H)) << 32))
-
-//
-// EFIAPI - prototype calling convention for EFI function pointers
-// BOOTSERVICE - prototype for implementation of a boot service interface
-// RUNTIMESERVICE - prototype for implementation of a runtime service interface
-// RUNTIMEFUNCTION - prototype for implementation of a runtime function that is not a service
-// RUNTIME_CODE - pragma macro for declaring runtime code
-//
-
-#ifndef EFIAPI // Forces EFI calling conventions reguardless of compiler options
- #ifdef _MSC_EXTENSIONS
- #define EFIAPI __cdecl // Force C calling convention for Microsoft C compiler
- #else
- #define EFIAPI // Substitute expresion to force C calling convention
- #endif
-#endif
-
-#define BOOTSERVICE
-//#define RUNTIMESERVICE(proto,a) alloc_text("rtcode",a); proto a
-//#define RUNTIMEFUNCTION(proto,a) alloc_text("rtcode",a); proto a
-#define RUNTIMESERVICE
-#define RUNTIMEFUNCTION
-
-
-#define RUNTIME_CODE(a) alloc_text("rtcode", a)
-#define BEGIN_RUNTIME_DATA() data_seg("rtdata")
-#define END_RUNTIME_DATA() data_seg()
-
-#define VOLATILE volatile
-
-#define MEMORY_FENCE()
-
-#ifdef EFI_NO_INTERFACE_DECL
- #define EFI_FORWARD_DECLARATION(x)
- #define EFI_INTERFACE_DECL(x)
-#else
- #define EFI_FORWARD_DECLARATION(x) typedef struct _##x x
- #define EFI_INTERFACE_DECL(x) typedef struct x
-#endif
-
-#ifdef EFI_NT_EMULATOR
-
-//
-// To help ensure proper coding of integrated drivers, they are
-// compiled as DLLs. In NT they require a dll init entry pointer.
-// The macro puts a stub entry point into the DLL so it will load.
-//
-
-#define EFI_DRIVER_ENTRY_POINT(InitFunction) \
- EFI_STATUS \
- InitFunction ( \
- EFI_HANDLE ImageHandle, \
- EFI_SYSTEM_TABLE *SystemTable \
- ); \
- \
- UINTN \
- __stdcall \
- _DllMainCRTStartup ( \
- UINTN Inst, \
- UINTN reason_for_call, \
- VOID *rserved \
- ) \
- { \
- return 1; \
- } \
- \
- int \
- __declspec( dllexport ) \
- __cdecl \
- InitializeDriver ( \
- void *ImageHandle, \
- void *SystemTable \
- ) \
- { \
- return InitFunction(ImageHandle, SystemTable); \
- }
-
-
- #define LOAD_INTERNAL_DRIVER(_if, type, name, entry) \
- (_if)->LoadInternal(type, name, NULL)
-
-#else // EFI_NT_EMULATOR
-
-//
-// When build similar to FW, then link everything together as
-// one big module.
-//
-
- #define EFI_DRIVER_ENTRY_POINT(InitFunction)
-
- #define LOAD_INTERNAL_DRIVER(_if, type, name, entry) \
- (_if)->LoadInternal(type, name, entry)
-
-#endif // EFI_FW_NT
-
-#ifdef __FreeBSD__
-#define INTERFACE_DECL(x) struct x
-#else
-//
-// Some compilers don't support the forward reference construct:
-// typedef struct XXXXX
-//
-// The following macro provide a workaround for such cases.
-//
-#ifdef NO_INTERFACE_DECL
-#define INTERFACE_DECL(x)
-#else
-#define INTERFACE_DECL(x) typedef struct x
-#endif
-#endif /* __FreeBSD__ */
-
-#ifdef _MSC_EXTENSIONS
-#pragma warning ( disable : 4731 ) // Suppress warnings about modification of EBP
-#endif
-
diff --git a/sys/boot/efi/include/i386/pe.h b/sys/boot/efi/include/i386/pe.h
deleted file mode 100644
index e2ae25c3ddf6..000000000000
--- a/sys/boot/efi/include/i386/pe.h
+++ /dev/null
@@ -1,630 +0,0 @@
-/* $FreeBSD$ */
-/*
- PE32+ header file
- */
-#ifndef _PE_H
-#define _PE_H
-
-#define IMAGE_DOS_SIGNATURE 0x5A4D // MZ
-#define IMAGE_OS2_SIGNATURE 0x454E // NE
-#define IMAGE_OS2_SIGNATURE_LE 0x454C // LE
-#define IMAGE_NT_SIGNATURE 0x00004550 // PE00
-#define IMAGE_EDOS_SIGNATURE 0x44454550 // PEED
-
-
-typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header
- UINT16 e_magic; // Magic number
- UINT16 e_cblp; // Bytes on last page of file
- UINT16 e_cp; // Pages in file
- UINT16 e_crlc; // Relocations
- UINT16 e_cparhdr; // Size of header in paragraphs
- UINT16 e_minalloc; // Minimum extra paragraphs needed
- UINT16 e_maxalloc; // Maximum extra paragraphs needed
- UINT16 e_ss; // Initial (relative) SS value
- UINT16 e_sp; // Initial SP value
- UINT16 e_csum; // Checksum
- UINT16 e_ip; // Initial IP value
- UINT16 e_cs; // Initial (relative) CS value
- UINT16 e_lfarlc; // File address of relocation table
- UINT16 e_ovno; // Overlay number
- UINT16 e_res[4]; // Reserved words
- UINT16 e_oemid; // OEM identifier (for e_oeminfo)
- UINT16 e_oeminfo; // OEM information; e_oemid specific
- UINT16 e_res2[10]; // Reserved words
- UINT32 e_lfanew; // File address of new exe header
- } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
-
-typedef struct _IMAGE_OS2_HEADER { // OS/2 .EXE header
- UINT16 ne_magic; // Magic number
- UINT8 ne_ver; // Version number
- UINT8 ne_rev; // Revision number
- UINT16 ne_enttab; // Offset of Entry Table
- UINT16 ne_cbenttab; // Number of bytes in Entry Table
- UINT32 ne_crc; // Checksum of whole file
- UINT16 ne_flags; // Flag UINT16
- UINT16 ne_autodata; // Automatic data segment number
- UINT16 ne_heap; // Initial heap allocation
- UINT16 ne_stack; // Initial stack allocation
- UINT32 ne_csip; // Initial CS:IP setting
- UINT32 ne_sssp; // Initial SS:SP setting
- UINT16 ne_cseg; // Count of file segments
- UINT16 ne_cmod; // Entries in Module Reference Table
- UINT16 ne_cbnrestab; // Size of non-resident name table
- UINT16 ne_segtab; // Offset of Segment Table
- UINT16 ne_rsrctab; // Offset of Resource Table
- UINT16 ne_restab; // Offset of resident name table
- UINT16 ne_modtab; // Offset of Module Reference Table
- UINT16 ne_imptab; // Offset of Imported Names Table
- UINT32 ne_nrestab; // Offset of Non-resident Names Table
- UINT16 ne_cmovent; // Count of movable entries
- UINT16 ne_align; // Segment alignment shift count
- UINT16 ne_cres; // Count of resource segments
- UINT8 ne_exetyp; // Target Operating system
- UINT8 ne_flagsothers; // Other .EXE flags
- UINT16 ne_pretthunks; // offset to return thunks
- UINT16 ne_psegrefbytes; // offset to segment ref. bytes
- UINT16 ne_swaparea; // Minimum code swap area size
- UINT16 ne_expver; // Expected Windows version number
- } IMAGE_OS2_HEADER, *PIMAGE_OS2_HEADER;
-
-//
-// File header format.
-//
-
-typedef struct _IMAGE_FILE_HEADER {
- UINT16 Machine;
- UINT16 NumberOfSections;
- UINT32 TimeDateStamp;
- UINT32 PointerToSymbolTable;
- UINT32 NumberOfSymbols;
- UINT16 SizeOfOptionalHeader;
- UINT16 Characteristics;
-} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
-
-#define IMAGE_SIZEOF_FILE_HEADER 20
-
-#define IMAGE_FILE_RELOCS_STRIPPED 0x0001 // Relocation info stripped from file.
-#define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002 // File is executable (i.e. no unresolved externel references).
-#define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004 // Line nunbers stripped from file.
-#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008 // Local symbols stripped from file.
-#define IMAGE_FILE_BYTES_REVERSED_LO 0x0080 // Bytes of machine word are reversed.
-#define IMAGE_FILE_32BIT_MACHINE 0x0100 // 32 bit word machine.
-#define IMAGE_FILE_DEBUG_STRIPPED 0x0200 // Debugging info stripped from file in .DBG file
-#define IMAGE_FILE_SYSTEM 0x1000 // System File.
-#define IMAGE_FILE_DLL 0x2000 // File is a DLL.
-#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 // Bytes of machine word are reversed.
-
-#define IMAGE_FILE_MACHINE_UNKNOWN 0
-#define IMAGE_FILE_MACHINE_I386 0x14c // Intel 386.
-#define IMAGE_FILE_MACHINE_R3000 0x162 // MIPS little-endian, 0540 big-endian
-#define IMAGE_FILE_MACHINE_R4000 0x166 // MIPS little-endian
-#define IMAGE_FILE_MACHINE_ALPHA 0x184 // Alpha_AXP
-#define IMAGE_FILE_MACHINE_POWERPC 0x1F0 // IBM PowerPC Little-Endian
-#define IMAGE_FILE_MACHINE_TAHOE 0x7cc // Intel EM machine
-//
-// Directory format.
-//
-
-typedef struct _IMAGE_DATA_DIRECTORY {
- UINT32 VirtualAddress;
- UINT32 Size;
-} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
-
-#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
-
-//
-// Optional header format.
-//
-
-typedef struct _IMAGE_OPTIONAL_HEADER {
- //
- // Standard fields.
- //
-
- UINT16 Magic;
- UINT8 MajorLinkerVersion;
- UINT8 MinorLinkerVersion;
- UINT32 SizeOfCode;
- UINT32 SizeOfInitializedData;
- UINT32 SizeOfUninitializedData;
- UINT32 AddressOfEntryPoint;
- UINT32 BaseOfCode;
- UINT32 BaseOfData;
-
- //
- // NT additional fields.
- //
-
- UINT32 ImageBase;
- UINT32 SectionAlignment;
- UINT32 FileAlignment;
- UINT16 MajorOperatingSystemVersion;
- UINT16 MinorOperatingSystemVersion;
- UINT16 MajorImageVersion;
- UINT16 MinorImageVersion;
- UINT16 MajorSubsystemVersion;
- UINT16 MinorSubsystemVersion;
- UINT32 Reserved1;
- UINT32 SizeOfImage;
- UINT32 SizeOfHeaders;
- UINT32 CheckSum;
- UINT16 Subsystem;
- UINT16 DllCharacteristics;
- UINT32 SizeOfStackReserve;
- UINT32 SizeOfStackCommit;
- UINT32 SizeOfHeapReserve;
- UINT32 SizeOfHeapCommit;
- UINT32 LoaderFlags;
- UINT32 NumberOfRvaAndSizes;
- IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
-} IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER;
-
-typedef struct _IMAGE_ROM_OPTIONAL_HEADER {
- UINT16 Magic;
- UINT8 MajorLinkerVersion;
- UINT8 MinorLinkerVersion;
- UINT32 SizeOfCode;
- UINT32 SizeOfInitializedData;
- UINT32 SizeOfUninitializedData;
- UINT32 AddressOfEntryPoint;
- UINT32 BaseOfCode;
- UINT32 BaseOfData;
- UINT32 BaseOfBss;
- UINT32 GprMask;
- UINT32 CprMask[4];
- UINT32 GpValue;
-} IMAGE_ROM_OPTIONAL_HEADER, *PIMAGE_ROM_OPTIONAL_HEADER;
-
-#define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56
-#define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28
-#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER 224
-
-#define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b
-#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107
-
-typedef struct _IMAGE_NT_HEADERS {
- UINT32 Signature;
- IMAGE_FILE_HEADER FileHeader;
- IMAGE_OPTIONAL_HEADER OptionalHeader;
-} IMAGE_NT_HEADERS, *PIMAGE_NT_HEADERS;
-
-typedef struct _IMAGE_ROM_HEADERS {
- IMAGE_FILE_HEADER FileHeader;
- IMAGE_ROM_OPTIONAL_HEADER OptionalHeader;
-} IMAGE_ROM_HEADERS, *PIMAGE_ROM_HEADERS;
-
-#define IMAGE_FIRST_SECTION( ntheader ) ((PIMAGE_SECTION_HEADER) \
- ((UINT32)ntheader + \
- FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) + \
- ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader \
- ))
-
-
-// Subsystem Values
-
-#define IMAGE_SUBSYSTEM_UNKNOWN 0 // Unknown subsystem.
-#define IMAGE_SUBSYSTEM_NATIVE 1 // Image doesn't require a subsystem.
-#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 // Image runs in the Windows GUI subsystem.
-#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 // Image runs in the Windows character subsystem.
-#define IMAGE_SUBSYSTEM_OS2_CUI 5 // image runs in the OS/2 character subsystem.
-#define IMAGE_SUBSYSTEM_POSIX_CUI 7 // image run in the Posix character subsystem.
-
-
-// Directory Entries
-
-#define IMAGE_DIRECTORY_ENTRY_EXPORT 0 // Export Directory
-#define IMAGE_DIRECTORY_ENTRY_IMPORT 1 // Import Directory
-#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 // Resource Directory
-#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 // Exception Directory
-#define IMAGE_DIRECTORY_ENTRY_SECURITY 4 // Security Directory
-#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 // Base Relocation Table
-#define IMAGE_DIRECTORY_ENTRY_DEBUG 6 // Debug Directory
-#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 // Description String
-#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 // Machine Value (MIPS GP)
-#define IMAGE_DIRECTORY_ENTRY_TLS 9 // TLS Directory
-#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 // Load Configuration Directory
-
-//
-// Section header format.
-//
-
-#define IMAGE_SIZEOF_SHORT_NAME 8
-
-typedef struct _IMAGE_SECTION_HEADER {
- UINT8 Name[IMAGE_SIZEOF_SHORT_NAME];
- union {
- UINT32 PhysicalAddress;
- UINT32 VirtualSize;
- } Misc;
- UINT32 VirtualAddress;
- UINT32 SizeOfRawData;
- UINT32 PointerToRawData;
- UINT32 PointerToRelocations;
- UINT32 PointerToLinenumbers;
- UINT16 NumberOfRelocations;
- UINT16 NumberOfLinenumbers;
- UINT32 Characteristics;
-} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
-
-#define IMAGE_SIZEOF_SECTION_HEADER 40
-
-#define IMAGE_SCN_TYPE_NO_PAD 0x00000008 // Reserved.
-
-#define IMAGE_SCN_CNT_CODE 0x00000020 // Section contains code.
-#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040 // Section contains initialized data.
-#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080 // Section contains uninitialized data.
-
-#define IMAGE_SCN_LNK_OTHER 0x00000100 // Reserved.
-#define IMAGE_SCN_LNK_INFO 0x00000200 // Section contains comments or some other type of information.
-#define IMAGE_SCN_LNK_REMOVE 0x00000800 // Section contents will not become part of image.
-#define IMAGE_SCN_LNK_COMDAT 0x00001000 // Section contents comdat.
-
-#define IMAGE_SCN_ALIGN_1BYTES 0x00100000 //
-#define IMAGE_SCN_ALIGN_2BYTES 0x00200000 //
-#define IMAGE_SCN_ALIGN_4BYTES 0x00300000 //
-#define IMAGE_SCN_ALIGN_8BYTES 0x00400000 //
-#define IMAGE_SCN_ALIGN_16BYTES 0x00500000 // Default alignment if no others are specified.
-#define IMAGE_SCN_ALIGN_32BYTES 0x00600000 //
-#define IMAGE_SCN_ALIGN_64BYTES 0x00700000 //
-
-#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000 // Section can be discarded.
-#define IMAGE_SCN_MEM_NOT_CACHED 0x04000000 // Section is not cachable.
-#define IMAGE_SCN_MEM_NOT_PAGED 0x08000000 // Section is not pageable.
-#define IMAGE_SCN_MEM_SHARED 0x10000000 // Section is shareable.
-#define IMAGE_SCN_MEM_EXECUTE 0x20000000 // Section is executable.
-#define IMAGE_SCN_MEM_READ 0x40000000 // Section is readable.
-#define IMAGE_SCN_MEM_WRITE 0x80000000 // Section is writeable.
-
-//
-// Symbol format.
-//
-
-
-#define IMAGE_SIZEOF_SYMBOL 18
-
-//
-// Section values.
-//
-// Symbols have a section number of the section in which they are
-// defined. Otherwise, section numbers have the following meanings:
-//
-
-#define IMAGE_SYM_UNDEFINED (UINT16)0 // Symbol is undefined or is common.
-#define IMAGE_SYM_ABSOLUTE (UINT16)-1 // Symbol is an absolute value.
-#define IMAGE_SYM_DEBUG (UINT16)-2 // Symbol is a special debug item.
-
-//
-// Type (fundamental) values.
-//
-
-#define IMAGE_SYM_TYPE_NULL 0 // no type.
-#define IMAGE_SYM_TYPE_VOID 1 //
-#define IMAGE_SYM_TYPE_CHAR 2 // type character.
-#define IMAGE_SYM_TYPE_SHORT 3 // type short integer.
-#define IMAGE_SYM_TYPE_INT 4 //
-#define IMAGE_SYM_TYPE_LONG 5 //
-#define IMAGE_SYM_TYPE_FLOAT 6 //
-#define IMAGE_SYM_TYPE_DOUBLE 7 //
-#define IMAGE_SYM_TYPE_STRUCT 8 //
-#define IMAGE_SYM_TYPE_UNION 9 //
-#define IMAGE_SYM_TYPE_ENUM 10 // enumeration.
-#define IMAGE_SYM_TYPE_MOE 11 // member of enumeration.
-#define IMAGE_SYM_TYPE_BYTE 12 //
-#define IMAGE_SYM_TYPE_WORD 13 //
-#define IMAGE_SYM_TYPE_UINT 14 //
-#define IMAGE_SYM_TYPE_DWORD 15 //
-
-//
-// Type (derived) values.
-//
-
-#define IMAGE_SYM_DTYPE_NULL 0 // no derived type.
-#define IMAGE_SYM_DTYPE_POINTER 1 // pointer.
-#define IMAGE_SYM_DTYPE_FUNCTION 2 // function.
-#define IMAGE_SYM_DTYPE_ARRAY 3 // array.
-
-//
-// Storage classes.
-//
-
-#define IMAGE_SYM_CLASS_END_OF_FUNCTION (BYTE )-1
-#define IMAGE_SYM_CLASS_NULL 0
-#define IMAGE_SYM_CLASS_AUTOMATIC 1
-#define IMAGE_SYM_CLASS_EXTERNAL 2
-#define IMAGE_SYM_CLASS_STATIC 3
-#define IMAGE_SYM_CLASS_REGISTER 4
-#define IMAGE_SYM_CLASS_EXTERNAL_DEF 5
-#define IMAGE_SYM_CLASS_LABEL 6
-#define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7
-#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8
-#define IMAGE_SYM_CLASS_ARGUMENT 9
-#define IMAGE_SYM_CLASS_STRUCT_TAG 10
-#define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11
-#define IMAGE_SYM_CLASS_UNION_TAG 12
-#define IMAGE_SYM_CLASS_TYPE_DEFINITION 13
-#define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14
-#define IMAGE_SYM_CLASS_ENUM_TAG 15
-#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16
-#define IMAGE_SYM_CLASS_REGISTER_PARAM 17
-#define IMAGE_SYM_CLASS_BIT_FIELD 18
-#define IMAGE_SYM_CLASS_BLOCK 100
-#define IMAGE_SYM_CLASS_FUNCTION 101
-#define IMAGE_SYM_CLASS_END_OF_STRUCT 102
-#define IMAGE_SYM_CLASS_FILE 103
-// new
-#define IMAGE_SYM_CLASS_SECTION 104
-#define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105
-
-// type packing constants
-
-#define N_BTMASK 017
-#define N_TMASK 060
-#define N_TMASK1 0300
-#define N_TMASK2 0360
-#define N_BTSHFT 4
-#define N_TSHIFT 2
-
-// MACROS
-
-//
-// Communal selection types.
-//
-
-#define IMAGE_COMDAT_SELECT_NODUPLICATES 1
-#define IMAGE_COMDAT_SELECT_ANY 2
-#define IMAGE_COMDAT_SELECT_SAME_SIZE 3
-#define IMAGE_COMDAT_SELECT_EXACT_MATCH 4
-#define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5
-
-#define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1
-#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2
-#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3
-
-
-//
-// Relocation format.
-//
-
-typedef struct _IMAGE_RELOCATION {
- UINT32 VirtualAddress;
- UINT32 SymbolTableIndex;
- UINT16 Type;
-} IMAGE_RELOCATION;
-
-#define IMAGE_SIZEOF_RELOCATION 10
-
-//
-// I386 relocation types.
-//
-
-#define IMAGE_REL_I386_ABSOLUTE 0 // Reference is absolute, no relocation is necessary
-#define IMAGE_REL_I386_DIR16 01 // Direct 16-bit reference to the symbols virtual address
-#define IMAGE_REL_I386_REL16 02 // PC-relative 16-bit reference to the symbols virtual address
-#define IMAGE_REL_I386_DIR32 06 // Direct 32-bit reference to the symbols virtual address
-#define IMAGE_REL_I386_DIR32NB 07 // Direct 32-bit reference to the symbols virtual address, base not included
-#define IMAGE_REL_I386_SEG12 011 // Direct 16-bit reference to the segment-selector bits of a 32-bit virtual address
-#define IMAGE_REL_I386_SECTION 012
-#define IMAGE_REL_I386_SECREL 013
-#define IMAGE_REL_I386_REL32 024 // PC-relative 32-bit reference to the symbols virtual address
-
-//
-// MIPS relocation types.
-//
-
-#define IMAGE_REL_MIPS_ABSOLUTE 0 // Reference is absolute, no relocation is necessary
-#define IMAGE_REL_MIPS_REFHALF 01
-#define IMAGE_REL_MIPS_REFWORD 02
-#define IMAGE_REL_MIPS_JMPADDR 03
-#define IMAGE_REL_MIPS_REFHI 04
-#define IMAGE_REL_MIPS_REFLO 05
-#define IMAGE_REL_MIPS_GPREL 06
-#define IMAGE_REL_MIPS_LITERAL 07
-#define IMAGE_REL_MIPS_SECTION 012
-#define IMAGE_REL_MIPS_SECREL 013
-#define IMAGE_REL_MIPS_REFWORDNB 042
-#define IMAGE_REL_MIPS_PAIR 045
-
-//
-// Alpha Relocation types.
-//
-
-#define IMAGE_REL_ALPHA_ABSOLUTE 0x0
-#define IMAGE_REL_ALPHA_REFLONG 0x1
-#define IMAGE_REL_ALPHA_REFQUAD 0x2
-#define IMAGE_REL_ALPHA_GPREL32 0x3
-#define IMAGE_REL_ALPHA_LITERAL 0x4
-#define IMAGE_REL_ALPHA_LITUSE 0x5
-#define IMAGE_REL_ALPHA_GPDISP 0x6
-#define IMAGE_REL_ALPHA_BRADDR 0x7
-#define IMAGE_REL_ALPHA_HINT 0x8
-#define IMAGE_REL_ALPHA_INLINE_REFLONG 0x9
-#define IMAGE_REL_ALPHA_REFHI 0xA
-#define IMAGE_REL_ALPHA_REFLO 0xB
-#define IMAGE_REL_ALPHA_PAIR 0xC
-#define IMAGE_REL_ALPHA_MATCH 0xD
-#define IMAGE_REL_ALPHA_SECTION 0xE
-#define IMAGE_REL_ALPHA_SECREL 0xF
-#define IMAGE_REL_ALPHA_REFLONGNB 0x10
-
-//
-// IBM PowerPC relocation types.
-//
-
-#define IMAGE_REL_PPC_ABSOLUTE 0x0000 // NOP
-#define IMAGE_REL_PPC_ADDR64 0x0001 // 64-bit address
-#define IMAGE_REL_PPC_ADDR32 0x0002 // 32-bit address
-#define IMAGE_REL_PPC_ADDR24 0x0003 // 26-bit address, shifted left 2 (branch absolute)
-#define IMAGE_REL_PPC_ADDR16 0x0004 // 16-bit address
-#define IMAGE_REL_PPC_ADDR14 0x0005 // 16-bit address, shifted left 2 (load doubleword)
-#define IMAGE_REL_PPC_REL24 0x0006 // 26-bit PC-relative offset, shifted left 2 (branch relative)
-#define IMAGE_REL_PPC_REL14 0x0007 // 16-bit PC-relative offset, shifted left 2 (br cond relative)
-#define IMAGE_REL_PPC_TOCREL16 0x0008 // 16-bit offset from TOC base
-#define IMAGE_REL_PPC_TOCREL14 0x0009 // 16-bit offset from TOC base, shifted left 2 (load doubleword)
-
-#define IMAGE_REL_PPC_ADDR32NB 0x000A // 32-bit addr w/o image base
-#define IMAGE_REL_PPC_SECREL 0x000B // va of containing section (as in an image sectionhdr)
-#define IMAGE_REL_PPC_SECTION 0x000C // sectionheader number
-#define IMAGE_REL_PPC_IFGLUE 0x000D // substitute TOC restore instruction iff symbol is glue code
-#define IMAGE_REL_PPC_IMGLUE 0x000E // symbol is glue code; virtual address is TOC restore instruction
-
-#define IMAGE_REL_PPC_TYPEMASK 0x00FF // mask to isolate above values in IMAGE_RELOCATION.Type
-
-// Flag bits in IMAGE_RELOCATION.TYPE
-
-#define IMAGE_REL_PPC_NEG 0x0100 // subtract reloc value rather than adding it
-#define IMAGE_REL_PPC_BRTAKEN 0x0200 // fix branch prediction bit to predict branch taken
-#define IMAGE_REL_PPC_BRNTAKEN 0x0400 // fix branch prediction bit to predict branch not taken
-#define IMAGE_REL_PPC_TOCDEFN 0x0800 // toc slot defined in file (or, data in toc)
-
-//
-// Based relocation format.
-//
-
-typedef struct _IMAGE_BASE_RELOCATION {
- UINT32 VirtualAddress;
- UINT32 SizeOfBlock;
-// UINT16 TypeOffset[1];
-} IMAGE_BASE_RELOCATION, *PIMAGE_BASE_RELOCATION;
-
-#define IMAGE_SIZEOF_BASE_RELOCATION 8
-
-//
-// Based relocation types.
-//
-
-#define IMAGE_REL_BASED_ABSOLUTE 0
-#define IMAGE_REL_BASED_HIGH 1
-#define IMAGE_REL_BASED_LOW 2
-#define IMAGE_REL_BASED_HIGHLOW 3
-#define IMAGE_REL_BASED_HIGHADJ 4
-#define IMAGE_REL_BASED_MIPS_JMPADDR 5
-#define IMAGE_REL_BASED_DIR64 10
-
-//
-// Line number format.
-//
-
-typedef struct _IMAGE_LINENUMBER {
- union {
- UINT32 SymbolTableIndex; // Symbol table index of function name if Linenumber is 0.
- UINT32 VirtualAddress; // Virtual address of line number.
- } Type;
- UINT16 Linenumber; // Line number.
-} IMAGE_LINENUMBER;
-
-#define IMAGE_SIZEOF_LINENUMBER 6
-
-//
-// Archive format.
-//
-
-#define IMAGE_ARCHIVE_START_SIZE 8
-#define IMAGE_ARCHIVE_START "!<arch>\n"
-#define IMAGE_ARCHIVE_END "`\n"
-#define IMAGE_ARCHIVE_PAD "\n"
-#define IMAGE_ARCHIVE_LINKER_MEMBER "/ "
-#define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// "
-
-typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER {
- UINT8 Name[16]; // File member name - `/' terminated.
- UINT8 Date[12]; // File member date - decimal.
- UINT8 UserID[6]; // File member user id - decimal.
- UINT8 GroupID[6]; // File member group id - decimal.
- UINT8 Mode[8]; // File member mode - octal.
- UINT8 Size[10]; // File member size - decimal.
- UINT8 EndHeader[2]; // String to end header.
-} IMAGE_ARCHIVE_MEMBER_HEADER, *PIMAGE_ARCHIVE_MEMBER_HEADER;
-
-#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60
-
-//
-// DLL support.
-//
-
-//
-// Export Format
-//
-
-typedef struct _IMAGE_EXPORT_DIRECTORY {
- UINT32 Characteristics;
- UINT32 TimeDateStamp;
- UINT16 MajorVersion;
- UINT16 MinorVersion;
- UINT32 Name;
- UINT32 Base;
- UINT32 NumberOfFunctions;
- UINT32 NumberOfNames;
- UINT32 *AddressOfFunctions;
- UINT32 *AddressOfNames;
- UINT32 *AddressOfNameOrdinals;
-} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;
-
-//
-// Import Format
-//
-
-typedef struct _IMAGE_IMPORT_BY_NAME {
- UINT16 Hint;
- UINT8 Name[1];
-} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;
-
-typedef struct _IMAGE_THUNK_DATA {
- union {
- UINT32 Function;
- UINT32 Ordinal;
- PIMAGE_IMPORT_BY_NAME AddressOfData;
- } u1;
-} IMAGE_THUNK_DATA, *PIMAGE_THUNK_DATA;
-
-#define IMAGE_ORDINAL_FLAG 0x80000000
-#define IMAGE_SNAP_BY_ORDINAL(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG) != 0)
-#define IMAGE_ORDINAL(Ordinal) (Ordinal & 0xffff)
-
-typedef struct _IMAGE_IMPORT_DESCRIPTOR {
- UINT32 Characteristics;
- UINT32 TimeDateStamp;
- UINT32 ForwarderChain;
- UINT32 Name;
- PIMAGE_THUNK_DATA FirstThunk;
-} IMAGE_IMPORT_DESCRIPTOR, *PIMAGE_IMPORT_DESCRIPTOR;
-
-#define IMAGE_DEBUG_TYPE_CODEVIEW 2
-
-typedef struct {
- UINT32 Characteristics;
- UINT32 TimeDateStamp;
- UINT16 MajorVersion;
- UINT16 MinorVersion;
- UINT32 Type;
- UINT32 SizeOfData;
- UINT32 RVA;
- UINT32 FileOffset;
-} IMAGE_DEBUG_DIRECTORY_ENTRY;
-
-#define CODEVIEW_SIGNATURE_NB10 0x3031424E // "NB10"
-
-typedef struct {
- UINT32 Signature; // "NB10"
- UINT32 Unknown;
- UINT32 Unknown2;
- UINT32 Unknown3;
- //
- // Filename of .PDB goes here
- //
-} EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY;
-
-#define CODEVIEW_SIGNATURE_RSDS 0x53445352 // "RSDS"
-
-typedef struct {
- UINT32 Signature; // "RSDS"
- UINT32 Unknown;
- UINT32 Unknown2;
- UINT32 Unknown3;
- UINT32 Unknown4;
- UINT32 Unknown5;
- //
- // Filename of .PDB goes here
- //
-} EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY;
-
-#endif
diff --git a/sys/boot/efi/libefi/Makefile b/sys/boot/efi/libefi/Makefile
deleted file mode 100644
index e0ffd7b80f62..000000000000
--- a/sys/boot/efi/libefi/Makefile
+++ /dev/null
@@ -1,57 +0,0 @@
-# $FreeBSD$
-
-.include <bsd.init.mk>
-
-.if ${MK_FORTH} != "no"
-.include "${BOOTSRC}/ficl.mk"
-.endif
-
-LIB= efi
-INTERNALLIB=
-WARNS?= 2
-
-SRCS= delay.c devpath.c efi_console.c efichar.c efinet.c efipart.c env.c errno.c \
- handles.c wchar.c libefi.c efi_driver_utils.c efizfs.c devicename.c
-
-.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
-SRCS+= time.c
-.elif ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "arm"
-SRCS+= time_event.c
-.endif
-
-# We implement a slightly non-standard %S in that it always takes a
-# CHAR16 that's common in UEFI-land instead of a wchar_t. This only
-# seems to matter on arm64 where wchar_t defaults to an int instead
-# of a short. There's no good cast to use here so just ignore the
-# warnings for now.
-CWARNFLAGS.efinet.c+= -Wno-format
-CWARNFLAGS.efipart.c+= -Wno-format
-CWARNFLAGS.env.c+= -Wno-format
-
-.if ${MACHINE_CPUARCH} == "aarch64"
-CFLAGS+= -mgeneral-regs-only
-.endif
-.if ${MACHINE_ARCH} == "amd64"
-CFLAGS+= -fPIC -mno-red-zone
-.endif
-CFLAGS+= -I${EFIINC}
-CFLAGS+= -I${EFIINCMD}
-.if ${MK_ZFS} != "no"
-CFLAGS+= -I${ZFSSRC}
-CFLAGS+= -DEFI_ZFS_BOOT
-.endif
-
-# Pick up the bootstrap header for some interface items
-CFLAGS+= -I${LDRSRC}
-
-# Handle FreeBSD specific %b and %D printf format specifiers
-CFLAGS+= ${FORMAT_EXTENSIONS}
-
-# Do not use TERM_EMU on arm and arm64 as it doesn't behave well with serial console
-.if ${MACHINE_CPUARCH} != "arm" && ${MACHINE_CPUARCH} != "aarch64"
-CFLAGS+= -DTERM_EMU
-.endif
-
-CFLAGS+= -DLIBEFI
-
-.include <bsd.lib.mk>
diff --git a/sys/boot/efi/libefi/Makefile.depend b/sys/boot/efi/libefi/Makefile.depend
deleted file mode 100644
index 18be76b0cb6f..000000000000
--- a/sys/boot/efi/libefi/Makefile.depend
+++ /dev/null
@@ -1,13 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- include \
- include/xlocale \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/sys/boot/efi/libefi/delay.c b/sys/boot/efi/libefi/delay.c
deleted file mode 100644
index 723f681c5286..000000000000
--- a/sys/boot/efi/libefi/delay.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * Copyright (c) 2001 Doug Rabson
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <efi.h>
-#include <efilib.h>
-
-void
-delay(int usecs)
-{
- static EFI_EVENT ev = 0;
- UINTN junk;
-
- if (!ev) {
- if (BS->CreateEvent(EVT_TIMER, TPL_APPLICATION, 0, 0, &ev)
- != EFI_SUCCESS)
- return;
- }
-
- BS->SetTimer(ev, TimerRelative, usecs * 10);
- BS->WaitForEvent(1, &ev, &junk);
-}
diff --git a/sys/boot/efi/libefi/devicename.c b/sys/boot/efi/libefi/devicename.c
deleted file mode 100644
index 52e4799c8f3d..000000000000
--- a/sys/boot/efi/libefi/devicename.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/*-
- * Copyright (c) 1998 Michael Smith <msmith@freebsd.org>
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <string.h>
-#include <sys/disklabel.h>
-#include <sys/param.h>
-#include <bootstrap.h>
-#include <disk.h>
-#ifdef EFI_ZFS_BOOT
-#include <libzfs.h>
-#endif
-
-#include <efi.h>
-#include <efilib.h>
-
-static int efi_parsedev(struct devdesc **, const char *, const char **);
-
-/*
- * Point (dev) at an allocated device specifier for the device matching the
- * path in (devspec). If it contains an explicit device specification,
- * use that. If not, use the default device.
- */
-int
-efi_getdev(void **vdev, const char *devspec, const char **path)
-{
- struct devdesc **dev = (struct devdesc **)vdev;
- int rv;
-
- /*
- * If it looks like this is just a path and no device, then
- * use the current device instead.
- */
- if (devspec == NULL || *devspec == '/' || !strchr(devspec, ':')) {
- rv = efi_parsedev(dev, getenv("currdev"), NULL);
- if (rv == 0 && path != NULL)
- *path = devspec;
- return (rv);
- }
-
- /* Parse the device name off the beginning of the devspec. */
- return (efi_parsedev(dev, devspec, path));
-}
-
-/*
- * Point (dev) at an allocated device specifier matching the string version
- * at the beginning of (devspec). Return a pointer to the remaining
- * text in (path).
- *
- * In all cases, the beginning of (devspec) is compared to the names
- * of known devices in the device switch, and then any following text
- * is parsed according to the rules applied to the device type.
- *
- * For disk-type devices, the syntax is:
- *
- * fs<unit>:
- */
-static int
-efi_parsedev(struct devdesc **dev, const char *devspec, const char **path)
-{
- struct devdesc *idev;
- struct devsw *dv;
- int i, unit, err;
- char *cp;
- const char *np;
-
- /* minimum length check */
- if (strlen(devspec) < 2)
- return (EINVAL);
-
- /* look for a device that matches */
- for (i = 0; devsw[i] != NULL; i++) {
- dv = devsw[i];
- if (!strncmp(devspec, dv->dv_name, strlen(dv->dv_name)))
- break;
- }
- if (devsw[i] == NULL)
- return (ENOENT);
-
- np = devspec + strlen(dv->dv_name);
- idev = NULL;
- err = 0;
-
- switch (dv->dv_type) {
- case DEVT_NONE:
- break;
-
- case DEVT_DISK:
- idev = malloc(sizeof(struct disk_devdesc));
- if (idev == NULL)
- return (ENOMEM);
-
- err = disk_parsedev((struct disk_devdesc *)idev, np, path);
- if (err != 0)
- goto fail;
- break;
-
-#ifdef EFI_ZFS_BOOT
- case DEVT_ZFS:
- idev = malloc(sizeof(struct zfs_devdesc));
- if (idev == NULL)
- return (ENOMEM);
-
- err = zfs_parsedev((struct zfs_devdesc*)idev, np, path);
- if (err != 0)
- goto fail;
- break;
-#endif
- default:
- idev = malloc(sizeof(struct devdesc));
- if (idev == NULL)
- return (ENOMEM);
-
- unit = 0;
- cp = (char *)np;
-
- if (*np != '\0' && *np != ':') {
- errno = 0;
- unit = strtol(np, &cp, 0);
- if (errno != 0 || cp == np) {
- err = EUNIT;
- goto fail;
- }
- }
- if (*cp != '\0' && *cp != ':') {
- err = EINVAL;
- goto fail;
- }
-
- idev->d_unit = unit;
- if (path != NULL)
- *path = (*cp == 0) ? cp : cp + 1;
- break;
- }
-
- idev->d_dev = dv;
- idev->d_type = dv->dv_type;
-
- if (dev != NULL)
- *dev = idev;
- else
- free(idev);
- return (0);
-
-fail:
- free(idev);
- return (err);
-}
-
-char *
-efi_fmtdev(void *vdev)
-{
- struct devdesc *dev = (struct devdesc *)vdev;
- static char buf[SPECNAMELEN + 1];
-
- switch(dev->d_type) {
- case DEVT_NONE:
- strcpy(buf, "(no device)");
- break;
-
- case DEVT_DISK:
- return (disk_fmtdev(vdev));
-
-#ifdef EFI_ZFS_BOOT
- case DEVT_ZFS:
- return (zfs_fmtdev(dev));
-#endif
- default:
- sprintf(buf, "%s%d:", dev->d_dev->dv_name, dev->d_unit);
- break;
- }
-
- return (buf);
-}
-
-/*
- * Set currdev to suit the value being supplied in (value)
- */
-int
-efi_setcurrdev(struct env_var *ev, int flags, const void *value)
-{
- struct devdesc *ncurr;
- int rv;
-
- rv = efi_parsedev(&ncurr, value, NULL);
- if (rv != 0)
- return (rv);
-
- free(ncurr);
- env_setenv(ev->ev_name, flags | EV_NOHOOK, value, NULL, NULL);
- return (0);
-}
diff --git a/sys/boot/efi/libefi/devpath.c b/sys/boot/efi/libefi/devpath.c
deleted file mode 100644
index f881cfce9896..000000000000
--- a/sys/boot/efi/libefi/devpath.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/*-
- * Copyright (c) 2016 John Baldwin <jhb@FreeBSD.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <efi.h>
-#include <efilib.h>
-
-static EFI_GUID ImageDevicePathGUID =
- EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID;
-static EFI_GUID DevicePathGUID = DEVICE_PATH_PROTOCOL;
-static EFI_GUID DevicePathToTextGUID = EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID;
-static EFI_DEVICE_PATH_TO_TEXT_PROTOCOL *textProtocol;
-
-EFI_DEVICE_PATH *
-efi_lookup_image_devpath(EFI_HANDLE handle)
-{
- EFI_DEVICE_PATH *devpath;
- EFI_STATUS status;
-
- status = BS->HandleProtocol(handle, &ImageDevicePathGUID,
- (VOID **)&devpath);
- if (EFI_ERROR(status))
- devpath = NULL;
- return (devpath);
-}
-
-EFI_DEVICE_PATH *
-efi_lookup_devpath(EFI_HANDLE handle)
-{
- EFI_DEVICE_PATH *devpath;
- EFI_STATUS status;
-
- status = BS->HandleProtocol(handle, &DevicePathGUID, (VOID **)&devpath);
- if (EFI_ERROR(status))
- devpath = NULL;
- return (devpath);
-}
-
-CHAR16 *
-efi_devpath_name(EFI_DEVICE_PATH *devpath)
-{
- static int once = 1;
- EFI_STATUS status;
-
- if (devpath == NULL)
- return (NULL);
- if (once) {
- status = BS->LocateProtocol(&DevicePathToTextGUID, NULL,
- (VOID **)&textProtocol);
- if (EFI_ERROR(status))
- textProtocol = NULL;
- once = 0;
- }
- if (textProtocol == NULL)
- return (NULL);
-
- return (textProtocol->ConvertDevicePathToText(devpath, TRUE, TRUE));
-}
-
-void
-efi_free_devpath_name(CHAR16 *text)
-{
-
- BS->FreePool(text);
-}
-
-EFI_DEVICE_PATH *
-efi_devpath_last_node(EFI_DEVICE_PATH *devpath)
-{
-
- if (IsDevicePathEnd(devpath))
- return (NULL);
- while (!IsDevicePathEnd(NextDevicePathNode(devpath)))
- devpath = NextDevicePathNode(devpath);
- return (devpath);
-}
-
-EFI_DEVICE_PATH *
-efi_devpath_trim(EFI_DEVICE_PATH *devpath)
-{
- EFI_DEVICE_PATH *node, *copy;
- size_t prefix, len;
-
- if ((node = efi_devpath_last_node(devpath)) == NULL)
- return (NULL);
- prefix = (UINT8 *)node - (UINT8 *)devpath;
- if (prefix == 0)
- return (NULL);
- len = prefix + DevicePathNodeLength(NextDevicePathNode(node));
- copy = malloc(len);
- if (copy != NULL) {
- memcpy(copy, devpath, prefix);
- node = (EFI_DEVICE_PATH *)((UINT8 *)copy + prefix);
- SetDevicePathEndNode(node);
- }
- return (copy);
-}
-
-EFI_HANDLE
-efi_devpath_handle(EFI_DEVICE_PATH *devpath)
-{
- EFI_STATUS status;
- EFI_HANDLE h;
-
- /*
- * There isn't a standard way to locate a handle for a given
- * device path. However, querying the EFI_DEVICE_PATH protocol
- * for a given device path should give us a handle for the
- * closest node in the path to the end that is valid.
- */
- status = BS->LocateDevicePath(&DevicePathGUID, &devpath, &h);
- if (EFI_ERROR(status))
- return (NULL);
- return (h);
-}
-
-bool
-efi_devpath_match(EFI_DEVICE_PATH *devpath1, EFI_DEVICE_PATH *devpath2)
-{
- size_t len;
-
- if (devpath1 == NULL || devpath2 == NULL)
- return (false);
-
- while (true) {
- if (DevicePathType(devpath1) != DevicePathType(devpath2) ||
- DevicePathSubType(devpath1) != DevicePathSubType(devpath2))
- return (false);
-
- len = DevicePathNodeLength(devpath1);
- if (len != DevicePathNodeLength(devpath2))
- return (false);
-
- if (memcmp(devpath1, devpath2, len) != 0)
- return (false);
-
- if (IsDevicePathEnd(devpath1))
- break;
- devpath1 = NextDevicePathNode(devpath1);
- devpath2 = NextDevicePathNode(devpath2);
- }
- return (true);
-}
-
-bool
-efi_devpath_is_prefix(EFI_DEVICE_PATH *prefix, EFI_DEVICE_PATH *path)
-{
- size_t len;
-
- if (prefix == NULL || path == NULL)
- return (false);
-
- while (1) {
- if (IsDevicePathEnd(prefix))
- break;
-
- if (DevicePathType(prefix) != DevicePathType(path) ||
- DevicePathSubType(prefix) != DevicePathSubType(path))
- return (false);
-
- len = DevicePathNodeLength(prefix);
- if (len != DevicePathNodeLength(path))
- return (false);
-
- if (memcmp(prefix, path, len) != 0)
- return (false);
-
- prefix = NextDevicePathNode(prefix);
- path = NextDevicePathNode(path);
- }
- return (true);
-}
diff --git a/sys/boot/efi/libefi/efi_console.c b/sys/boot/efi/libefi/efi_console.c
deleted file mode 100644
index 450ed46a23f5..000000000000
--- a/sys/boot/efi/libefi/efi_console.c
+++ /dev/null
@@ -1,518 +0,0 @@
-/*-
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <efi.h>
-#include <efilib.h>
-
-#include "bootstrap.h"
-
-static SIMPLE_TEXT_OUTPUT_INTERFACE *conout;
-static SIMPLE_INPUT_INTERFACE *conin;
-
-#ifdef TERM_EMU
-#define DEFAULT_FGCOLOR EFI_LIGHTGRAY
-#define DEFAULT_BGCOLOR EFI_BLACK
-
-#define MAXARGS 8
-static int args[MAXARGS], argc;
-static int fg_c, bg_c, curx, cury;
-static int esc;
-
-void get_pos(int *x, int *y);
-void curs_move(int *_x, int *_y, int x, int y);
-static void CL(int);
-void HO(void);
-void end_term(void);
-#endif
-
-static EFI_INPUT_KEY key_cur;
-static int key_pending;
-
-static void efi_cons_probe(struct console *);
-static int efi_cons_init(int);
-void efi_cons_putchar(int);
-int efi_cons_getchar(void);
-void efi_cons_efiputchar(int);
-int efi_cons_poll(void);
-
-struct console efi_console = {
- "efi",
- "EFI console",
- C_WIDEOUT,
- efi_cons_probe,
- efi_cons_init,
- efi_cons_putchar,
- efi_cons_getchar,
- efi_cons_poll
-};
-
-#ifdef TERM_EMU
-
-/* Get cursor position. */
-void
-get_pos(int *x, int *y)
-{
- *x = conout->Mode->CursorColumn;
- *y = conout->Mode->CursorRow;
-}
-
-/* Move cursor to x rows and y cols (0-based). */
-void
-curs_move(int *_x, int *_y, int x, int y)
-{
- conout->SetCursorPosition(conout, x, y);
- if (_x != NULL)
- *_x = conout->Mode->CursorColumn;
- if (_y != NULL)
- *_y = conout->Mode->CursorRow;
-}
-
-/* Clear internal state of the terminal emulation code. */
-void
-end_term(void)
-{
- esc = 0;
- argc = -1;
-}
-
-#endif
-
-static void
-efi_cons_probe(struct console *cp)
-{
- conout = ST->ConOut;
- conin = ST->ConIn;
- cp->c_flags |= C_PRESENTIN | C_PRESENTOUT;
-}
-
-static int
-efi_cons_init(int arg)
-{
-#ifdef TERM_EMU
- conout->SetAttribute(conout, EFI_TEXT_ATTR(DEFAULT_FGCOLOR,
- DEFAULT_BGCOLOR));
- end_term();
- get_pos(&curx, &cury);
- curs_move(&curx, &cury, curx, cury);
- fg_c = DEFAULT_FGCOLOR;
- bg_c = DEFAULT_BGCOLOR;
-#endif
- conout->EnableCursor(conout, TRUE);
- return 0;
-}
-
-static void
-efi_cons_rawputchar(int c)
-{
- int i;
- UINTN x, y;
- conout->QueryMode(conout, conout->Mode->Mode, &x, &y);
-
- if (c == '\t')
- /* XXX lame tab expansion */
- for (i = 0; i < 8; i++)
- efi_cons_rawputchar(' ');
- else {
-#ifndef TERM_EMU
- if (c == '\n')
- efi_cons_efiputchar('\r');
- efi_cons_efiputchar(c);
-#else
- switch (c) {
- case '\r':
- curx = 0;
- curs_move(&curx, &cury, curx, cury);
- return;
- case '\n':
- cury++;
- if (cury >= y) {
- efi_cons_efiputchar('\n');
- cury--;
- } else
- curs_move(&curx, &cury, curx, cury);
- return;
- case '\b':
- if (curx > 0) {
- curx--;
- curs_move(&curx, &cury, curx, cury);
- }
- return;
- default:
- efi_cons_efiputchar(c);
- curx++;
- if (curx > x-1) {
- curx = 0;
- cury++;
- }
- if (cury > y-1) {
- curx = 0;
- cury--;
- }
- }
- curs_move(&curx, &cury, curx, cury);
-#endif
- }
-}
-
-#ifdef TERM_EMU
-/* Gracefully exit ESC-sequence processing in case of misunderstanding. */
-static void
-bail_out(int c)
-{
- char buf[16], *ch;
- int i;
-
- if (esc) {
- efi_cons_rawputchar('\033');
- if (esc != '\033')
- efi_cons_rawputchar(esc);
- for (i = 0; i <= argc; ++i) {
- sprintf(buf, "%d", args[i]);
- ch = buf;
- while (*ch)
- efi_cons_rawputchar(*ch++);
- }
- }
- efi_cons_rawputchar(c);
- end_term();
-}
-
-/* Clear display from current position to end of screen. */
-static void
-CD(void) {
- int i;
- UINTN x, y;
-
- get_pos(&curx, &cury);
- if (curx == 0 && cury == 0) {
- conout->ClearScreen(conout);
- end_term();
- return;
- }
-
- conout->QueryMode(conout, conout->Mode->Mode, &x, &y);
- CL(0); /* clear current line from cursor to end */
- for (i = cury + 1; i < y-1; i++) {
- curs_move(NULL, NULL, 0, i);
- CL(0);
- }
- curs_move(NULL, NULL, curx, cury);
- end_term();
-}
-
-/*
- * Absolute cursor move to args[0] rows and args[1] columns
- * (the coordinates are 1-based).
- */
-static void
-CM(void)
-{
- if (args[0] > 0)
- args[0]--;
- if (args[1] > 0)
- args[1]--;
- curs_move(&curx, &cury, args[1], args[0]);
- end_term();
-}
-
-/* Home cursor (left top corner), also called from mode command. */
-void
-HO(void)
-{
- argc = 1;
- args[0] = args[1] = 1;
- CM();
-}
-
-/* Clear line from current position to end of line */
-static void
-CL(int direction)
-{
- int i, len;
- UINTN x, y;
- CHAR16 *line;
-
- conout->QueryMode(conout, conout->Mode->Mode, &x, &y);
- switch (direction) {
- case 0: /* from cursor to end */
- len = x - curx + 1;
- break;
- case 1: /* from beginning to cursor */
- len = curx;
- break;
- case 2: /* entire line */
- len = x;
- break;
- default: /* NOTREACHED */
- __unreachable();
- }
-
- if (cury == y - 1)
- len--;
-
- line = malloc(len * sizeof (CHAR16));
- if (line == NULL) {
- printf("out of memory\n");
- return;
- }
- for (i = 0; i < len; i++)
- line[i] = ' ';
- line[len-1] = 0;
-
- if (direction != 0)
- curs_move(NULL, NULL, 0, cury);
-
- conout->OutputString(conout, line);
- /* restore cursor position */
- curs_move(NULL, NULL, curx, cury);
- free(line);
- end_term();
-}
-
-static void
-get_arg(int c)
-{
- if (argc < 0)
- argc = 0;
- args[argc] *= 10;
- args[argc] += c - '0';
-}
-
-/* Emulate basic capabilities of cons25 terminal */
-static void
-efi_term_emu(int c)
-{
- static int ansi_col[] = {
- 0, 4, 2, 6, 1, 5, 3, 7
- };
- int t, i;
-
- switch (esc) {
- case 0:
- switch (c) {
- case '\033':
- esc = c;
- break;
- default:
- efi_cons_rawputchar(c);
- break;
- }
- break;
- case '\033':
- switch (c) {
- case '[':
- esc = c;
- args[0] = 0;
- argc = -1;
- break;
- default:
- bail_out(c);
- break;
- }
- break;
- case '[':
- switch (c) {
- case ';':
- if (argc < 0)
- argc = 0;
- else if (argc + 1 >= MAXARGS)
- bail_out(c);
- else
- args[++argc] = 0;
- break;
- case 'H': /* ho = \E[H */
- if (argc < 0)
- HO();
- else if (argc == 1)
- CM();
- else
- bail_out(c);
- break;
- case 'J': /* cd = \E[J */
- if (argc < 0)
- CD();
- else
- bail_out(c);
- break;
- case 'm':
- if (argc < 0) {
- fg_c = DEFAULT_FGCOLOR;
- bg_c = DEFAULT_BGCOLOR;
- }
- for (i = 0; i <= argc; ++i) {
- switch (args[i]) {
- case 0: /* back to normal */
- fg_c = DEFAULT_FGCOLOR;
- bg_c = DEFAULT_BGCOLOR;
- break;
- case 1: /* bold */
- fg_c |= 0x8;
- break;
- case 4: /* underline */
- case 5: /* blink */
- bg_c |= 0x8;
- break;
- case 7: /* reverse */
- t = fg_c;
- fg_c = bg_c;
- bg_c = t;
- break;
- case 30: case 31: case 32: case 33:
- case 34: case 35: case 36: case 37:
- fg_c = ansi_col[args[i] - 30];
- break;
- case 39: /* normal */
- fg_c = DEFAULT_FGCOLOR;
- break;
- case 40: case 41: case 42: case 43:
- case 44: case 45: case 46: case 47:
- bg_c = ansi_col[args[i] - 40];
- break;
- case 49: /* normal */
- bg_c = DEFAULT_BGCOLOR;
- break;
- }
- }
- conout->SetAttribute(conout, EFI_TEXT_ATTR(fg_c, bg_c));
- end_term();
- break;
- default:
- if (isdigit(c))
- get_arg(c);
- else
- bail_out(c);
- break;
- }
- break;
- default:
- bail_out(c);
- break;
- }
-}
-#else
-void
-HO(void)
-{
-}
-#endif
-
-void
-efi_cons_putchar(int c)
-{
-#ifdef TERM_EMU
- efi_term_emu(c);
-#else
- efi_cons_rawputchar(c);
-#endif
-}
-
-int
-efi_cons_getchar()
-{
- EFI_INPUT_KEY key;
- EFI_STATUS status;
- UINTN junk;
-
- if (key_pending) {
- key = key_cur;
- key_pending = 0;
- } else {
- /* Try to read a key stroke. We wait for one if none is pending. */
- status = conin->ReadKeyStroke(conin, &key);
- while (status == EFI_NOT_READY) {
- /* Some EFI implementation (u-boot for example) do not support WaitForKey */
- if (conin->WaitForKey != NULL)
- BS->WaitForEvent(1, &conin->WaitForKey, &junk);
- status = conin->ReadKeyStroke(conin, &key);
- }
- }
-
- switch (key.ScanCode) {
- case 0x17: /* ESC */
- return (0x1b); /* esc */
- }
-
- /* this can return */
- return (key.UnicodeChar);
-}
-
-int
-efi_cons_poll()
-{
- EFI_INPUT_KEY key;
- EFI_STATUS status;
-
- if (conin->WaitForKey == NULL) {
- if (key_pending)
- return (1);
- status = conin->ReadKeyStroke(conin, &key);
- if (status == EFI_SUCCESS) {
- key_cur = key;
- key_pending = 1;
- }
- return (key_pending);
- }
-
- /* This can clear the signaled state. */
- return (BS->CheckEvent(conin->WaitForKey) == EFI_SUCCESS);
-}
-
-/* Plain direct access to EFI OutputString(). */
-void
-efi_cons_efiputchar(int c)
-{
- CHAR16 buf[2];
-
- /*
- * translate box chars to unicode
- */
- switch (c) {
- /* single frame */
- case 0xb3: buf[0] = BOXDRAW_VERTICAL; break;
- case 0xbf: buf[0] = BOXDRAW_DOWN_LEFT; break;
- case 0xc0: buf[0] = BOXDRAW_UP_RIGHT; break;
- case 0xc4: buf[0] = BOXDRAW_HORIZONTAL; break;
- case 0xda: buf[0] = BOXDRAW_DOWN_RIGHT; break;
- case 0xd9: buf[0] = BOXDRAW_UP_LEFT; break;
-
- /* double frame */
- case 0xba: buf[0] = BOXDRAW_DOUBLE_VERTICAL; break;
- case 0xbb: buf[0] = BOXDRAW_DOUBLE_DOWN_LEFT; break;
- case 0xbc: buf[0] = BOXDRAW_DOUBLE_UP_LEFT; break;
- case 0xc8: buf[0] = BOXDRAW_DOUBLE_UP_RIGHT; break;
- case 0xc9: buf[0] = BOXDRAW_DOUBLE_DOWN_RIGHT; break;
- case 0xcd: buf[0] = BOXDRAW_DOUBLE_HORIZONTAL; break;
-
- default:
- buf[0] = c;
- }
- buf[1] = 0; /* terminate string */
-
- conout->OutputString(conout, buf);
-}
diff --git a/sys/boot/efi/libefi/efi_driver_utils.c b/sys/boot/efi/libefi/efi_driver_utils.c
deleted file mode 100644
index 0edea5c1e0d8..000000000000
--- a/sys/boot/efi/libefi/efi_driver_utils.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*-
- * Copyright (c) 2017 Eric McCorkle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#include <stdbool.h>
-
-#include <efi.h>
-#include <efilib.h>
-
-#include "efi_driver_utils.h"
-
-static EFI_GUID DriverBindingProtocolGUID = DRIVER_BINDING_PROTOCOL;
-
-EFI_STATUS
-connect_controllers(EFI_GUID *filter)
-{
- EFI_STATUS status;
- EFI_HANDLE *handles;
- UINTN nhandles, i, hsize;
-
- nhandles = 0;
- hsize = 0;
- status = BS->LocateHandle(ByProtocol, filter, NULL,
- &hsize, NULL);
-
- if(status != EFI_BUFFER_TOO_SMALL) {
- return (status);
- }
-
- handles = malloc(hsize);
- nhandles = hsize / sizeof(EFI_HANDLE);
-
- status = BS->LocateHandle(ByProtocol, filter, NULL,
- &hsize, handles);
-
- if(EFI_ERROR(status)) {
- return (status);
- }
-
- for(i = 0; i < nhandles; i++) {
- BS->ConnectController(handles[i], NULL, NULL, true);
- }
-
- free(handles);
-
- return (status);
-}
-
-EFI_STATUS
-install_driver(EFI_DRIVER_BINDING *driver)
-{
- EFI_STATUS status;
-
- driver->ImageHandle = IH;
- driver->DriverBindingHandle = NULL;
- status = BS->InstallMultipleProtocolInterfaces(
- &(driver->DriverBindingHandle),
- &DriverBindingProtocolGUID, driver,
- NULL);
-
- if (EFI_ERROR(status)) {
- printf("Failed to install driver (%ld)!\n",
- EFI_ERROR_CODE(status));
- }
-
- return (status);
-}
diff --git a/sys/boot/efi/libefi/efichar.c b/sys/boot/efi/libefi/efichar.c
deleted file mode 100644
index dad4e963300c..000000000000
--- a/sys/boot/efi/libefi/efichar.c
+++ /dev/null
@@ -1,201 +0,0 @@
-/*-
- * Copyright (c) 2010 Marcel Moolenaar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <errno.h>
-#ifdef LIBEFI
-#include <stand.h>
-#else
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#endif
-#include <sys/efi.h>
-#include <machine/efi.h>
-
-#include "efichar.h"
-
-int
-ucs2len(const efi_char *str)
-{
- int i;
-
- i = 0;
- while (*str++)
- i++;
- return (i);
-}
-
-/*
- * If nm were converted to utf8, what what would strlen
- * return on the resulting string?
- */
-static size_t
-utf8_len_of_ucs2(const efi_char *nm)
-{
- size_t len;
- efi_char c;
-
- len = 0;
- while (*nm) {
- c = *nm++;
- if (c > 0x7ff)
- len += 3;
- else if (c > 0x7f)
- len += 2;
- else
- len++;
- }
-
- return (len);
-}
-
-int
-ucs2_to_utf8(const efi_char *nm, char **name)
-{
- size_t len, sz;
- efi_char c;
- char *cp;
- int freeit = *name == NULL;
-
- sz = utf8_len_of_ucs2(nm) + 1;
- len = 0;
- if (*name != NULL)
- cp = *name;
- else
- cp = *name = malloc(sz);
- if (*name == NULL)
- return (ENOMEM);
-
- while (*nm) {
- c = *nm++;
- if (c > 0x7ff) {
- if (len++ < sz)
- *cp++ = (char)(0xE0 | (c >> 12));
- if (len++ < sz)
- *cp++ = (char)(0x80 | ((c >> 6) & 0x3f));
- if (len++ < sz)
- *cp++ = (char)(0x80 | (c & 0x3f));
- } else if (c > 0x7f) {
- if (len++ < sz)
- *cp++ = (char)(0xC0 | ((c >> 6) & 0x1f));
- if (len++ < sz)
- *cp++ = (char)(0x80 | (c & 0x3f));
- } else {
- if (len++ < sz)
- *cp++ = (char)(c & 0x7f);
- }
- }
-
- if (len >= sz) {
- /* Absent bugs, we'll never return EOVERFLOW */
- if (freeit)
- free(*name);
- return (EOVERFLOW);
- }
- *cp++ = '\0';
-
- return (0);
-}
-
-int
-utf8_to_ucs2(const char *name, efi_char **nmp, size_t *len)
-{
- efi_char *nm;
- size_t sz;
- uint32_t ucs4;
- int c, bytes;
- int freeit = *nmp == NULL;
-
- sz = strlen(name) * 2 + 2;
- if (*nmp == NULL)
- *nmp = malloc(sz);
- nm = *nmp;
- *len = sz;
-
- ucs4 = 0;
- bytes = 0;
- while (sz > 1 && *name != '\0') {
- c = *name++;
- /*
- * Conditionalize on the two major character types:
- * initial and followup characters.
- */
- if ((c & 0xc0) != 0x80) {
- /* Initial characters. */
- if (bytes != 0) {
- if (freeit)
- free(nm);
- return (EILSEQ);
- }
- if ((c & 0xf8) == 0xf0) {
- ucs4 = c & 0x07;
- bytes = 3;
- } else if ((c & 0xf0) == 0xe0) {
- ucs4 = c & 0x0f;
- bytes = 2;
- } else if ((c & 0xe0) == 0xc0) {
- ucs4 = c & 0x1f;
- bytes = 1;
- } else {
- ucs4 = c & 0x7f;
- bytes = 0;
- }
- } else {
- /* Followup characters. */
- if (bytes > 0) {
- ucs4 = (ucs4 << 6) + (c & 0x3f);
- bytes--;
- } else if (bytes == 0) {
- if (freeit)
- free(nm);
- return (EILSEQ);
- }
- }
- if (bytes == 0) {
- if (ucs4 > 0xffff) {
- if (freeit)
- free(nm);
- return (EILSEQ);
- }
- *nm++ = (efi_char)ucs4;
- sz -= 2;
- }
- }
- if (sz < 2) {
- if (freeit)
- free(nm);
- return (EDOOFUS);
- }
- sz -= 2;
- *nm = 0;
- *len -= sz;
- return (0);
-}
diff --git a/sys/boot/efi/libefi/efinet.c b/sys/boot/efi/libefi/efinet.c
deleted file mode 100644
index cdb63c99f39b..000000000000
--- a/sys/boot/efi/libefi/efinet.c
+++ /dev/null
@@ -1,390 +0,0 @@
-/*-
- * Copyright (c) 2001 Doug Rabson
- * Copyright (c) 2002, 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <net/ethernet.h>
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-
-#include <stand.h>
-#include <net.h>
-#include <netif.h>
-
-#include <efi.h>
-#include <efilib.h>
-
-static EFI_GUID sn_guid = EFI_SIMPLE_NETWORK_PROTOCOL;
-
-static void efinet_end(struct netif *);
-static ssize_t efinet_get(struct iodesc *, void **, time_t);
-static void efinet_init(struct iodesc *, void *);
-static int efinet_match(struct netif *, void *);
-static int efinet_probe(struct netif *, void *);
-static ssize_t efinet_put(struct iodesc *, void *, size_t);
-
-struct netif_driver efinetif = {
- .netif_bname = "efinet",
- .netif_match = efinet_match,
- .netif_probe = efinet_probe,
- .netif_init = efinet_init,
- .netif_get = efinet_get,
- .netif_put = efinet_put,
- .netif_end = efinet_end,
- .netif_ifs = NULL,
- .netif_nifs = 0
-};
-
-#ifdef EFINET_DEBUG
-static void
-dump_mode(EFI_SIMPLE_NETWORK_MODE *mode)
-{
- int i;
-
- printf("State = %x\n", mode->State);
- printf("HwAddressSize = %u\n", mode->HwAddressSize);
- printf("MediaHeaderSize = %u\n", mode->MediaHeaderSize);
- printf("MaxPacketSize = %u\n", mode->MaxPacketSize);
- printf("NvRamSize = %u\n", mode->NvRamSize);
- printf("NvRamAccessSize = %u\n", mode->NvRamAccessSize);
- printf("ReceiveFilterMask = %x\n", mode->ReceiveFilterMask);
- printf("ReceiveFilterSetting = %u\n", mode->ReceiveFilterSetting);
- printf("MaxMCastFilterCount = %u\n", mode->MaxMCastFilterCount);
- printf("MCastFilterCount = %u\n", mode->MCastFilterCount);
- printf("MCastFilter = {");
- for (i = 0; i < mode->MCastFilterCount; i++)
- printf(" %s", ether_sprintf(mode->MCastFilter[i].Addr));
- printf(" }\n");
- printf("CurrentAddress = %s\n",
- ether_sprintf(mode->CurrentAddress.Addr));
- printf("BroadcastAddress = %s\n",
- ether_sprintf(mode->BroadcastAddress.Addr));
- printf("PermanentAddress = %s\n",
- ether_sprintf(mode->PermanentAddress.Addr));
- printf("IfType = %u\n", mode->IfType);
- printf("MacAddressChangeable = %d\n", mode->MacAddressChangeable);
- printf("MultipleTxSupported = %d\n", mode->MultipleTxSupported);
- printf("MediaPresentSupported = %d\n", mode->MediaPresentSupported);
- printf("MediaPresent = %d\n", mode->MediaPresent);
-}
-#endif
-
-static int
-efinet_match(struct netif *nif, void *machdep_hint)
-{
- struct devdesc *dev = machdep_hint;
-
- if (dev->d_unit == nif->nif_unit)
- return (1);
- return(0);
-}
-
-static int
-efinet_probe(struct netif *nif, void *machdep_hint)
-{
-
- return (0);
-}
-
-static ssize_t
-efinet_put(struct iodesc *desc, void *pkt, size_t len)
-{
- struct netif *nif = desc->io_netif;
- EFI_SIMPLE_NETWORK *net;
- EFI_STATUS status;
- void *buf;
-
- net = nif->nif_devdata;
- if (net == NULL)
- return (-1);
-
- status = net->Transmit(net, 0, len, pkt, NULL, NULL, NULL);
- if (status != EFI_SUCCESS)
- return (-1);
-
- /* Wait for the buffer to be transmitted */
- do {
- buf = NULL; /* XXX Is this needed? */
- status = net->GetStatus(net, NULL, &buf);
- /*
- * XXX EFI1.1 and the E1000 card returns a different
- * address than we gave. Sigh.
- */
- } while (status == EFI_SUCCESS && buf == NULL);
-
- /* XXX How do we deal with status != EFI_SUCCESS now? */
- return ((status == EFI_SUCCESS) ? len : -1);
-}
-
-static ssize_t
-efinet_get(struct iodesc *desc, void **pkt, time_t timeout)
-{
- struct netif *nif = desc->io_netif;
- EFI_SIMPLE_NETWORK *net;
- EFI_STATUS status;
- UINTN bufsz;
- time_t t;
- char *buf, *ptr;
- ssize_t ret = -1;
-
- net = nif->nif_devdata;
- if (net == NULL)
- return (ret);
-
- bufsz = net->Mode->MaxPacketSize + ETHER_HDR_LEN + ETHER_CRC_LEN;
- buf = malloc(bufsz + ETHER_ALIGN);
- if (buf == NULL)
- return (ret);
- ptr = buf + ETHER_ALIGN;
-
- t = getsecs();
- while ((getsecs() - t) < timeout) {
- status = net->Receive(net, NULL, &bufsz, ptr, NULL, NULL, NULL);
- if (status == EFI_SUCCESS) {
- *pkt = buf;
- ret = (ssize_t)bufsz;
- break;
- }
- if (status != EFI_NOT_READY)
- break;
- }
-
- if (ret == -1)
- free(buf);
- return (ret);
-}
-
-static void
-efinet_init(struct iodesc *desc, void *machdep_hint)
-{
- struct netif *nif = desc->io_netif;
- EFI_SIMPLE_NETWORK *net;
- EFI_HANDLE h;
- EFI_STATUS status;
- UINT32 mask;
-
- if (nif->nif_driver->netif_ifs[nif->nif_unit].dif_unit < 0) {
- printf("Invalid network interface %d\n", nif->nif_unit);
- return;
- }
-
- h = nif->nif_driver->netif_ifs[nif->nif_unit].dif_private;
- status = BS->HandleProtocol(h, &sn_guid, (VOID **)&nif->nif_devdata);
- if (status != EFI_SUCCESS) {
- printf("net%d: cannot fetch interface data (status=%lu)\n",
- nif->nif_unit, EFI_ERROR_CODE(status));
- return;
- }
-
- net = nif->nif_devdata;
- if (net->Mode->State == EfiSimpleNetworkStopped) {
- status = net->Start(net);
- if (status != EFI_SUCCESS) {
- printf("net%d: cannot start interface (status=%lu)\n",
- nif->nif_unit, EFI_ERROR_CODE(status));
- return;
- }
- }
-
- if (net->Mode->State != EfiSimpleNetworkInitialized) {
- status = net->Initialize(net, 0, 0);
- if (status != EFI_SUCCESS) {
- printf("net%d: cannot init. interface (status=%lu)\n",
- nif->nif_unit, EFI_ERROR_CODE(status));
- return;
- }
- }
-
- mask = EFI_SIMPLE_NETWORK_RECEIVE_UNICAST |
- EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST;
-
- status = net->ReceiveFilters(net, mask, 0, FALSE, 0, NULL);
- if (status != EFI_SUCCESS) {
- printf("net%d: cannot set rx. filters (status=%lu)\n",
- nif->nif_unit, EFI_ERROR_CODE(status));
- return;
- }
-
-#ifdef EFINET_DEBUG
- dump_mode(net->Mode);
-#endif
-
- bcopy(net->Mode->CurrentAddress.Addr, desc->myea, 6);
- desc->xid = 1;
-}
-
-static void
-efinet_end(struct netif *nif)
-{
- EFI_SIMPLE_NETWORK *net = nif->nif_devdata;
-
- if (net == NULL)
- return;
-
- net->Shutdown(net);
-}
-
-static int efinet_dev_init(void);
-static int efinet_dev_print(int);
-
-struct devsw efinet_dev = {
- .dv_name = "net",
- .dv_type = DEVT_NET,
- .dv_init = efinet_dev_init,
- .dv_strategy = NULL, /* Will be set in efinet_dev_init */
- .dv_open = NULL, /* Will be set in efinet_dev_init */
- .dv_close = NULL, /* Will be set in efinet_dev_init */
- .dv_ioctl = noioctl,
- .dv_print = efinet_dev_print,
- .dv_cleanup = NULL
-};
-
-static int
-efinet_dev_init()
-{
- struct netif_dif *dif;
- struct netif_stats *stats;
- EFI_DEVICE_PATH *devpath, *node;
- EFI_SIMPLE_NETWORK *net;
- EFI_HANDLE *handles, *handles2;
- EFI_STATUS status;
- UINTN sz;
- int err, i, nifs;
- extern struct devsw netdev;
-
- sz = 0;
- handles = NULL;
- status = BS->LocateHandle(ByProtocol, &sn_guid, NULL, &sz, NULL);
- if (status == EFI_BUFFER_TOO_SMALL) {
- handles = (EFI_HANDLE *)malloc(sz);
- status = BS->LocateHandle(ByProtocol, &sn_guid, NULL, &sz,
- handles);
- if (EFI_ERROR(status))
- free(handles);
- }
- if (EFI_ERROR(status))
- return (efi_status_to_errno(status));
- handles2 = (EFI_HANDLE *)malloc(sz);
- if (handles2 == NULL) {
- free(handles);
- return (ENOMEM);
- }
- nifs = 0;
- for (i = 0; i < sz / sizeof(EFI_HANDLE); i++) {
- devpath = efi_lookup_devpath(handles[i]);
- if (devpath == NULL)
- continue;
- if ((node = efi_devpath_last_node(devpath)) == NULL)
- continue;
-
- if (DevicePathType(node) != MESSAGING_DEVICE_PATH ||
- DevicePathSubType(node) != MSG_MAC_ADDR_DP)
- continue;
-
- /*
- * Open the network device in exclusive mode. Without this
- * we will be racing with the UEFI network stack. It will
- * pull packets off the network leading to lost packets.
- */
- status = BS->OpenProtocol(handles[i], &sn_guid, (void **)&net,
- IH, NULL, EFI_OPEN_PROTOCOL_EXCLUSIVE);
- if (status != EFI_SUCCESS) {
- printf("Unable to open network interface %d for "
- "exclusive access: %lu\n", i,
- EFI_ERROR_CODE(status));
- }
-
- handles2[nifs] = handles[i];
- nifs++;
- }
- free(handles);
- if (nifs == 0) {
- err = ENOENT;
- goto done;
- }
-
- err = efi_register_handles(&efinet_dev, handles2, NULL, nifs);
- if (err != 0)
- goto done;
-
- efinetif.netif_ifs = calloc(nifs, sizeof(struct netif_dif));
- stats = calloc(nifs, sizeof(struct netif_stats));
- if (efinetif.netif_ifs == NULL || stats == NULL) {
- free(efinetif.netif_ifs);
- free(stats);
- efinetif.netif_ifs = NULL;
- err = ENOMEM;
- goto done;
- }
- efinetif.netif_nifs = nifs;
-
- for (i = 0; i < nifs; i++) {
-
- dif = &efinetif.netif_ifs[i];
- dif->dif_unit = i;
- dif->dif_nsel = 1;
- dif->dif_stats = &stats[i];
- dif->dif_private = handles2[i];
- }
-
- efinet_dev.dv_open = netdev.dv_open;
- efinet_dev.dv_close = netdev.dv_close;
- efinet_dev.dv_strategy = netdev.dv_strategy;
-
-done:
- free(handles2);
- return (err);
-}
-
-static int
-efinet_dev_print(int verbose)
-{
- CHAR16 *text;
- EFI_HANDLE h;
- int unit, ret = 0;
-
- printf("%s devices:", efinet_dev.dv_name);
- if ((ret = pager_output("\n")) != 0)
- return (ret);
-
- for (unit = 0, h = efi_find_handle(&efinet_dev, 0);
- h != NULL; h = efi_find_handle(&efinet_dev, ++unit)) {
- printf(" %s%d:", efinet_dev.dv_name, unit);
- if (verbose) {
- text = efi_devpath_name(efi_lookup_devpath(h));
- if (text != NULL) {
- printf(" %S", text);
- efi_free_devpath_name(text);
- }
- }
- if ((ret = pager_output("\n")) != 0)
- break;
- }
- return (ret);
-}
diff --git a/sys/boot/efi/libefi/efipart.c b/sys/boot/efi/libefi/efipart.c
deleted file mode 100644
index 724233c5ab08..000000000000
--- a/sys/boot/efi/libefi/efipart.c
+++ /dev/null
@@ -1,984 +0,0 @@
-/*-
- * Copyright (c) 2010 Marcel Moolenaar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/disk.h>
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/queue.h>
-#include <stddef.h>
-#include <stdarg.h>
-
-#include <bootstrap.h>
-
-#include <efi.h>
-#include <efilib.h>
-#include <efiprot.h>
-#include <disk.h>
-
-static EFI_GUID blkio_guid = BLOCK_IO_PROTOCOL;
-
-static int efipart_initfd(void);
-static int efipart_initcd(void);
-static int efipart_inithd(void);
-
-static int efipart_strategy(void *, int, daddr_t, size_t, char *, size_t *);
-static int efipart_realstrategy(void *, int, daddr_t, size_t, char *, size_t *);
-
-static int efipart_open(struct open_file *, ...);
-static int efipart_close(struct open_file *);
-static int efipart_ioctl(struct open_file *, u_long, void *);
-
-static int efipart_printfd(int);
-static int efipart_printcd(int);
-static int efipart_printhd(int);
-
-/* EISA PNP ID's for floppy controllers */
-#define PNP0604 0x604
-#define PNP0700 0x700
-#define PNP0701 0x701
-
-struct devsw efipart_fddev = {
- .dv_name = "fd",
- .dv_type = DEVT_FD,
- .dv_init = efipart_initfd,
- .dv_strategy = efipart_strategy,
- .dv_open = efipart_open,
- .dv_close = efipart_close,
- .dv_ioctl = efipart_ioctl,
- .dv_print = efipart_printfd,
- .dv_cleanup = NULL
-};
-
-struct devsw efipart_cddev = {
- .dv_name = "cd",
- .dv_type = DEVT_CD,
- .dv_init = efipart_initcd,
- .dv_strategy = efipart_strategy,
- .dv_open = efipart_open,
- .dv_close = efipart_close,
- .dv_ioctl = efipart_ioctl,
- .dv_print = efipart_printcd,
- .dv_cleanup = NULL
-};
-
-struct devsw efipart_hddev = {
- .dv_name = "disk",
- .dv_type = DEVT_DISK,
- .dv_init = efipart_inithd,
- .dv_strategy = efipart_strategy,
- .dv_open = efipart_open,
- .dv_close = efipart_close,
- .dv_ioctl = efipart_ioctl,
- .dv_print = efipart_printhd,
- .dv_cleanup = NULL
-};
-
-static pdinfo_list_t fdinfo;
-static pdinfo_list_t cdinfo;
-static pdinfo_list_t hdinfo;
-
-static EFI_HANDLE *efipart_handles = NULL;
-static UINTN efipart_nhandles = 0;
-
-pdinfo_list_t *
-efiblk_get_pdinfo_list(struct devsw *dev)
-{
- if (dev->dv_type == DEVT_DISK)
- return (&hdinfo);
- if (dev->dv_type == DEVT_CD)
- return (&cdinfo);
- if (dev->dv_type == DEVT_FD)
- return (&fdinfo);
- return (NULL);
-}
-
-pdinfo_t *
-efiblk_get_pdinfo(struct devdesc *dev)
-{
- pdinfo_list_t *pdi;
- pdinfo_t *pd = NULL;
-
- pdi = efiblk_get_pdinfo_list(dev->d_dev);
- if (pdi == NULL)
- return (pd);
-
- STAILQ_FOREACH(pd, pdi, pd_link) {
- if (pd->pd_unit == dev->d_unit)
- return (pd);
- }
- return (pd);
-}
-
-static int
-efiblk_pdinfo_count(pdinfo_list_t *pdi)
-{
- pdinfo_t *pd;
- int i = 0;
-
- STAILQ_FOREACH(pd, pdi, pd_link) {
- i++;
- }
- return (i);
-}
-
-static int
-efipart_inithandles(void)
-{
- UINTN sz;
- EFI_HANDLE *hin;
- EFI_STATUS status;
-
- if (efipart_nhandles != 0) {
- free(efipart_handles);
- efipart_handles = NULL;
- efipart_nhandles = 0;
- }
-
- sz = 0;
- hin = NULL;
- status = BS->LocateHandle(ByProtocol, &blkio_guid, 0, &sz, hin);
- if (status == EFI_BUFFER_TOO_SMALL) {
- hin = malloc(sz);
- status = BS->LocateHandle(ByProtocol, &blkio_guid, 0, &sz,
- hin);
- if (EFI_ERROR(status))
- free(hin);
- }
- if (EFI_ERROR(status))
- return (efi_status_to_errno(status));
-
- efipart_handles = hin;
- efipart_nhandles = sz;
- return (0);
-}
-
-static ACPI_HID_DEVICE_PATH *
-efipart_floppy(EFI_DEVICE_PATH *node)
-{
- ACPI_HID_DEVICE_PATH *acpi;
-
- if (DevicePathType(node) == ACPI_DEVICE_PATH &&
- DevicePathSubType(node) == ACPI_DP) {
- acpi = (ACPI_HID_DEVICE_PATH *) node;
- if (acpi->HID == EISA_PNP_ID(PNP0604) ||
- acpi->HID == EISA_PNP_ID(PNP0700) ||
- acpi->HID == EISA_PNP_ID(PNP0701)) {
- return (acpi);
- }
- }
- return (NULL);
-}
-
-/*
- * Add or update entries with new handle data.
- */
-static int
-efipart_fdinfo_add(EFI_HANDLE handle, uint32_t uid, EFI_DEVICE_PATH *devpath)
-{
- pdinfo_t *fd;
-
- fd = calloc(1, sizeof(pdinfo_t));
- if (fd == NULL) {
- printf("Failed to register floppy %d, out of memory\n", uid);
- return (ENOMEM);
- }
- STAILQ_INIT(&fd->pd_part);
-
- fd->pd_unit = uid;
- fd->pd_handle = handle;
- fd->pd_devpath = devpath;
- STAILQ_INSERT_TAIL(&fdinfo, fd, pd_link);
- return (0);
-}
-
-static void
-efipart_updatefd(void)
-{
- EFI_DEVICE_PATH *devpath, *node;
- ACPI_HID_DEVICE_PATH *acpi;
- int i, nin;
-
- nin = efipart_nhandles / sizeof (*efipart_handles);
- for (i = 0; i < nin; i++) {
- devpath = efi_lookup_devpath(efipart_handles[i]);
- if (devpath == NULL)
- continue;
-
- if ((node = efi_devpath_last_node(devpath)) == NULL)
- continue;
- if ((acpi = efipart_floppy(node)) != NULL) {
- efipart_fdinfo_add(efipart_handles[i], acpi->UID,
- devpath);
- }
- }
-}
-
-static int
-efipart_initfd(void)
-{
- int rv;
-
- rv = efipart_inithandles();
- if (rv != 0)
- return (rv);
- STAILQ_INIT(&fdinfo);
-
- efipart_updatefd();
-
- bcache_add_dev(efiblk_pdinfo_count(&fdinfo));
- return (0);
-}
-
-/*
- * Add or update entries with new handle data.
- */
-static int
-efipart_cdinfo_add(EFI_HANDLE handle, EFI_HANDLE alias,
- EFI_DEVICE_PATH *devpath)
-{
- int unit;
- pdinfo_t *cd;
- pdinfo_t *pd;
-
- unit = 0;
- STAILQ_FOREACH(pd, &cdinfo, pd_link) {
- if (efi_devpath_match(pd->pd_devpath, devpath) == true) {
- pd->pd_handle = handle;
- pd->pd_alias = alias;
- return (0);
- }
- unit++;
- }
-
- cd = calloc(1, sizeof(pdinfo_t));
- if (cd == NULL) {
- printf("Failed to add cd %d, out of memory\n", unit);
- return (ENOMEM);
- }
- STAILQ_INIT(&cd->pd_part);
-
- cd->pd_handle = handle;
- cd->pd_unit = unit;
- cd->pd_alias = alias;
- cd->pd_devpath = devpath;
- STAILQ_INSERT_TAIL(&cdinfo, cd, pd_link);
- return (0);
-}
-
-static void
-efipart_updatecd(void)
-{
- int i, nin;
- EFI_DEVICE_PATH *devpath, *devpathcpy, *tmpdevpath, *node;
- EFI_HANDLE handle;
- EFI_BLOCK_IO *blkio;
- EFI_STATUS status;
-
- nin = efipart_nhandles / sizeof (*efipart_handles);
- for (i = 0; i < nin; i++) {
- devpath = efi_lookup_devpath(efipart_handles[i]);
- if (devpath == NULL)
- continue;
-
- if ((node = efi_devpath_last_node(devpath)) == NULL)
- continue;
- if (efipart_floppy(node) != NULL)
- continue;
-
- status = BS->HandleProtocol(efipart_handles[i],
- &blkio_guid, (void **)&blkio);
- if (EFI_ERROR(status))
- continue;
- /*
- * If we come across a logical partition of subtype CDROM
- * it doesn't refer to the CD filesystem itself, but rather
- * to any usable El Torito boot image on it. In this case
- * we try to find the parent device and add that instead as
- * that will be the CD filesystem.
- */
- if (DevicePathType(node) == MEDIA_DEVICE_PATH &&
- DevicePathSubType(node) == MEDIA_CDROM_DP) {
- devpathcpy = efi_devpath_trim(devpath);
- if (devpathcpy == NULL)
- continue;
- tmpdevpath = devpathcpy;
- status = BS->LocateDevicePath(&blkio_guid, &tmpdevpath,
- &handle);
- free(devpathcpy);
- if (EFI_ERROR(status))
- continue;
- devpath = efi_lookup_devpath(handle);
- efipart_cdinfo_add(handle, efipart_handles[i],
- devpath);
- continue;
- }
-
- if (DevicePathType(node) == MESSAGING_DEVICE_PATH &&
- DevicePathSubType(node) == MSG_ATAPI_DP) {
- efipart_cdinfo_add(efipart_handles[i], NULL,
- devpath);
- continue;
- }
-
- /* USB or SATA cd without the media. */
- if (blkio->Media->RemovableMedia &&
- !blkio->Media->MediaPresent) {
- efipart_cdinfo_add(efipart_handles[i], NULL,
- devpath);
- }
- }
-}
-
-static int
-efipart_initcd(void)
-{
- int rv;
-
- rv = efipart_inithandles();
- if (rv != 0)
- return (rv);
- STAILQ_INIT(&cdinfo);
-
- efipart_updatecd();
-
- bcache_add_dev(efiblk_pdinfo_count(&cdinfo));
- return (0);
-}
-
-static int
-efipart_hdinfo_add(EFI_HANDLE disk_handle, EFI_HANDLE part_handle)
-{
- EFI_DEVICE_PATH *disk_devpath, *part_devpath;
- HARDDRIVE_DEVICE_PATH *node;
- int unit;
- pdinfo_t *hd, *pd, *last;
-
- disk_devpath = efi_lookup_devpath(disk_handle);
- part_devpath = efi_lookup_devpath(part_handle);
- if (disk_devpath == NULL || part_devpath == NULL) {
- return (ENOENT);
- }
- node = (HARDDRIVE_DEVICE_PATH *)efi_devpath_last_node(part_devpath);
- if (node == NULL)
- return (ENOENT); /* This should not happen. */
-
- pd = calloc(1, sizeof(pdinfo_t));
- if (pd == NULL) {
- printf("Failed to add disk, out of memory\n");
- return (ENOMEM);
- }
- STAILQ_INIT(&pd->pd_part);
-
- STAILQ_FOREACH(hd, &hdinfo, pd_link) {
- if (efi_devpath_match(hd->pd_devpath, disk_devpath) == true) {
- /* Add the partition. */
- pd->pd_handle = part_handle;
- pd->pd_unit = node->PartitionNumber;
- pd->pd_devpath = part_devpath;
- STAILQ_INSERT_TAIL(&hd->pd_part, pd, pd_link);
- return (0);
- }
- }
-
- last = STAILQ_LAST(&hdinfo, pdinfo, pd_link);
- if (last != NULL)
- unit = last->pd_unit + 1;
- else
- unit = 0;
-
- /* Add the disk. */
- hd = pd;
- hd->pd_handle = disk_handle;
- hd->pd_unit = unit;
- hd->pd_devpath = disk_devpath;
- STAILQ_INSERT_TAIL(&hdinfo, hd, pd_link);
-
- pd = calloc(1, sizeof(pdinfo_t));
- if (pd == NULL) {
- printf("Failed to add partition, out of memory\n");
- return (ENOMEM);
- }
- STAILQ_INIT(&pd->pd_part);
-
- /* Add the partition. */
- pd->pd_handle = part_handle;
- pd->pd_unit = node->PartitionNumber;
- pd->pd_devpath = part_devpath;
- STAILQ_INSERT_TAIL(&hd->pd_part, pd, pd_link);
-
- return (0);
-}
-
-/*
- * The MEDIA_FILEPATH_DP has device name.
- * From U-Boot sources it looks like names are in the form
- * of typeN:M, where type is interface type, N is disk id
- * and M is partition id.
- */
-static int
-efipart_hdinfo_add_filepath(EFI_HANDLE disk_handle)
-{
- EFI_DEVICE_PATH *devpath;
- FILEPATH_DEVICE_PATH *node;
- char *pathname, *p;
- int unit, len;
- pdinfo_t *pd, *last;
-
- /* First collect and verify all the data */
- if ((devpath = efi_lookup_devpath(disk_handle)) == NULL)
- return (ENOENT);
- node = (FILEPATH_DEVICE_PATH *)efi_devpath_last_node(devpath);
- if (node == NULL)
- return (ENOENT); /* This should not happen. */
-
- pd = calloc(1, sizeof(pdinfo_t));
- if (pd == NULL) {
- printf("Failed to add disk, out of memory\n");
- return (ENOMEM);
- }
- STAILQ_INIT(&pd->pd_part);
- last = STAILQ_LAST(&hdinfo, pdinfo, pd_link);
- if (last != NULL)
- unit = last->pd_unit + 1;
- else
- unit = 0;
-
- /* FILEPATH_DEVICE_PATH has 0 terminated string */
- for (len = 0; node->PathName[len] != 0; len++)
- ;
- if ((pathname = malloc(len + 1)) == NULL) {
- printf("Failed to add disk, out of memory\n");
- free(pd);
- return (ENOMEM);
- }
- cpy16to8(node->PathName, pathname, len + 1);
- p = strchr(pathname, ':');
-
- /*
- * Assume we are receiving handles in order, first disk handle,
- * then partitions for this disk. If this assumption proves
- * false, this code would need update.
- */
- if (p == NULL) { /* no colon, add the disk */
- pd->pd_handle = disk_handle;
- pd->pd_unit = unit;
- pd->pd_devpath = devpath;
- STAILQ_INSERT_TAIL(&hdinfo, pd, pd_link);
- free(pathname);
- return (0);
- }
- p++; /* skip the colon */
- errno = 0;
- unit = (int)strtol(p, NULL, 0);
- if (errno != 0) {
- printf("Bad unit number for partition \"%s\"\n", pathname);
- free(pathname);
- free(pd);
- return (EUNIT);
- }
-
- /*
- * We should have disk registered, if not, we are receiving
- * handles out of order, and this code should be reworked
- * to create "blank" disk for partition, and to find the
- * disk based on PathName compares.
- */
- if (last == NULL) {
- printf("BUG: No disk for partition \"%s\"\n", pathname);
- free(pathname);
- free(pd);
- return (EINVAL);
- }
- /* Add the partition. */
- pd->pd_handle = disk_handle;
- pd->pd_unit = unit;
- pd->pd_devpath = devpath;
- STAILQ_INSERT_TAIL(&last->pd_part, pd, pd_link);
- free(pathname);
- return (0);
-}
-
-static void
-efipart_updatehd(void)
-{
- int i, nin;
- EFI_DEVICE_PATH *devpath, *devpathcpy, *tmpdevpath, *node;
- EFI_HANDLE handle;
- EFI_BLOCK_IO *blkio;
- EFI_STATUS status;
-
- nin = efipart_nhandles / sizeof (*efipart_handles);
- for (i = 0; i < nin; i++) {
- devpath = efi_lookup_devpath(efipart_handles[i]);
- if (devpath == NULL)
- continue;
-
- if ((node = efi_devpath_last_node(devpath)) == NULL)
- continue;
- if (efipart_floppy(node) != NULL)
- continue;
-
- status = BS->HandleProtocol(efipart_handles[i],
- &blkio_guid, (void **)&blkio);
- if (EFI_ERROR(status))
- continue;
-
- if (DevicePathType(node) == MEDIA_DEVICE_PATH &&
- DevicePathSubType(node) == MEDIA_HARDDRIVE_DP) {
- devpathcpy = efi_devpath_trim(devpath);
- if (devpathcpy == NULL)
- continue;
- tmpdevpath = devpathcpy;
- status = BS->LocateDevicePath(&blkio_guid, &tmpdevpath,
- &handle);
- free(devpathcpy);
- if (EFI_ERROR(status))
- continue;
- /*
- * We do not support nested partitions.
- */
- devpathcpy = efi_lookup_devpath(handle);
- if (devpathcpy == NULL)
- continue;
- if ((node = efi_devpath_last_node(devpathcpy)) == NULL)
- continue;
- if (DevicePathType(node) == MEDIA_DEVICE_PATH &&
- DevicePathSubType(node) == MEDIA_HARDDRIVE_DP)
- continue;
- efipart_hdinfo_add(handle, efipart_handles[i]);
- continue;
- }
-
- if (DevicePathType(node) == MEDIA_DEVICE_PATH &&
- DevicePathSubType(node) == MEDIA_FILEPATH_DP) {
- efipart_hdinfo_add_filepath(efipart_handles[i]);
- continue;
- }
- }
-}
-
-static int
-efipart_inithd(void)
-{
- int rv;
-
- rv = efipart_inithandles();
- if (rv != 0)
- return (rv);
- STAILQ_INIT(&hdinfo);
-
- efipart_updatehd();
-
- bcache_add_dev(efiblk_pdinfo_count(&hdinfo));
- return (0);
-}
-
-static int
-efipart_print_common(struct devsw *dev, pdinfo_list_t *pdlist, int verbose)
-{
- int ret = 0;
- EFI_BLOCK_IO *blkio;
- EFI_STATUS status;
- EFI_HANDLE h;
- pdinfo_t *pd;
- CHAR16 *text;
- struct disk_devdesc pd_dev;
- char line[80];
-
- if (STAILQ_EMPTY(pdlist))
- return (0);
-
- printf("%s devices:", dev->dv_name);
- if ((ret = pager_output("\n")) != 0)
- return (ret);
-
- STAILQ_FOREACH(pd, pdlist, pd_link) {
- h = pd->pd_handle;
- if (verbose) { /* Output the device path. */
- text = efi_devpath_name(efi_lookup_devpath(h));
- if (text != NULL) {
- printf(" %S", text);
- efi_free_devpath_name(text);
- if ((ret = pager_output("\n")) != 0)
- break;
- }
- }
- snprintf(line, sizeof(line),
- " %s%d", dev->dv_name, pd->pd_unit);
- printf("%s:", line);
- status = BS->HandleProtocol(h, &blkio_guid, (void **)&blkio);
- if (!EFI_ERROR(status)) {
- printf(" %llu",
- blkio->Media->LastBlock == 0? 0:
- (unsigned long long) (blkio->Media->LastBlock + 1));
- if (blkio->Media->LastBlock != 0) {
- printf(" X %u", blkio->Media->BlockSize);
- }
- printf(" blocks");
- if (blkio->Media->MediaPresent) {
- if (blkio->Media->RemovableMedia)
- printf(" (removable)");
- } else {
- printf(" (no media)");
- }
- if ((ret = pager_output("\n")) != 0)
- break;
- if (!blkio->Media->MediaPresent)
- continue;
-
- pd->pd_blkio = blkio;
- pd_dev.d_dev = dev;
- pd_dev.d_unit = pd->pd_unit;
- pd_dev.d_slice = -1;
- pd_dev.d_partition = -1;
- pd_dev.d_opendata = blkio;
- ret = disk_open(&pd_dev, blkio->Media->BlockSize *
- (blkio->Media->LastBlock + 1),
- blkio->Media->BlockSize);
- if (ret == 0) {
- ret = disk_print(&pd_dev, line, verbose);
- disk_close(&pd_dev);
- if (ret != 0)
- return (ret);
- } else {
- /* Do not fail from disk_open() */
- ret = 0;
- }
- } else {
- if ((ret = pager_output("\n")) != 0)
- break;
- }
- }
- return (ret);
-}
-
-static int
-efipart_printfd(int verbose)
-{
- return (efipart_print_common(&efipart_fddev, &fdinfo, verbose));
-}
-
-static int
-efipart_printcd(int verbose)
-{
- return (efipart_print_common(&efipart_cddev, &cdinfo, verbose));
-}
-
-static int
-efipart_printhd(int verbose)
-{
- return (efipart_print_common(&efipart_hddev, &hdinfo, verbose));
-}
-
-static int
-efipart_open(struct open_file *f, ...)
-{
- va_list args;
- struct disk_devdesc *dev;
- pdinfo_t *pd;
- EFI_BLOCK_IO *blkio;
- EFI_STATUS status;
-
- va_start(args, f);
- dev = va_arg(args, struct disk_devdesc*);
- va_end(args);
- if (dev == NULL)
- return (EINVAL);
-
- pd = efiblk_get_pdinfo((struct devdesc *)dev);
- if (pd == NULL)
- return (EIO);
-
- if (pd->pd_blkio == NULL) {
- status = BS->HandleProtocol(pd->pd_handle, &blkio_guid,
- (void **)&pd->pd_blkio);
- if (EFI_ERROR(status))
- return (efi_status_to_errno(status));
- }
-
- blkio = pd->pd_blkio;
- if (!blkio->Media->MediaPresent)
- return (EAGAIN);
-
- pd->pd_open++;
- if (pd->pd_bcache == NULL)
- pd->pd_bcache = bcache_allocate();
-
- if (dev->d_dev->dv_type == DEVT_DISK) {
- int rc;
-
- rc = disk_open(dev,
- blkio->Media->BlockSize * (blkio->Media->LastBlock + 1),
- blkio->Media->BlockSize);
- if (rc != 0) {
- pd->pd_open--;
- if (pd->pd_open == 0) {
- pd->pd_blkio = NULL;
- bcache_free(pd->pd_bcache);
- pd->pd_bcache = NULL;
- }
- }
- return (rc);
- }
- return (0);
-}
-
-static int
-efipart_close(struct open_file *f)
-{
- struct disk_devdesc *dev;
- pdinfo_t *pd;
-
- dev = (struct disk_devdesc *)(f->f_devdata);
- if (dev == NULL)
- return (EINVAL);
-
- pd = efiblk_get_pdinfo((struct devdesc *)dev);
- if (pd == NULL)
- return (EINVAL);
-
- pd->pd_open--;
- if (pd->pd_open == 0) {
- pd->pd_blkio = NULL;
- bcache_free(pd->pd_bcache);
- pd->pd_bcache = NULL;
- }
- if (dev->d_dev->dv_type == DEVT_DISK)
- return (disk_close(dev));
- return (0);
-}
-
-static int
-efipart_ioctl(struct open_file *f, u_long cmd, void *data)
-{
- struct disk_devdesc *dev;
- pdinfo_t *pd;
- int rc;
-
- dev = (struct disk_devdesc *)(f->f_devdata);
- if (dev == NULL)
- return (EINVAL);
-
- pd = efiblk_get_pdinfo((struct devdesc *)dev);
- if (pd == NULL)
- return (EINVAL);
-
- if (dev->d_dev->dv_type == DEVT_DISK) {
- rc = disk_ioctl(dev, cmd, data);
- if (rc != ENOTTY)
- return (rc);
- }
-
- switch (cmd) {
- case DIOCGSECTORSIZE:
- *(u_int *)data = pd->pd_blkio->Media->BlockSize;
- break;
- case DIOCGMEDIASIZE:
- *(uint64_t *)data = pd->pd_blkio->Media->BlockSize *
- (pd->pd_blkio->Media->LastBlock + 1);
- break;
- default:
- return (ENOTTY);
- }
-
- return (0);
-}
-
-/*
- * efipart_readwrite()
- * Internal equivalent of efipart_strategy(), which operates on the
- * media-native block size. This function expects all I/O requests
- * to be within the media size and returns an error if such is not
- * the case.
- */
-static int
-efipart_readwrite(EFI_BLOCK_IO *blkio, int rw, daddr_t blk, daddr_t nblks,
- char *buf)
-{
- EFI_STATUS status;
-
- if (blkio == NULL)
- return (ENXIO);
- if (blk < 0 || blk > blkio->Media->LastBlock)
- return (EIO);
- if ((blk + nblks - 1) > blkio->Media->LastBlock)
- return (EIO);
-
- switch (rw & F_MASK) {
- case F_READ:
- status = blkio->ReadBlocks(blkio, blkio->Media->MediaId, blk,
- nblks * blkio->Media->BlockSize, buf);
- break;
- case F_WRITE:
- if (blkio->Media->ReadOnly)
- return (EROFS);
- status = blkio->WriteBlocks(blkio, blkio->Media->MediaId, blk,
- nblks * blkio->Media->BlockSize, buf);
- break;
- default:
- return (ENOSYS);
- }
-
- if (EFI_ERROR(status)) {
- printf("%s: rw=%d, blk=%ju size=%ju status=%lu\n", __func__, rw,
- blk, nblks, EFI_ERROR_CODE(status));
- }
- return (efi_status_to_errno(status));
-}
-
-static int
-efipart_strategy(void *devdata, int rw, daddr_t blk, size_t size,
- char *buf, size_t *rsize)
-{
- struct bcache_devdata bcd;
- struct disk_devdesc *dev;
- pdinfo_t *pd;
-
- dev = (struct disk_devdesc *)devdata;
- if (dev == NULL)
- return (EINVAL);
-
- pd = efiblk_get_pdinfo((struct devdesc *)dev);
- if (pd == NULL)
- return (EINVAL);
-
- if (pd->pd_blkio->Media->RemovableMedia &&
- !pd->pd_blkio->Media->MediaPresent)
- return (ENXIO);
-
- bcd.dv_strategy = efipart_realstrategy;
- bcd.dv_devdata = devdata;
- bcd.dv_cache = pd->pd_bcache;
-
- if (dev->d_dev->dv_type == DEVT_DISK) {
- daddr_t offset;
-
- offset = dev->d_offset * pd->pd_blkio->Media->BlockSize;
- offset /= 512;
- return (bcache_strategy(&bcd, rw, blk + offset,
- size, buf, rsize));
- }
- return (bcache_strategy(&bcd, rw, blk, size, buf, rsize));
-}
-
-static int
-efipart_realstrategy(void *devdata, int rw, daddr_t blk, size_t size,
- char *buf, size_t *rsize)
-{
- struct disk_devdesc *dev = (struct disk_devdesc *)devdata;
- pdinfo_t *pd;
- EFI_BLOCK_IO *blkio;
- uint64_t off, disk_blocks, d_offset = 0;
- char *blkbuf;
- size_t blkoff, blksz;
- int error;
- size_t diskend, readstart;
-
- if (dev == NULL || blk < 0)
- return (EINVAL);
-
- pd = efiblk_get_pdinfo((struct devdesc *)dev);
- if (pd == NULL)
- return (EINVAL);
-
- blkio = pd->pd_blkio;
- if (blkio == NULL)
- return (ENXIO);
-
- if (size == 0 || (size % 512) != 0)
- return (EIO);
-
- off = blk * 512;
- /*
- * Get disk blocks, this value is either for whole disk or for
- * partition.
- */
- disk_blocks = 0;
- if (dev->d_dev->dv_type == DEVT_DISK) {
- if (disk_ioctl(dev, DIOCGMEDIASIZE, &disk_blocks) == 0) {
- /* DIOCGMEDIASIZE does return bytes. */
- disk_blocks /= blkio->Media->BlockSize;
- }
- d_offset = dev->d_offset;
- }
- if (disk_blocks == 0)
- disk_blocks = blkio->Media->LastBlock + 1 - d_offset;
-
- /* make sure we don't read past disk end */
- if ((off + size) / blkio->Media->BlockSize > d_offset + disk_blocks) {
- diskend = d_offset + disk_blocks;
- readstart = off / blkio->Media->BlockSize;
-
- if (diskend <= readstart) {
- if (rsize != NULL)
- *rsize = 0;
-
- return (EIO);
- }
- size = diskend - readstart;
- size = size * blkio->Media->BlockSize;
- }
-
- if (rsize != NULL)
- *rsize = size;
-
- if ((size % blkio->Media->BlockSize == 0) &&
- (off % blkio->Media->BlockSize == 0))
- return (efipart_readwrite(blkio, rw,
- off / blkio->Media->BlockSize,
- size / blkio->Media->BlockSize, buf));
-
- /*
- * The block size of the media is not a multiple of I/O.
- */
- blkbuf = malloc(blkio->Media->BlockSize);
- if (blkbuf == NULL)
- return (ENOMEM);
-
- error = 0;
- blk = off / blkio->Media->BlockSize;
- blkoff = off % blkio->Media->BlockSize;
- blksz = blkio->Media->BlockSize - blkoff;
- while (size > 0) {
- error = efipart_readwrite(blkio, rw, blk, 1, blkbuf);
- if (error)
- break;
- if (size < blksz)
- blksz = size;
- bcopy(blkbuf + blkoff, buf, blksz);
- buf += blksz;
- size -= blksz;
- blk++;
- blkoff = 0;
- blksz = blkio->Media->BlockSize;
- }
-
- free(blkbuf);
- return (error);
-}
diff --git a/sys/boot/efi/libefi/efizfs.c b/sys/boot/efi/libefi/efizfs.c
deleted file mode 100644
index 7c434765fb54..000000000000
--- a/sys/boot/efi/libefi/efizfs.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/*-
- * Copyright (c) 2008-2010 Rui Paulo
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/disk.h>
-#include <stdint.h>
-
-#ifdef EFI_ZFS_BOOT
-#include <libzfs.h>
-#endif
-
-#include <efi.h>
-#include <efilib.h>
-
-#include "efizfs.h"
-
-#ifdef EFI_ZFS_BOOT
-static zfsinfo_list_t zfsinfo;
-
-uint64_t pool_guid;
-
-zfsinfo_list_t *
-efizfs_get_zfsinfo_list(void)
-{
- return (&zfsinfo);
-}
-
-EFI_HANDLE
-efizfs_get_handle_by_guid(uint64_t guid)
-{
- zfsinfo_t *zi;
-
- STAILQ_FOREACH(zi, &zfsinfo, zi_link) {
- if (zi->zi_pool_guid == guid) {
- return (zi->zi_handle);
- }
- }
- return (NULL);
-}
-
-static void
-insert_zfs(EFI_HANDLE handle, uint64_t guid)
-{
- zfsinfo_t *zi;
-
- zi = malloc(sizeof(zfsinfo_t));
- zi->zi_handle = handle;
- zi->zi_pool_guid = guid;
- STAILQ_INSERT_TAIL(&zfsinfo, zi, zi_link);
-}
-
-void
-efi_zfs_probe(void)
-{
- pdinfo_list_t *hdi;
- pdinfo_t *hd, *pd = NULL;
- char devname[SPECNAMELEN + 1];
- uint64_t guid;
-
- hdi = efiblk_get_pdinfo_list(&efipart_hddev);
- STAILQ_INIT(&zfsinfo);
-
- /*
- * Find the handle for the boot device. The boot1 did find the
- * device with loader binary, now we need to search for the
- * same device and if it is part of the zfs pool, we record the
- * pool GUID for currdev setup.
- */
- STAILQ_FOREACH(hd, hdi, pd_link) {
- STAILQ_FOREACH(pd, &hd->pd_part, pd_link) {
-
- snprintf(devname, sizeof(devname), "%s%dp%d:",
- efipart_hddev.dv_name, hd->pd_unit, pd->pd_unit);
-
- if (zfs_probe_dev(devname, &guid) == 0) {
- insert_zfs(pd->pd_handle, guid);
-
- if (efi_zfs_is_preferred(pd->pd_handle))
- pool_guid = guid;
- }
-
- }
- }
-}
-
-uint64_t
-ldi_get_size(void *priv)
-{
- int fd = (uintptr_t) priv;
- uint64_t size;
-
- ioctl(fd, DIOCGMEDIASIZE, &size);
- return (size);
-}
-#endif
diff --git a/sys/boot/efi/libefi/env.c b/sys/boot/efi/libefi/env.c
deleted file mode 100644
index ceec7b2a18f8..000000000000
--- a/sys/boot/efi/libefi/env.c
+++ /dev/null
@@ -1,534 +0,0 @@
-/*
- * Copyright (c) 2015 Netflix, Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <stand.h>
-#include <string.h>
-#include <efi.h>
-#include <efilib.h>
-#include <uuid.h>
-#include <stdbool.h>
-#include "bootstrap.h"
-#ifdef BOOT_FORTH
-#include "ficl.h"
-#endif
-
-/*
- * Simple wrappers to the underlying UEFI functions.
- * See http://wiki.phoenix.com/wiki/index.php/EFI_RUNTIME_SERVICES
- * for details.
- */
-EFI_STATUS
-efi_get_next_variable_name(UINTN *variable_name_size, CHAR16 *variable_name,
- EFI_GUID *vendor_guid)
-{
- return (RS->GetNextVariableName(variable_name_size, variable_name,
- vendor_guid));
-}
-
-EFI_STATUS
-efi_get_variable(CHAR16 *variable_name, EFI_GUID *vendor_guid,
- UINT32 *attributes, UINTN *data_size, void *data)
-{
- return (RS->GetVariable(variable_name, vendor_guid, attributes,
- data_size, data));
-}
-
-EFI_STATUS
-efi_set_variable(CHAR16 *variable_name, EFI_GUID *vendor_guid,
- UINT32 attributes, UINTN data_size, void *data)
-{
- return (RS->SetVariable(variable_name, vendor_guid, attributes,
- data_size, data));
-}
-
-void
-efi_init_environment(void)
-{
- char var[128];
-
- snprintf(var, sizeof(var), "%d.%02d", ST->Hdr.Revision >> 16,
- ST->Hdr.Revision & 0xffff);
- env_setenv("efi-version", EV_VOLATILE, var, env_noset, env_nounset);
-}
-
-COMMAND_SET(efishow, "efi-show", "print some or all EFI variables", command_efi_show);
-
-static int
-efi_print_var(CHAR16 *varnamearg, EFI_GUID *matchguid, int lflag)
-{
- UINTN datasz, i;
- EFI_STATUS status;
- UINT32 attr;
- CHAR16 *data;
- char *str;
- uint32_t uuid_status;
- int is_ascii;
-
- datasz = 0;
- status = RS->GetVariable(varnamearg, matchguid, &attr,
- &datasz, NULL);
- if (status != EFI_BUFFER_TOO_SMALL) {
- printf("Can't get the variable: error %#lx\n",
- EFI_ERROR_CODE(status));
- return (CMD_ERROR);
- }
- data = malloc(datasz);
- status = RS->GetVariable(varnamearg, matchguid, &attr,
- &datasz, data);
- if (status != EFI_SUCCESS) {
- printf("Can't get the variable: error %#lx\n",
- EFI_ERROR_CODE(status));
- return (CMD_ERROR);
- }
- uuid_to_string((uuid_t *)matchguid, &str, &uuid_status);
- if (lflag) {
- printf("%s 0x%x %S", str, attr, varnamearg);
- } else {
- printf("%s 0x%x %S=", str, attr, varnamearg);
- is_ascii = 1;
- free(str);
- str = (char *)data;
- for (i = 0; i < datasz - 1; i++) {
- /* Quick hack to see if this ascii-ish string printable range plus tab, cr and lf */
- if ((str[i] < 32 || str[i] > 126) && str[i] != 9 && str[i] != 10 && str[i] != 13) {
- is_ascii = 0;
- break;
- }
- }
- if (str[datasz - 1] != '\0')
- is_ascii = 0;
- if (is_ascii)
- printf("%s", str);
- else {
- for (i = 0; i < datasz / 2; i++) {
- if (isalnum(data[i]) || isspace(data[i]))
- printf("%c", data[i]);
- else
- printf("\\x%02x", data[i]);
- }
- }
- }
- free(data);
- if (pager_output("\n"))
- return (CMD_WARN);
- return (CMD_OK);
-}
-
-static int
-command_efi_show(int argc, char *argv[])
-{
- /*
- * efi-show [-a]
- * print all the env
- * efi-show -u UUID
- * print all the env vars tagged with UUID
- * efi-show -v var
- * search all the env vars and print the ones matching var
- * eif-show -u UUID -v var
- * eif-show UUID var
- * print all the env vars that match UUID and var
- */
- /* NB: We assume EFI_GUID is the same as uuid_t */
- int aflag = 0, gflag = 0, lflag = 0, vflag = 0;
- int ch, rv;
- unsigned i;
- EFI_STATUS status;
- EFI_GUID varguid = { 0,0,0,{0,0,0,0,0,0,0,0} };
- EFI_GUID matchguid = { 0,0,0,{0,0,0,0,0,0,0,0} };
- uint32_t uuid_status;
- CHAR16 *varname;
- CHAR16 *newnm;
- CHAR16 varnamearg[128];
- UINTN varalloc;
- UINTN varsz;
-
- while ((ch = getopt(argc, argv, "ag:lv:")) != -1) {
- switch (ch) {
- case 'a':
- aflag = 1;
- break;
- case 'g':
- gflag = 1;
- uuid_from_string(optarg, (uuid_t *)&matchguid,
- &uuid_status);
- if (uuid_status != uuid_s_ok) {
- printf("uid %s could not be parsed\n", optarg);
- return (CMD_ERROR);
- }
- break;
- case 'l':
- lflag = 1;
- break;
- case 'v':
- vflag = 1;
- if (strlen(optarg) >= nitems(varnamearg)) {
- printf("Variable %s is longer than %zd characters\n",
- optarg, nitems(varnamearg));
- return (CMD_ERROR);
- }
- for (i = 0; i < strlen(optarg); i++)
- varnamearg[i] = optarg[i];
- varnamearg[i] = 0;
- break;
- default:
- printf("Invalid argument %c\n", ch);
- return (CMD_ERROR);
- }
- }
-
- if (aflag && (gflag || vflag)) {
- printf("-a isn't compatible with -v or -u\n");
- return (CMD_ERROR);
- }
-
- if (aflag && optind < argc) {
- printf("-a doesn't take any args\n");
- return (CMD_ERROR);
- }
-
- if (optind == argc)
- aflag = 1;
-
- argc -= optind;
- argv += optind;
-
- pager_open();
- if (vflag && gflag) {
- rv = efi_print_var(varnamearg, &matchguid, lflag);
- pager_close();
- return (rv);
- }
-
- if (argc == 2) {
- optarg = argv[0];
- if (strlen(optarg) >= nitems(varnamearg)) {
- printf("Variable %s is longer than %zd characters\n",
- optarg, nitems(varnamearg));
- pager_close();
- return (CMD_ERROR);
- }
- for (i = 0; i < strlen(optarg); i++)
- varnamearg[i] = optarg[i];
- varnamearg[i] = 0;
- optarg = argv[1];
- uuid_from_string(optarg, (uuid_t *)&matchguid,
- &uuid_status);
- if (uuid_status != uuid_s_ok) {
- printf("uid %s could not be parsed\n", optarg);
- pager_close();
- return (CMD_ERROR);
- }
- rv = efi_print_var(varnamearg, &matchguid, lflag);
- pager_close();
- return (rv);
- }
-
- if (argc > 0) {
- printf("Too many args %d\n", argc);
- pager_close();
- return (CMD_ERROR);
- }
-
- /*
- * Initiate the search -- note the standard takes pain
- * to specify the initial call must be a poiner to a NULL
- * character.
- */
- varalloc = 1024;
- varname = malloc(varalloc);
- if (varname == NULL) {
- printf("Can't allocate memory to get variables\n");
- pager_close();
- return (CMD_ERROR);
- }
- varname[0] = 0;
- while (1) {
- varsz = varalloc;
- status = RS->GetNextVariableName(&varsz, varname, &varguid);
- if (status == EFI_BUFFER_TOO_SMALL) {
- varalloc = varsz;
- newnm = realloc(varname, varalloc);
- if (newnm == NULL) {
- printf("Can't allocate memory to get variables\n");
- free(varname);
- pager_close();
- return (CMD_ERROR);
- }
- varname = newnm;
- continue; /* Try again with bigger buffer */
- }
- if (status != EFI_SUCCESS)
- break;
- if (aflag) {
- if (efi_print_var(varname, &varguid, lflag) != CMD_OK)
- break;
- continue;
- }
- if (vflag) {
- if (wcscmp(varnamearg, varname) == 0) {
- if (efi_print_var(varname, &varguid, lflag) != CMD_OK)
- break;
- continue;
- }
- }
- if (gflag) {
- if (memcmp(&varguid, &matchguid, sizeof(varguid)) == 0) {
- if (efi_print_var(varname, &varguid, lflag) != CMD_OK)
- break;
- continue;
- }
- }
- }
- free(varname);
- pager_close();
-
- return (CMD_OK);
-}
-
-COMMAND_SET(efiset, "efi-set", "set EFI variables", command_efi_set);
-
-static int
-command_efi_set(int argc, char *argv[])
-{
- char *uuid, *var, *val;
- CHAR16 wvar[128];
- EFI_GUID guid;
- uint32_t status;
- EFI_STATUS err;
-
- if (argc != 4) {
- printf("efi-set uuid var new-value\n");
- return (CMD_ERROR);
- }
- uuid = argv[1];
- var = argv[2];
- val = argv[3];
- uuid_from_string(uuid, (uuid_t *)&guid, &status);
- if (status != uuid_s_ok) {
- printf("Invalid uuid %s %d\n", uuid, status);
- return (CMD_ERROR);
- }
- cpy8to16(var, wvar, sizeof(wvar));
- err = RS->SetVariable(wvar, &guid,
- EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_BOOTSERVICE_ACCESS,
- strlen(val) + 1, val);
- if (EFI_ERROR(err)) {
- printf("Failed to set variable: error %lu\n", EFI_ERROR_CODE(err));
- return (CMD_ERROR);
- }
- return (CMD_OK);
-}
-
-COMMAND_SET(efiunset, "efi-unset", "delete / unset EFI variables", command_efi_unset);
-
-static int
-command_efi_unset(int argc, char *argv[])
-{
- char *uuid, *var;
- CHAR16 wvar[128];
- EFI_GUID guid;
- uint32_t status;
- EFI_STATUS err;
-
- if (argc != 3) {
- printf("efi-unset uuid var\n");
- return (CMD_ERROR);
- }
- uuid = argv[1];
- var = argv[2];
- uuid_from_string(uuid, (uuid_t *)&guid, &status);
- if (status != uuid_s_ok) {
- printf("Invalid uuid %s\n", uuid);
- return (CMD_ERROR);
- }
- cpy8to16(var, wvar, sizeof(wvar));
- err = RS->SetVariable(wvar, &guid, 0, 0, NULL);
- if (EFI_ERROR(err)) {
- printf("Failed to unset variable: error %lu\n", EFI_ERROR_CODE(err));
- return (CMD_ERROR);
- }
- return (CMD_OK);
-}
-
-#ifdef BOOT_FORTH
-/*
- * FreeBSD's loader interaction words and extras
- *
- * efi-setenv ( value n name n guid n attr -- 0 | -1)
- * efi-getenv ( guid n addr n -- addr' n' | -1 )
- * efi-unsetenv ( name n guid n'' -- )
- */
-
-/*
- * efi-setenv
- * efi-setenv ( value n name n guid n attr -- 0 | -1)
- *
- * Set environment variables using the SetVariable EFI runtime service.
- *
- * Value and guid are passed through in binary form (so guid needs to be
- * converted to binary form from its string form). Name is converted from
- * ASCII to CHAR16. Since ficl doesn't have support for internationalization,
- * there's no native CHAR16 interface provided.
- *
- * attr is an int in the bitmask of the following attributes for this variable.
- *
- * 1 Non volatile
- * 2 Boot service access
- * 4 Run time access
- * (corresponding to the same bits in the UEFI spec).
- */
-static void
-ficlEfiSetenv(FICL_VM *pVM)
-{
- char *value = NULL, *guid = NULL;
- CHAR16 *name = NULL;
- int i;
- char *namep, *valuep, *guidp;
- int names, values, guids, attr;
- EFI_STATUS status;
- uuid_t u;
- uint32_t ustatus;
- bool error = true;
-
-#if FICL_ROBUST > 1
- vmCheckStack(pVM, 6, 0);
-#endif
- attr = stackPopINT(pVM->pStack);
- guids = stackPopINT(pVM->pStack);
- guidp = (char*)stackPopPtr(pVM->pStack);
- names = stackPopINT(pVM->pStack);
- namep = (char*)stackPopPtr(pVM->pStack);
- values = stackPopINT(pVM->pStack);
- valuep = (char*)stackPopPtr(pVM->pStack);
-
- guid = (char*)ficlMalloc(guids);
- if (guid == NULL)
- goto out;
- memcpy(guid, guidp, guids);
- uuid_from_string(guid, &u, &ustatus);
- if (ustatus != uuid_s_ok) {
- stackPushINT(pVM->pStack, -1);
- goto out;
- }
-
- name = ficlMalloc((names + 1) * sizeof(CHAR16));
- if (name == NULL)
- goto out;
- for (i = 0; i < names; i++)
- name[i] = namep[i];
- name[names] = 0;
-
- value = ficlMalloc(values + 1);
- if (value == NULL)
- goto out;
- memcpy(value, valuep, values);
-
- status = efi_set_variable(name, (EFI_GUID *)&u, attr, values, value);
- if (status == EFI_SUCCESS)
- stackPushINT(pVM->pStack, 0);
- else
- stackPushINT(pVM->pStack, -1);
- error = false;
-out:
- ficlFree(name);
- ficlFree(value);
- ficlFree(guid);
-
- if (error == true)
- vmThrowErr(pVM, "Error: out of memory");
-}
-
-static void
-ficlEfiGetenv(FICL_VM *pVM)
-{
- char *name, *value;
- char *namep;
- int names;
-
-#if FICL_ROBUST > 1
- vmCheckStack(pVM, 2, 2);
-#endif
- names = stackPopINT(pVM->pStack);
- namep = (char*) stackPopPtr(pVM->pStack);
-
- name = (char*) ficlMalloc(names+1);
- if (name == NULL)
- vmThrowErr(pVM, "Error: out of memory");
- strncpy(name, namep, names);
- name[names] = '\0';
-
- value = getenv(name);
- ficlFree(name);
-
- if(value != NULL) {
- stackPushPtr(pVM->pStack, value);
- stackPushINT(pVM->pStack, strlen(value));
- } else
- stackPushINT(pVM->pStack, -1);
-}
-
-static void
-ficlEfiUnsetenv(FICL_VM *pVM)
-{
- char *name;
- char *namep;
- int names;
-
-#if FICL_ROBUST > 1
- vmCheckStack(pVM, 2, 0);
-#endif
- names = stackPopINT(pVM->pStack);
- namep = (char*) stackPopPtr(pVM->pStack);
-
- name = (char*) ficlMalloc(names+1);
- if (name == NULL)
- vmThrowErr(pVM, "Error: out of memory");
- strncpy(name, namep, names);
- name[names] = '\0';
-
- unsetenv(name);
- ficlFree(name);
-}
-
-/**************************************************************************
-** Add FreeBSD UEFI platform extensions into the system dictionary
-**************************************************************************/
-void ficlEfiCompilePlatform(FICL_SYSTEM *pSys)
-{
- FICL_DICT *dp = pSys->dp;
- assert (dp);
-
- dictAppendWord(dp, "efi-setenv", ficlEfiSetenv, FW_DEFAULT);
- dictAppendWord(dp, "efi-getenv", ficlEfiGetenv, FW_DEFAULT);
- dictAppendWord(dp, "efi-unsetenv", ficlEfiUnsetenv, FW_DEFAULT);
-}
-
-FICL_COMPILE_SET(ficlEfiCompilePlatform);
-
-#endif /* BOOT_FORTH */
diff --git a/sys/boot/efi/libefi/errno.c b/sys/boot/efi/libefi/errno.c
deleted file mode 100644
index 0f354c3f3c8f..000000000000
--- a/sys/boot/efi/libefi/errno.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/*-
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <efi.h>
-#include <efilib.h>
-
-EFI_STATUS
-errno_to_efi_status(int errno)
-{
- EFI_STATUS status;
-
- switch (errno) {
- case EPERM:
- status = EFI_ACCESS_DENIED;
- break;
-
- case EOVERFLOW:
- status = EFI_BUFFER_TOO_SMALL;
- break;
-
- case EIO:
- status = EFI_DEVICE_ERROR;
- break;
-
- case EINVAL:
- status = EFI_INVALID_PARAMETER;
- break;
-
- case ESTALE:
- status = EFI_MEDIA_CHANGED;
- break;
-
- case ENXIO:
- status = EFI_NO_MEDIA;
- break;
-
- case ENOENT:
- status = EFI_NOT_FOUND;
- break;
-
- case ENOMEM:
- status = EFI_OUT_OF_RESOURCES;
- break;
-
- case ENOTSUP:
- case ENODEV:
- status = EFI_UNSUPPORTED;
- break;
-
- case ENOSPC:
- status = EFI_VOLUME_FULL;
- break;
-
- case EACCES:
- status = EFI_WRITE_PROTECTED;
- break;
-
- case 0:
- status = EFI_SUCCESS;
- break;
-
- default:
- status = EFI_DEVICE_ERROR;
- break;
- }
-
- return (status);
-}
-
-int
-efi_status_to_errno(EFI_STATUS status)
-{
- int errno;
-
- switch (status) {
- case EFI_ACCESS_DENIED:
- errno = EPERM;
- break;
-
- case EFI_BUFFER_TOO_SMALL:
- errno = EOVERFLOW;
- break;
-
- case EFI_DEVICE_ERROR:
- case EFI_VOLUME_CORRUPTED:
- errno = EIO;
- break;
-
- case EFI_INVALID_PARAMETER:
- errno = EINVAL;
- break;
-
- case EFI_MEDIA_CHANGED:
- errno = ESTALE;
- break;
-
- case EFI_NO_MEDIA:
- errno = ENXIO;
- break;
-
- case EFI_NOT_FOUND:
- errno = ENOENT;
- break;
-
- case EFI_OUT_OF_RESOURCES:
- errno = ENOMEM;
- break;
-
- case EFI_UNSUPPORTED:
- errno = ENODEV;
- break;
-
- case EFI_VOLUME_FULL:
- errno = ENOSPC;
- break;
-
- case EFI_WRITE_PROTECTED:
- errno = EACCES;
- break;
-
- case 0:
- errno = 0;
- break;
-
- default:
- errno = EDOOFUS;
- break;
- }
-
- return (errno);
-}
diff --git a/sys/boot/efi/libefi/handles.c b/sys/boot/efi/libefi/handles.c
deleted file mode 100644
index 1e4ef6ffbd50..000000000000
--- a/sys/boot/efi/libefi/handles.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*-
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <efi.h>
-#include <efilib.h>
-
-struct entry {
- EFI_HANDLE handle;
- EFI_HANDLE alias;
- struct devsw *dev;
- int unit;
- uint64_t extra;
-};
-
-struct entry *entry;
-int nentries;
-
-int
-efi_register_handles(struct devsw *sw, EFI_HANDLE *handles,
- EFI_HANDLE *aliases, int count)
-{
- size_t sz;
- int idx, unit;
-
- idx = nentries;
- nentries += count;
- sz = nentries * sizeof(struct entry);
- entry = (entry == NULL) ? malloc(sz) : realloc(entry, sz);
- for (unit = 0; idx < nentries; idx++, unit++) {
- entry[idx].handle = handles[unit];
- if (aliases != NULL)
- entry[idx].alias = aliases[unit];
- else
- entry[idx].alias = NULL;
- entry[idx].dev = sw;
- entry[idx].unit = unit;
- }
- return (0);
-}
-
-EFI_HANDLE
-efi_find_handle(struct devsw *dev, int unit)
-{
- int idx;
-
- for (idx = 0; idx < nentries; idx++) {
- if (entry[idx].dev != dev)
- continue;
- if (entry[idx].unit != unit)
- continue;
- return (entry[idx].handle);
- }
- return (NULL);
-}
-
-int
-efi_handle_lookup(EFI_HANDLE h, struct devsw **dev, int *unit, uint64_t *extra)
-{
- int idx;
-
- for (idx = 0; idx < nentries; idx++) {
- if (entry[idx].handle != h && entry[idx].alias != h)
- continue;
- if (dev != NULL)
- *dev = entry[idx].dev;
- if (unit != NULL)
- *unit = entry[idx].unit;
- if (extra != NULL)
- *extra = entry[idx].extra;
- return (0);
- }
- return (ENOENT);
-}
-
-int
-efi_handle_update_dev(EFI_HANDLE h, struct devsw *dev, int unit,
- uint64_t guid)
-{
- int idx;
-
- for (idx = 0; idx < nentries; idx++) {
- if (entry[idx].handle != h)
- continue;
- entry[idx].dev = dev;
- entry[idx].unit = unit;
- entry[idx].alias = NULL;
- entry[idx].extra = guid;
- return (0);
- }
-
- return (ENOENT);
-}
diff --git a/sys/boot/efi/libefi/libefi.c b/sys/boot/efi/libefi/libefi.c
deleted file mode 100644
index e0a721f58b32..000000000000
--- a/sys/boot/efi/libefi/libefi.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/*-
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <efi.h>
-#include <eficonsctl.h>
-#include <efilib.h>
-#include <stand.h>
-
-EFI_HANDLE IH;
-EFI_SYSTEM_TABLE *ST;
-EFI_BOOT_SERVICES *BS;
-EFI_RUNTIME_SERVICES *RS;
-
-void *
-efi_get_table(EFI_GUID *tbl)
-{
- EFI_GUID *id;
- int i;
-
- for (i = 0; i < ST->NumberOfTableEntries; i++) {
- id = &ST->ConfigurationTable[i].VendorGuid;
- if (!memcmp(id, tbl, sizeof(EFI_GUID)))
- return (ST->ConfigurationTable[i].VendorTable);
- }
- return (NULL);
-}
diff --git a/sys/boot/efi/libefi/time.c b/sys/boot/efi/libefi/time.c
deleted file mode 100644
index fe0d2ef2702b..000000000000
--- a/sys/boot/efi/libefi/time.c
+++ /dev/null
@@ -1,283 +0,0 @@
-/*-
- * Copyright (c) 1999, 2000
- * Intel Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- *
- * This product includes software developed by Intel Corporation and
- * its contributors.
- *
- * 4. Neither the name of Intel Corporation or its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION AND CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <efi.h>
-#include <efilib.h>
-
-#include <time.h>
-#include <sys/time.h>
-
-/*
- * Accurate only for the past couple of centuries;
- * that will probably do.
- *
- * (#defines From FreeBSD 3.2 lib/libc/stdtime/tzfile.h)
- */
-
-#define isleap(y) (((y) % 4) == 0 && \
- (((y) % 100) != 0 || ((y) % 400) == 0))
-#define SECSPERHOUR (60*60)
-#define SECSPERDAY (24 * SECSPERHOUR)
-
-/*
- * These arrays give the cumulative number of days up to the first of the
- * month number used as the index (1 -> 12) for regular and leap years.
- * The value at index 13 is for the whole year.
- */
-static const time_t CumulativeDays[2][14] = {
- {0,
- 0,
- 31,
- 31 + 28,
- 31 + 28 + 31,
- 31 + 28 + 31 + 30,
- 31 + 28 + 31 + 30 + 31,
- 31 + 28 + 31 + 30 + 31 + 30,
- 31 + 28 + 31 + 30 + 31 + 30 + 31,
- 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31,
- 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30,
- 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31,
- 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30,
- 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 },
- {0,
- 0,
- 31,
- 31 + 29,
- 31 + 29 + 31,
- 31 + 29 + 31 + 30,
- 31 + 29 + 31 + 30 + 31,
- 31 + 29 + 31 + 30 + 31 + 30,
- 31 + 29 + 31 + 30 + 31 + 30 + 31,
- 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31,
- 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30,
- 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31,
- 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30,
- 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 }};
-
-void
-efi_time_init(void)
-{
-}
-
-void
-efi_time_fini(void)
-{
-}
-
-void
-to_efi_time(EFI_TIME *efi_time, time_t time)
-{
- int lyear, month;
- time_t seconds;
-
- if (time >= 0) {
- efi_time->Year = 1970;
- lyear = isleap(efi_time->Year);
- month = 13;
- seconds = CumulativeDays[lyear][month] * SECSPERDAY;
- while (time > seconds) {
- time -= seconds;
- efi_time->Year++;
- lyear = isleap(efi_time->Year);
- seconds = CumulativeDays[lyear][month] * SECSPERDAY;
- }
-
- efi_time->Month = 0;
- while (time >
- CumulativeDays[lyear][month] * SECSPERDAY) {
- efi_time->Month++;
- }
-
- month = efi_time->Month - 1;
- time -= CumulativeDays[lyear][month] * SECSPERDAY;
-
- for (efi_time->Day = 0; time > SECSPERDAY; efi_time->Day++)
- time -= SECSPERDAY;
-
- for (efi_time->Hour = 0; time > SECSPERHOUR; efi_time->Hour++)
- time -= SECSPERHOUR;
-
- for (efi_time->Minute = 0; time > 60; efi_time->Minute++)
- time -= 60;
-
- efi_time->Second = time;
- efi_time->Nanosecond = 0;
- efi_time->TimeZone = 0;
- efi_time->Daylight = 0;
- } else {
- memset(efi_time, 0, sizeof(EFI_TIME));
- }
-}
-
-time_t
-from_efi_time(EFI_TIME *ETime)
-{
- time_t UTime;
- int Year;
-
- /*
- * Do a santity check
- */
- if (ETime->Year < 1998 || ETime->Year > 2099 ||
- ETime->Month == 0 || ETime->Month > 12 ||
- ETime->Day == 0 || ETime->Month > 31 ||
- ETime->Hour > 23 || ETime->Minute > 59 ||
- ETime->Second > 59 || ETime->TimeZone < -1440 ||
- (ETime->TimeZone > 1440 && ETime->TimeZone != 2047)) {
- return (0);
- }
-
- /*
- * Years
- */
- UTime = 0;
- for (Year = 1970; Year != ETime->Year; ++Year) {
- UTime += (CumulativeDays[isleap(Year)][13] * SECSPERDAY);
- }
-
- /*
- * UTime should now be set to 00:00:00 on Jan 1 of the file's year.
- *
- * Months
- */
- UTime += (CumulativeDays[isleap(ETime->Year)][ETime->Month] *
- SECSPERDAY);
-
- /*
- * UTime should now be set to 00:00:00 on the first of the file's
- * month and year.
- *
- * Days -- Don't count the file's day
- */
- UTime += (((ETime->Day > 0) ? ETime->Day-1:0) * SECSPERDAY);
-
- /*
- * Hours
- */
- UTime += (ETime->Hour * SECSPERHOUR);
-
- /*
- * Minutes
- */
- UTime += (ETime->Minute * 60);
-
- /*
- * Seconds
- */
- UTime += ETime->Second;
-
- /*
- * EFI time is repored in local time. Adjust for any time zone
- * offset to get true UT
- */
- if (ETime->TimeZone != EFI_UNSPECIFIED_TIMEZONE) {
- /*
- * TimeZone is kept in minues...
- */
- UTime += (ETime->TimeZone * 60);
- }
-
- return (UTime);
-}
-
-static int
-EFI_GetTimeOfDay(OUT struct timeval *tp, OUT struct timezone *tzp)
-{
- EFI_TIME EfiTime;
- EFI_TIME_CAPABILITIES Capabilities;
- EFI_STATUS Status;
-
- /*
- * Get time from EFI
- */
-
- Status = RS->GetTime(&EfiTime, &Capabilities);
- if (EFI_ERROR(Status))
- return (-1);
-
- /*
- * Convert to UNIX time (ie seconds since the epoch
- */
-
- tp->tv_sec = from_efi_time(&EfiTime);
- tp->tv_usec = 0; /* EfiTime.Nanosecond * 1000; */
-
- /*
- * Do something with the timezone if needed
- */
-
- if (tzp != NULL) {
- if (EfiTime.TimeZone == EFI_UNSPECIFIED_TIMEZONE)
- tzp->tz_minuteswest = 0;
- else
- tzp->tz_minuteswest = EfiTime.TimeZone;
- /*
- * This isn't quit right since it doesn't deal with
- * EFI_TIME_IN_DAYLIGHT
- */
- tzp->tz_dsttime =
- EfiTime.Daylight & EFI_TIME_ADJUST_DAYLIGHT ? 1 : 0;
- }
-
- return (0);
-}
-
-time_t
-time(time_t *tloc)
-{
- struct timeval tv;
-
- memset(&tv, 0, sizeof(tv));
- EFI_GetTimeOfDay(&tv, NULL);
-
- if (tloc)
- *tloc = tv.tv_sec;
- return (tv.tv_sec);
-}
-
-time_t
-getsecs(void)
-{
-
- return (time(NULL));
-}
diff --git a/sys/boot/efi/libefi/time_event.c b/sys/boot/efi/libefi/time_event.c
deleted file mode 100644
index f96f1d845f6a..000000000000
--- a/sys/boot/efi/libefi/time_event.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/*-
- * Copyright (c) 2016 Andrew Turner
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <efi.h>
-#include <efilib.h>
-
-#include <time.h>
-#include <sys/time.h>
-
-static EFI_EVENT time_event;
-static uint64_t curtime;
-
-static void
-time_update(EFI_EVENT event, void *context)
-{
-
- curtime += 10;
-}
-
-void
-efi_time_init(void)
-{
-
- /* Create a timer event */
- BS->CreateEvent(EVT_TIMER | EVT_NOTIFY_SIGNAL, TPL_CALLBACK,
- time_update, 0, &time_event);
- /* Use a 10ms timer */
- BS->SetTimer(time_event, TimerPeriodic, 100000);
-}
-
-void
-efi_time_fini(void)
-{
-
- /* Cancel the timer */
- BS->SetTimer(time_event, TimerCancel, 0);
- BS->CloseEvent(time_event);
-}
-
-time_t
-time(time_t *tloc)
-{
- time_t t;
-
- t = curtime / 1000;
- if (tloc != NULL)
- *tloc = t;
-
- return (t);
-}
-
-time_t
-getsecs(void)
-{
- return time(0);
-}
diff --git a/sys/boot/efi/libefi/wchar.c b/sys/boot/efi/libefi/wchar.c
deleted file mode 100644
index d8d81aca4bcc..000000000000
--- a/sys/boot/efi/libefi/wchar.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*-
- * Copyright 2016 Netflix, Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <efi.h>
-#include <efilib.h>
-
-/*
- * CHAR16 related functions moved from loader.
- * Perhaps we should move those to libstand afterall, but they are
- * needed only by UEFI.
- */
-
-int
-wcscmp(CHAR16 *a, CHAR16 *b)
-{
-
- while (*a && *b && *a == *b) {
- a++;
- b++;
- }
- return *a - *b;
-}
-
-/*
- * cpy8to16 copies a traditional C string into a CHAR16 string and
- * 0 terminates it. len is the size of *dst in bytes.
- */
-void
-cpy8to16(const char *src, CHAR16 *dst, size_t len)
-{
- len <<= 1; /* Assume CHAR16 is 2 bytes */
- while (len > 0 && *src) {
- *dst++ = *src++;
- len--;
- }
- *dst++ = (CHAR16)0;
-}
-
-void
-cpy16to8(const CHAR16 *src, char *dst, size_t len)
-{
- size_t i;
-
- for (i = 0; i < len && src[i]; i++)
- dst[i] = (char)src[i];
- if (i < len)
- dst[i] = '\0';
-}
diff --git a/sys/boot/efi/loader/Makefile b/sys/boot/efi/loader/Makefile
deleted file mode 100644
index a3a23c87dfe7..000000000000
--- a/sys/boot/efi/loader/Makefile
+++ /dev/null
@@ -1,131 +0,0 @@
-# $FreeBSD$
-
-MAN=
-
-LOADER_NET_SUPPORT?= yes
-LOADER_MSDOS_SUPPORT?= yes
-LOADER_UFS_SUPPORT?= yes
-LOADER_CD9660_SUPPORT?= no
-LOADER_EXT2FS_SUPPORT?= no
-
-.include <bsd.init.mk>
-
-MK_SSP= no
-
-PROG= loader.sym
-INTERNALPROG=
-WARNS?= 3
-
-# architecture-specific loader code
-SRCS= autoload.c \
- bootinfo.c \
- conf.c \
- copy.c \
- efi_main.c \
- framebuffer.c \
- main.c \
- self_reloc.c \
- smbios.c \
- vers.c
-
-.if ${MK_ZFS} != "no"
-LIBZFSBOOT= ${BOOTOBJ}/zfs/libzfsboot.a
-CFLAGS+= -I${ZFSSRC}
-CFLAGS+= -DEFI_ZFS_BOOT
-.endif
-
-.if ${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} > 40201
-CWARNFLAGS.self_reloc.c+= -Wno-error=maybe-uninitialized
-.endif
-
-# We implement a slightly non-standard %S in that it always takes a
-# CHAR16 that's common in UEFI-land instead of a wchar_t. This only
-# seems to matter on arm64 where wchar_t defaults to an int instead
-# of a short. There's no good cast to use here so just ignore the
-# warnings for now.
-CWARNFLAGS.main.c+= -Wno-format
-
-.PATH: ${.CURDIR}/arch/${MACHINE}
-# For smbios.c
-.PATH: ${BOOTSRC}/i386/libi386
-.include "${.CURDIR}/arch/${MACHINE}/Makefile.inc"
-
-CFLAGS+= -I${.CURDIR}
-CFLAGS+= -I${.CURDIR}/arch/${MACHINE}
-CFLAGS+= -I${EFISRC}/include
-CFLAGS+= -I${EFISRC}/include/${MACHINE}
-CFLAGS+= -I${SYSDIR}/contrib/dev/acpica/include
-CFLAGS+= -I${BOOTSRC}/i386/libi386
-CFLAGS+= -DNO_PCI -DEFI
-
-.if !defined(BOOT_HIDE_SERIAL_NUMBERS)
-# Export serial numbers, UUID, and asset tag from loader.
-CFLAGS+= -DSMBIOS_SERIAL_NUMBERS
-.if defined(BOOT_LITTLE_ENDIAN_UUID)
-# Use little-endian UUID format as defined in SMBIOS 2.6.
-CFLAGS+= -DSMBIOS_LITTLE_ENDIAN_UUID
-.elif defined(BOOT_NETWORK_ENDIAN_UUID)
-# Use network-endian UUID format for backward compatibility.
-CFLAGS+= -DSMBIOS_NETWORK_ENDIAN_UUID
-.endif
-.endif
-
-.if defined(HAVE_FDT) && ${MK_FDT} != "no"
-.include "${BOOTSRC}/fdt.mk"
-LIBEFI_FDT= ${BOOTOBJ}/efi/fdt/libefi_fdt.a
-.endif
-
-# Include bcache code.
-HAVE_BCACHE= yes
-
-.if defined(EFI_STAGING_SIZE)
-CFLAGS+= -DEFI_STAGING_SIZE=${EFI_STAGING_SIZE}
-.endif
-
-# Always add MI sources
-HELP_FILES=
-.include "${BOOTSRC}/loader.mk"
-
-FILES+= loader.efi
-FILESMODE_loader.efi= ${BINMODE}
-
-LDSCRIPT= ${.CURDIR}/arch/${MACHINE}/ldscript.${MACHINE}
-LDFLAGS+= -Wl,-T${LDSCRIPT},-Bsymbolic,-znotext -shared
-
-CLEANFILES+= loader.efi
-
-NEWVERSWHAT= "EFI loader" ${MACHINE}
-
-NM?= nm
-OBJCOPY?= objcopy
-
-.if ${MACHINE_CPUARCH} == "amd64"
-EFI_TARGET= efi-app-x86_64
-.elif ${MACHINE_CPUARCH} == "i386"
-EFI_TARGET= efi-app-ia32
-.else
-EFI_TARGET= binary
-.endif
-
-# Arbitrarily set the PE/COFF header timestamps to 1 Jan 2016 00:00:00
-# for build reproducibility.
-SOURCE_DATE_EPOCH?=1451606400
-loader.efi: ${PROG}
- if ${NM} ${.ALLSRC} | grep ' U '; then \
- echo "Undefined symbols in ${.ALLSRC}"; \
- exit 1; \
- fi
- SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH} \
- ${OBJCOPY} -j .peheader -j .text -j .sdata -j .data \
- -j .dynamic -j .dynsym -j .rel.dyn \
- -j .rela.dyn -j .reloc -j .eh_frame -j set_Xcommand_set \
- -j set_Xficl_compile_set \
- --output-target=${EFI_TARGET} ${.ALLSRC} ${.TARGET}
-
-LIBEFI= ${BOOTOBJ}/efi/libefi/libefi.a
-
-DPADD= ${LIBFICL} ${LIBEFI} ${LIBFDT} ${LIBEFI_FDT} ${LIBZFSBOOT} ${LIBSA} \
- ${LDSCRIPT}
-LDADD= ${LIBFICL} ${LIBEFI} ${LIBFDT} ${LIBEFI_FDT} ${LIBZFSBOOT} ${LIBSA}
-
-.include <bsd.prog.mk>
diff --git a/sys/boot/efi/loader/Makefile.depend b/sys/boot/efi/loader/Makefile.depend
deleted file mode 100644
index 6eec9589d9fa..000000000000
--- a/sys/boot/efi/loader/Makefile.depend
+++ /dev/null
@@ -1,17 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- include \
- include/xlocale \
- sys/boot/efi/libefi \
- sys/boot/ficl \
- sys/boot/libsa \
- sys/boot/zfs \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/sys/boot/efi/loader/arch/amd64/Makefile.inc b/sys/boot/efi/loader/arch/amd64/Makefile.inc
deleted file mode 100644
index b6d824ce57e4..000000000000
--- a/sys/boot/efi/loader/arch/amd64/Makefile.inc
+++ /dev/null
@@ -1,15 +0,0 @@
-# $FreeBSD$
-
-SRCS+= amd64_tramp.S \
- start.S \
- elf64_freebsd.c \
- trap.c \
- exc.S
-
-.PATH: ${BOOTSRC}/i386/libi386
-SRCS+= nullconsole.c \
- comconsole.c \
- spinconsole.c
-
-CFLAGS+= -fPIC -DTERM_EMU
-LDFLAGS+= -Wl,-znocombreloc
diff --git a/sys/boot/efi/loader/arch/amd64/amd64_tramp.S b/sys/boot/efi/loader/arch/amd64/amd64_tramp.S
deleted file mode 100644
index c102d9243589..000000000000
--- a/sys/boot/efi/loader/arch/amd64/amd64_tramp.S
+++ /dev/null
@@ -1,64 +0,0 @@
-/*-
- * Copyright (c) 2013 The FreeBSD Foundation
- * All rights reserved.
- *
- * This software was developed by Benno Rice under sponsorship from
- * the FreeBSD Foundation.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#include <machine/asmacros.h>
-
- .text
- .globl amd64_tramp
-
-/*
- * void amd64_tramp(uint64_t stack, void *copy_finish, uint64_t kernend,
- * uint64_t modulep, uint64_t pagetable, uint64_t entry)
- */
-amd64_tramp:
- cli /* Make sure we don't get interrupted. */
- movq %rdi,%rsp /* Switch to our temporary stack. */
-
- movq %rdx,%r12 /* Stash the kernel values for later. */
- movq %rcx,%r13
- movq %r8,%r14
- movq %r9,%r15
-
- callq *%rsi /* Call copy_finish so we're all ready to go. */
-
- pushq %r12 /* Push kernend. */
- salq $32,%r13 /* Shift modulep and push it. */
- pushq %r13
- pushq %r15 /* Push the entry address. */
- movq %r14,%cr3 /* Switch page tables. */
- ret /* "Return" to kernel entry. */
-
- ALIGN_TEXT
-amd64_tramp_end:
-
- .data
- .globl amd64_tramp_size
-amd64_tramp_size:
- .long amd64_tramp_end-amd64_tramp
diff --git a/sys/boot/efi/loader/arch/amd64/elf64_freebsd.c b/sys/boot/efi/loader/arch/amd64/elf64_freebsd.c
deleted file mode 100644
index 37e9fe1b4b18..000000000000
--- a/sys/boot/efi/loader/arch/amd64/elf64_freebsd.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/*-
- * Copyright (c) 1998 Michael Smith <msmith@freebsd.org>
- * Copyright (c) 2014 The FreeBSD Foundation
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#define __ELF_WORD_SIZE 64
-#include <sys/param.h>
-#include <sys/exec.h>
-#include <sys/linker.h>
-#include <string.h>
-#include <machine/elf.h>
-#include <stand.h>
-#include <vm/vm.h>
-#include <vm/pmap.h>
-
-#include <efi.h>
-#include <efilib.h>
-
-#include "bootstrap.h"
-
-#include "platform/acfreebsd.h"
-#include "acconfig.h"
-#define ACPI_SYSTEM_XFACE
-#include "actypes.h"
-#include "actbl.h"
-
-#include "loader_efi.h"
-
-static EFI_GUID acpi_guid = ACPI_TABLE_GUID;
-static EFI_GUID acpi20_guid = ACPI_20_TABLE_GUID;
-
-extern int bi_load(char *args, vm_offset_t *modulep, vm_offset_t *kernendp);
-
-static int elf64_exec(struct preloaded_file *amp);
-static int elf64_obj_exec(struct preloaded_file *amp);
-
-static struct file_format amd64_elf = {
- .l_load = elf64_loadfile,
- .l_exec = elf64_exec,
-};
-static struct file_format amd64_elf_obj = {
- .l_load = elf64_obj_loadfile,
- .l_exec = elf64_obj_exec,
-};
-
-struct file_format *file_formats[] = {
- &amd64_elf,
- &amd64_elf_obj,
- NULL
-};
-
-static pml4_entry_t *PT4;
-static pdp_entry_t *PT3;
-static pd_entry_t *PT2;
-
-static void (*trampoline)(uint64_t stack, void *copy_finish, uint64_t kernend,
- uint64_t modulep, pml4_entry_t *pagetable, uint64_t entry);
-
-extern uintptr_t amd64_tramp;
-extern uint32_t amd64_tramp_size;
-
-/*
- * There is an ELF kernel and one or more ELF modules loaded.
- * We wish to start executing the kernel image, so make such
- * preparations as are required, and do so.
- */
-static int
-elf64_exec(struct preloaded_file *fp)
-{
- struct file_metadata *md;
- Elf_Ehdr *ehdr;
- vm_offset_t modulep, kernend, trampcode, trampstack;
- int err, i;
- ACPI_TABLE_RSDP *rsdp;
- char buf[24];
- int revision;
-
- /*
- * Report the RSDP to the kernel. While this can be found with
- * a BIOS boot, the RSDP may be elsewhere when booted from UEFI.
- * The old code used the 'hints' method to communite this to
- * the kernel. However, while convenient, the 'hints' method
- * is fragile and does not work when static hints are compiled
- * into the kernel. Instead, move to setting different tunables
- * that start with acpi. The old 'hints' can be removed before
- * we branch for FreeBSD 12.
- */
-
- rsdp = efi_get_table(&acpi20_guid);
- if (rsdp == NULL) {
- rsdp = efi_get_table(&acpi_guid);
- }
- if (rsdp != NULL) {
- sprintf(buf, "0x%016llx", (unsigned long long)rsdp);
- setenv("hint.acpi.0.rsdp", buf, 1);
- setenv("acpi.rsdp", buf, 1);
- revision = rsdp->Revision;
- if (revision == 0)
- revision = 1;
- sprintf(buf, "%d", revision);
- setenv("hint.acpi.0.revision", buf, 1);
- setenv("acpi.revision", buf, 1);
- strncpy(buf, rsdp->OemId, sizeof(rsdp->OemId));
- buf[sizeof(rsdp->OemId)] = '\0';
- setenv("hint.acpi.0.oem", buf, 1);
- setenv("acpi.oem", buf, 1);
- sprintf(buf, "0x%016x", rsdp->RsdtPhysicalAddress);
- setenv("hint.acpi.0.rsdt", buf, 1);
- setenv("acpi.rsdt", buf, 1);
- if (revision >= 2) {
- /* XXX extended checksum? */
- sprintf(buf, "0x%016llx",
- (unsigned long long)rsdp->XsdtPhysicalAddress);
- setenv("hint.acpi.0.xsdt", buf, 1);
- setenv("acpi.xsdt", buf, 1);
- sprintf(buf, "%d", rsdp->Length);
- setenv("hint.acpi.0.xsdt_length", buf, 1);
- setenv("acpi.xsdt_length", buf, 1);
- }
- }
-
- if ((md = file_findmetadata(fp, MODINFOMD_ELFHDR)) == NULL)
- return(EFTYPE);
- ehdr = (Elf_Ehdr *)&(md->md_data);
-
- trampcode = (vm_offset_t)0x0000000040000000;
- err = BS->AllocatePages(AllocateMaxAddress, EfiLoaderData, 1,
- (EFI_PHYSICAL_ADDRESS *)&trampcode);
- bzero((void *)trampcode, EFI_PAGE_SIZE);
- trampstack = trampcode + EFI_PAGE_SIZE - 8;
- bcopy((void *)&amd64_tramp, (void *)trampcode, amd64_tramp_size);
- trampoline = (void *)trampcode;
-
- PT4 = (pml4_entry_t *)0x0000000040000000;
- err = BS->AllocatePages(AllocateMaxAddress, EfiLoaderData, 3,
- (EFI_PHYSICAL_ADDRESS *)&PT4);
- bzero(PT4, 3 * EFI_PAGE_SIZE);
-
- PT3 = &PT4[512];
- PT2 = &PT3[512];
-
- /*
- * This is kinda brutal, but every single 1GB VM memory segment points
- * to the same first 1GB of physical memory. But it is more than
- * adequate.
- */
- for (i = 0; i < 512; i++) {
- /* Each slot of the L4 pages points to the same L3 page. */
- PT4[i] = (pml4_entry_t)PT3;
- PT4[i] |= PG_V | PG_RW | PG_U;
-
- /* Each slot of the L3 pages points to the same L2 page. */
- PT3[i] = (pdp_entry_t)PT2;
- PT3[i] |= PG_V | PG_RW | PG_U;
-
- /* The L2 page slots are mapped with 2MB pages for 1GB. */
- PT2[i] = i * (2 * 1024 * 1024);
- PT2[i] |= PG_V | PG_RW | PG_PS | PG_U;
- }
-
- printf("Start @ 0x%lx ...\n", ehdr->e_entry);
-
- efi_time_fini();
- err = bi_load(fp->f_args, &modulep, &kernend);
- if (err != 0) {
- efi_time_init();
- return(err);
- }
-
- dev_cleanup();
-
- trampoline(trampstack, efi_copy_finish, kernend, modulep, PT4,
- ehdr->e_entry);
-
- panic("exec returned");
-}
-
-static int
-elf64_obj_exec(struct preloaded_file *fp)
-{
-
- return (EFTYPE);
-}
diff --git a/sys/boot/efi/loader/arch/amd64/exc.S b/sys/boot/efi/loader/arch/amd64/exc.S
deleted file mode 100644
index 0035d4a37e20..000000000000
--- a/sys/boot/efi/loader/arch/amd64/exc.S
+++ /dev/null
@@ -1,165 +0,0 @@
-/*-
- * Copyright (c) 2016 The FreeBSD Foundation
- * All rights reserved.
- *
- * This software was developed by Konstantin Belousov under sponsorship
- * from the FreeBSD Foundation.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
- .macro EH N, err=1
- .align 8
- .globl EXC\N\()_handler
-EXC\N\()_handler:
- .if \err != 1
- pushq $0
- .endif
- pushq %rax
- pushq %rdx
- pushq %rcx
- movl $\N,%ecx
- jmp all_handlers
- .endm
-
- .text
- EH 0,0
- EH 1,0
- EH 2,0
- EH 3,0
- EH 4,0
- EH 5,0
- EH 6,0
- EH 7,0
- EH 8
- EH 9,0
- EH 10
- EH 11
- EH 12
- EH 13
- EH 14
- EH 16,0
- EH 17
- EH 18,0
- EH 19,0
- EH 20,0
-
- .globl exc_rsp
-all_handlers:
- cmpq %rsp,exc_rsp(%rip)
- je exception
-
- /*
- * Interrupt, not exception.
- * First, copy the hardware interrupt frame to the previous stack.
- * Our handler always has private IST stack.
- */
- movq (6*8)(%rsp),%rax /* saved %rsp value, AKA old stack */
- subq (5*8),%rax
- movq (3*8)(%rsp),%rdx /* copy %rip to old stack */
- movq %rdx,(%rax)
- movq (4*8)(%rsp),%rdx /* copy %cs */
- movq %rdx,(1*8)(%rax)
- movq (5*8)(%rsp),%rdx /* copy %rflags */
- movq %rdx,(2*8)(%rax)
- movq (6*8)(%rsp),%rdx /* copy %rsp */
- movq %rdx,(3*8)(%rax)
- movq (7*8)(%rsp),%rdx /* copy %ss */
- movq %rdx,(4*8)(%rax)
-
- /*
- * Now simulate invocation of the original interrupt handler
- * with retq. We switch stacks and execute retq from the old
- * stack since there is no free registers at the last moment.
- */
- subq $16,%rax
- leaq fw_intr_handlers(%rip),%rdx
- movq (%rdx,%rcx,8),%rdx /* push intr handler address on old stack */
- movq %rdx,8(%rax)
- movq (2*8)(%rsp),%rcx /* saved %rax is put on top of old stack */
- movq %rcx,(%rax)
- movq (%rsp),%rcx
- movq 8(%rsp),%rdx
-
- movq 32(%rsp),%rsp /* switch to old stack */
- popq %rax
- retq
-
-exception:
- /*
- * Form the struct trapframe on our IST stack.
- * Skip three words, which are currently busy with temporal
- * saves.
- */
- pushq %r15
- pushq %r14
- pushq %r13
- pushq %r12
- pushq %r11
- pushq %r10
- pushq %rbp
- pushq %rbx
- pushq $0 /* %rax */
- pushq %r9
- pushq %r8
- pushq $0 /* %rcx */
- pushq $0 /* %rdx */
- pushq %rsi
- pushq %rdi
-
- /*
- * Move %rax, %rdx, %rcx values into the final location,
- * from the three words which were skipped above.
- */
- movq 0x88(%rsp),%rax
- movq %rax,0x30(%rsp) /* tf_rax */
- movq 0x78(%rsp),%rax
- movq %rax,0x18(%rsp) /* tf_rcx */
- movq 0x80(%rsp),%rax
- movq %rax,0x10(%rsp) /* tf_rdx */
-
- /*
- * And fill the three words themself.
- */
- movq %cr2,%rax
- movq %rax,0x80(%rsp) /* tf_addr */
- movl %ecx,0x78(%rsp) /* tf_trapno */
- movw %ds,0x8e(%rsp)
- movw %es,0x8c(%rsp)
- movw %fs,0x7c(%rsp)
- movw %gs,0x7e(%rsp)
- movw $0,0x88(%rsp) /* tf_flags */
-
- /*
- * Call dump routine.
- */
- movq %rsp,%rdi
- callq report_exc
-
- /*
- * Hang after reporting. Interrupts are already disabled.
- */
-1:
- hlt
- jmp 1b
diff --git a/sys/boot/efi/loader/arch/amd64/ldscript.amd64 b/sys/boot/efi/loader/arch/amd64/ldscript.amd64
deleted file mode 100644
index 874df9b08f9e..000000000000
--- a/sys/boot/efi/loader/arch/amd64/ldscript.amd64
+++ /dev/null
@@ -1,72 +0,0 @@
-/* $FreeBSD$ */
-OUTPUT_FORMAT("elf64-x86-64-freebsd", "elf64-x86-64-freebsd", "elf64-x86-64-freebsd")
-OUTPUT_ARCH(i386:x86-64)
-ENTRY(_start)
-SECTIONS
-{
- /* Read-only sections, merged into text segment: */
- . = 0;
- ImageBase = .;
- .hash : { *(.hash) } /* this MUST come first! */
- . = ALIGN(4096);
- .eh_frame :
- {
- *(.eh_frame)
- }
- . = ALIGN(4096);
- .text : {
- *(.text .stub .text.* .gnu.linkonce.t.*)
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.plt)
- } =0xCCCCCCCC
- . = ALIGN(4096);
- .data : {
- *(.rodata .rodata.* .gnu.linkonce.r.*)
- *(.rodata1)
- *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
- *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
- *(.opd)
- *(.data .data.* .gnu.linkonce.d.*)
- *(.data1)
- *(.plabel)
- *(.dynbss)
- *(.bss .bss.* .gnu.linkonce.b.*)
- *(COMMON)
- }
- . = ALIGN(4096);
- set_Xcommand_set : {
- __start_set_Xcommand_set = .;
- *(set_Xcommand_set)
- __stop_set_Xcommand_set = .;
- }
- set_Xficl_compile_set : {
- __start_set_Xficl_compile_set = .;
- *(set_Xficl_compile_set)
- __stop_set_Xficl_compile_set = .;
- }
- . = ALIGN(4096);
- __gp = .;
- .sdata : {
- *(.got.plt .got)
- *(.sdata .sdata.* .gnu.linkonce.s.*)
- *(dynsbss)
- *(.sbss .sbss.* .gnu.linkonce.sb.*)
- *(.scommon)
- }
- . = ALIGN(4096);
- .dynamic : { *(.dynamic) }
- . = ALIGN(4096);
- .rela.dyn : {
- *(.rela.data*)
- *(.rela.got)
- *(.rela.stab)
- *(.relaset_*)
- }
- . = ALIGN(4096);
- .reloc : { *(.reloc) }
- . = ALIGN(4096);
- .dynsym : { *(.dynsym) }
- . = ALIGN(4096);
- .dynstr : { *(.dynstr) }
-}
diff --git a/sys/boot/efi/loader/arch/amd64/start.S b/sys/boot/efi/loader/arch/amd64/start.S
deleted file mode 100644
index 774ef4fa7901..000000000000
--- a/sys/boot/efi/loader/arch/amd64/start.S
+++ /dev/null
@@ -1,76 +0,0 @@
-/*-
- * Copyright (C) 1999 Hewlett-Packard Co.
- * Contributed by David Mosberger <davidm@hpl.hp.com>.
- * Copyright (C) 2005 Intel Co.
- * Contributed by Fenghua Yu <fenghua.yu@intel.com>.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Hewlett-Packard Co. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
- * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/*
- * crt0-efi-x86_64.S - x86_64 EFI startup code.
- * $FreeBSD$
- */
-
- .text
- .align 4
-
- .globl _start
-_start:
- subq $8, %rsp
- pushq %rcx
- pushq %rdx
-
-0:
- lea ImageBase(%rip), %rdi
- lea _DYNAMIC(%rip), %rsi
-
- popq %rcx
- popq %rdx
- pushq %rcx
- pushq %rdx
- call self_reloc
-
- popq %rdi
- popq %rsi
-
- call efi_main
- addq $8, %rsp
-
-.exit:
- ret
-
- /*
- * hand-craft a dummy .reloc section so EFI knows it's a relocatable
- * executable:
- */
-
- .data
- .section .reloc, "a"
- .long 0
- .long 10
- .word 0
diff --git a/sys/boot/efi/loader/arch/amd64/trap.c b/sys/boot/efi/loader/arch/amd64/trap.c
deleted file mode 100644
index e8cf188cf22f..000000000000
--- a/sys/boot/efi/loader/arch/amd64/trap.c
+++ /dev/null
@@ -1,408 +0,0 @@
-/*-
- * Copyright (c) 2016 The FreeBSD Foundation
- * All rights reserved.
- *
- * This software was developed by Konstantin Belousov under sponsorship
- * from the FreeBSD Foundation.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <string.h>
-#include <sys/param.h>
-#include <machine/cpufunc.h>
-#include <machine/psl.h>
-#include <machine/segments.h>
-#include <machine/frame.h>
-#include <machine/tss.h>
-
-#include <efi.h>
-#include <efilib.h>
-
-#include "bootstrap.h"
-#include "loader_efi.h"
-
-#define NUM_IST 8
-#define NUM_EXC 32
-
-/*
- * This code catches exceptions but forwards hardware interrupts to
- * handlers installed by firmware. It differentiates exceptions
- * vs. interrupts by presence of the error code on the stack, which
- * causes different stack pointer value on trap handler entry.
- *
- * Use kernel layout for the trapframe just to not be original.
- *
- * Use free IST slot in existing TSS, or create our own TSS if
- * firmware did not configured any, to have stack switched to
- * IST-specified one, e.g. to handle #SS. If hand-off cannot find
- * unused IST slot, or create a new descriptor in GDT, we bail out.
- */
-
-static struct region_descriptor fw_idt; /* Descriptor for pristine fw IDT */
-static struct region_descriptor loader_idt;/* Descriptor for loader
- shadow IDT */
-static EFI_PHYSICAL_ADDRESS lidt_pa; /* Address of loader shadow IDT */
-static EFI_PHYSICAL_ADDRESS tss_pa; /* Address of TSS */
-static EFI_PHYSICAL_ADDRESS exc_stack_pa;/* Address of IST stack for loader */
-EFI_PHYSICAL_ADDRESS exc_rsp; /* %rsp value on our IST stack when
- exception happens */
-EFI_PHYSICAL_ADDRESS fw_intr_handlers[NUM_EXC]; /* fw handlers for < 32 IDT
- vectors */
-static int intercepted[NUM_EXC];
-static int ist; /* IST for exception handlers */
-static uint32_t tss_fw_seg; /* Fw TSS segment */
-static uint32_t loader_tss; /* Loader TSS segment */
-static struct region_descriptor fw_gdt; /* Descriptor of pristine GDT */
-static EFI_PHYSICAL_ADDRESS loader_gdt_pa; /* Address of loader shadow GDT */
-
-void report_exc(struct trapframe *tf);
-void
-report_exc(struct trapframe *tf)
-{
-
- /*
- * printf() depends on loader runtime and UEFI firmware health
- * to produce the console output, in case of exception, the
- * loader or firmware runtime may fail to support the printf().
- */
- printf("===================================================="
- "============================\n");
- printf("Exception %u\n", tf->tf_trapno);
- printf("ss 0x%04hx cs 0x%04hx ds 0x%04hx es 0x%04hx fs 0x%04hx "
- "gs 0x%04hx\n",
- (uint16_t)tf->tf_ss, (uint16_t)tf->tf_cs, (uint16_t)tf->tf_ds,
- (uint16_t)tf->tf_es, (uint16_t)tf->tf_fs, (uint16_t)tf->tf_gs);
- printf("err 0x%08x rfl 0x%08x addr 0x%016lx\n"
- "rsp 0x%016lx rip 0x%016lx\n",
- (uint32_t)tf->tf_err, (uint32_t)tf->tf_rflags, tf->tf_addr,
- tf->tf_rsp, tf->tf_rip);
- printf(
- "rdi 0x%016lx rsi 0x%016lx rdx 0x%016lx\n"
- "rcx 0x%016lx r8 0x%016lx r9 0x%016lx\n"
- "rax 0x%016lx rbx 0x%016lx rbp 0x%016lx\n"
- "r10 0x%016lx r11 0x%016lx r12 0x%016lx\n"
- "r13 0x%016lx r14 0x%016lx r15 0x%016lx\n",
- tf->tf_rdi, tf->tf_rsi, tf->tf_rdx, tf->tf_rcx, tf->tf_r8,
- tf->tf_r9, tf->tf_rax, tf->tf_rbx, tf->tf_rbp, tf->tf_r10,
- tf->tf_r11, tf->tf_r12, tf->tf_r13, tf->tf_r14, tf->tf_r15);
- printf("Machine stopped.\n");
-}
-
-static void
-prepare_exception(unsigned idx, uint64_t my_handler,
- int ist_use_table[static NUM_IST])
-{
- struct gate_descriptor *fw_idt_e, *loader_idt_e;
-
- fw_idt_e = &((struct gate_descriptor *)fw_idt.rd_base)[idx];
- loader_idt_e = &((struct gate_descriptor *)loader_idt.rd_base)[idx];
- fw_intr_handlers[idx] = fw_idt_e->gd_looffset +
- (fw_idt_e->gd_hioffset << 16);
- intercepted[idx] = 1;
- ist_use_table[fw_idt_e->gd_ist]++;
- loader_idt_e->gd_looffset = my_handler;
- loader_idt_e->gd_hioffset = my_handler >> 16;
- /*
- * We reuse uefi selector for the code segment for the exception
- * handler code, while the reason for the fault might be the
- * corruption of that gdt entry. On the other hand, allocating
- * our own descriptor might be not much better, if gdt is corrupted.
- */
- loader_idt_e->gd_selector = fw_idt_e->gd_selector;
- loader_idt_e->gd_ist = 0;
- loader_idt_e->gd_type = SDT_SYSIGT;
- loader_idt_e->gd_dpl = 0;
- loader_idt_e->gd_p = 1;
- loader_idt_e->gd_xx = 0;
- loader_idt_e->sd_xx1 = 0;
-}
-#define PREPARE_EXCEPTION(N) \
- extern char EXC##N##_handler[]; \
- prepare_exception(N, (uintptr_t)EXC##N##_handler, ist_use_table);
-
-static void
-free_tables(void)
-{
-
- if (lidt_pa != 0) {
- BS->FreePages(lidt_pa, EFI_SIZE_TO_PAGES(fw_idt.rd_limit));
- lidt_pa = 0;
- }
- if (exc_stack_pa != 0) {
- BS->FreePages(exc_stack_pa, 1);
- exc_stack_pa = 0;
- }
- if (tss_pa != 0 && tss_fw_seg == 0) {
- BS->FreePages(tss_pa, EFI_SIZE_TO_PAGES(sizeof(struct
- amd64tss)));
- tss_pa = 0;
- }
- if (loader_gdt_pa != 0) {
- BS->FreePages(tss_pa, 2);
- loader_gdt_pa = 0;
- }
- ist = 0;
- loader_tss = 0;
-}
-
-static int
-efi_setup_tss(struct region_descriptor *gdt, uint32_t loader_tss_idx,
- struct amd64tss **tss)
-{
- EFI_STATUS status;
- struct system_segment_descriptor *tss_desc;
-
- tss_desc = (struct system_segment_descriptor *)(gdt->rd_base +
- (loader_tss_idx << 3));
- status = BS->AllocatePages(AllocateAnyPages, EfiLoaderData,
- EFI_SIZE_TO_PAGES(sizeof(struct amd64tss)), &tss_pa);
- if (EFI_ERROR(status)) {
- printf("efi_setup_tss: AllocatePages tss error %lu\n",
- EFI_ERROR_CODE(status));
- return (0);
- }
- *tss = (struct amd64tss *)tss_pa;
- bzero(*tss, sizeof(**tss));
- tss_desc->sd_lolimit = sizeof(struct amd64tss);
- tss_desc->sd_lobase = tss_pa;
- tss_desc->sd_type = SDT_SYSTSS;
- tss_desc->sd_dpl = 0;
- tss_desc->sd_p = 1;
- tss_desc->sd_hilimit = sizeof(struct amd64tss) >> 16;
- tss_desc->sd_gran = 0;
- tss_desc->sd_hibase = tss_pa >> 24;
- tss_desc->sd_xx0 = 0;
- tss_desc->sd_xx1 = 0;
- tss_desc->sd_mbz = 0;
- tss_desc->sd_xx2 = 0;
- return (1);
-}
-
-static int
-efi_redirect_exceptions(void)
-{
- int ist_use_table[NUM_IST];
- struct gate_descriptor *loader_idt_e;
- struct system_segment_descriptor *tss_desc, *gdt_desc;
- struct amd64tss *tss;
- struct region_descriptor *gdt_rd, loader_gdt;
- uint32_t i;
- EFI_STATUS status;
- register_t rfl;
-
- sidt(&fw_idt);
- status = BS->AllocatePages(AllocateAnyPages, EfiLoaderData,
- EFI_SIZE_TO_PAGES(fw_idt.rd_limit), &lidt_pa);
- if (EFI_ERROR(status)) {
- printf("efi_redirect_exceptions: AllocatePages IDT error %lu\n",
- EFI_ERROR_CODE(status));
- lidt_pa = 0;
- return (0);
- }
- status = BS->AllocatePages(AllocateAnyPages, EfiLoaderData, 1,
- &exc_stack_pa);
- if (EFI_ERROR(status)) {
- printf("efi_redirect_exceptions: AllocatePages stk error %lu\n",
- EFI_ERROR_CODE(status));
- exc_stack_pa = 0;
- free_tables();
- return (0);
- }
- loader_idt.rd_limit = fw_idt.rd_limit;
- bcopy((void *)fw_idt.rd_base, (void *)loader_idt.rd_base,
- loader_idt.rd_limit);
- bzero(ist_use_table, sizeof(ist_use_table));
- bzero(fw_intr_handlers, sizeof(fw_intr_handlers));
- bzero(intercepted, sizeof(intercepted));
-
- sgdt(&fw_gdt);
- tss_fw_seg = read_tr();
- gdt_rd = NULL;
- if (tss_fw_seg == 0) {
- for (i = 2; (i << 3) + sizeof(*gdt_desc) <= fw_gdt.rd_limit;
- i += 2) {
- gdt_desc = (struct system_segment_descriptor *)(
- fw_gdt.rd_base + (i << 3));
- if (gdt_desc->sd_type == 0 && gdt_desc->sd_mbz == 0) {
- gdt_rd = &fw_gdt;
- break;
- }
- }
- if (gdt_rd == NULL) {
- if (i >= 8190) {
- printf("efi_redirect_exceptions: all slots "
- "in gdt are used\n");
- free_tables();
- return (0);
- }
- loader_gdt.rd_limit = roundup2(fw_gdt.rd_limit +
- sizeof(struct system_segment_descriptor),
- sizeof(struct system_segment_descriptor)) - 1;
- i = (loader_gdt.rd_limit + 1 -
- sizeof(struct system_segment_descriptor)) /
- sizeof(struct system_segment_descriptor) * 2;
- status = BS->AllocatePages(AllocateAnyPages,
- EfiLoaderData,
- EFI_SIZE_TO_PAGES(loader_gdt.rd_limit),
- &loader_gdt_pa);
- if (EFI_ERROR(status)) {
- printf("efi_setup_tss: AllocatePages gdt error "
- "%lu\n", EFI_ERROR_CODE(status));
- loader_gdt_pa = 0;
- free_tables();
- return (0);
- }
- loader_gdt.rd_base = loader_gdt_pa;
- bzero((void *)loader_gdt.rd_base, loader_gdt.rd_limit);
- bcopy((void *)fw_gdt.rd_base,
- (void *)loader_gdt.rd_base, fw_gdt.rd_limit);
- gdt_rd = &loader_gdt;
- }
- loader_tss = i << 3;
- if (!efi_setup_tss(gdt_rd, i, &tss)) {
- tss_pa = 0;
- free_tables();
- return (0);
- }
- } else {
- tss_desc = (struct system_segment_descriptor *)((char *)
- fw_gdt.rd_base + tss_fw_seg);
- if (tss_desc->sd_type != SDT_SYSTSS &&
- tss_desc->sd_type != SDT_SYSBSY) {
- printf("LTR points to non-TSS descriptor\n");
- free_tables();
- return (0);
- }
- tss_pa = tss_desc->sd_lobase + (tss_desc->sd_hibase << 16);
- tss = (struct amd64tss *)tss_pa;
- tss_desc->sd_type = SDT_SYSTSS; /* unbusy */
- }
-
- PREPARE_EXCEPTION(0);
- PREPARE_EXCEPTION(1);
- PREPARE_EXCEPTION(2);
- PREPARE_EXCEPTION(3);
- PREPARE_EXCEPTION(4);
- PREPARE_EXCEPTION(5);
- PREPARE_EXCEPTION(6);
- PREPARE_EXCEPTION(7);
- PREPARE_EXCEPTION(8);
- PREPARE_EXCEPTION(9);
- PREPARE_EXCEPTION(10);
- PREPARE_EXCEPTION(11);
- PREPARE_EXCEPTION(12);
- PREPARE_EXCEPTION(13);
- PREPARE_EXCEPTION(14);
- PREPARE_EXCEPTION(16);
- PREPARE_EXCEPTION(17);
- PREPARE_EXCEPTION(18);
- PREPARE_EXCEPTION(19);
- PREPARE_EXCEPTION(20);
-
- exc_rsp = exc_stack_pa + PAGE_SIZE -
- (6 /* hw exception frame */ + 3 /* scratch regs */) * 8;
-
- /* Find free IST and use it */
- for (ist = 1; ist < NUM_IST; ist++) {
- if (ist_use_table[ist] == 0)
- break;
- }
- if (ist == NUM_IST) {
- printf("efi_redirect_exceptions: all ISTs used\n");
- free_tables();
- lidt_pa = 0;
- return (0);
- }
- for (i = 0; i < NUM_EXC; i++) {
- loader_idt_e = &((struct gate_descriptor *)loader_idt.
- rd_base)[i];
- if (intercepted[i])
- loader_idt_e->gd_ist = ist;
- }
- (&(tss->tss_ist1))[ist - 1] = exc_stack_pa + PAGE_SIZE;
-
- /* Switch to new IDT */
- rfl = intr_disable();
- if (loader_gdt_pa != 0)
- bare_lgdt(&loader_gdt);
- if (loader_tss != 0)
- ltr(loader_tss);
- lidt(&loader_idt);
- intr_restore(rfl);
- return (1);
-}
-
-static void
-efi_unredirect_exceptions(void)
-{
- register_t rfl;
-
- if (lidt_pa == 0)
- return;
-
- rfl = intr_disable();
- if (ist != 0)
- (&(((struct amd64tss *)tss_pa)->tss_ist1))[ist - 1] = 0;
- if (loader_gdt_pa != 0)
- bare_lgdt(&fw_gdt);
- if (loader_tss != 0)
- ltr(tss_fw_seg);
- lidt(&fw_idt);
- intr_restore(rfl);
- free_tables();
-}
-
-static int
-command_grab_faults(int argc, char *argv[])
-{
- int res;
-
- res = efi_redirect_exceptions();
- if (!res)
- printf("failed\n");
- return (CMD_OK);
-}
-COMMAND_SET(grap_faults, "grab_faults", "grab faults", command_grab_faults);
-
-static int
-command_ungrab_faults(int argc, char *argv[])
-{
-
- efi_unredirect_exceptions();
- return (CMD_OK);
-}
-COMMAND_SET(ungrab_faults, "ungrab_faults", "ungrab faults",
- command_ungrab_faults);
-
-static int
-command_fault(int argc, char *argv[])
-{
-
- __asm("ud2");
- return (CMD_OK);
-}
-COMMAND_SET(fault, "fault", "generate fault", command_fault);
diff --git a/sys/boot/efi/loader/arch/arm/Makefile.inc b/sys/boot/efi/loader/arch/arm/Makefile.inc
deleted file mode 100644
index 74e6616e991b..000000000000
--- a/sys/boot/efi/loader/arch/arm/Makefile.inc
+++ /dev/null
@@ -1,6 +0,0 @@
-# $FreeBSD$
-
-SRCS+= exec.c \
- start.S
-
-HAVE_FDT=yes
diff --git a/sys/boot/efi/loader/arch/arm/exec.c b/sys/boot/efi/loader/arch/arm/exec.c
deleted file mode 100644
index 83d3f2b1140a..000000000000
--- a/sys/boot/efi/loader/arch/arm/exec.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/*-
- * Copyright (c) 2001 Benno Rice <benno@FreeBSD.org>
- * Copyright (c) 2007 Semihalf, Rafal Jaworowski <raj@semihalf.com>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/linker.h>
-
-#include <machine/md_var.h>
-#include <machine/metadata.h>
-#include <machine/elf.h>
-
-#include <stand.h>
-
-#include <efi.h>
-#include <efilib.h>
-
-#include "bootstrap.h"
-#include "loader_efi.h"
-
-extern vm_offset_t md_load(char *, vm_offset_t *);
-extern int bi_load(char *, vm_offset_t *, vm_offset_t *);
-
-static int
-__elfN(arm_load)(char *filename, u_int64_t dest,
- struct preloaded_file **result)
-{
- int r;
-
- r = __elfN(loadfile)(filename, dest, result);
- if (r != 0)
- return (r);
-
- return (0);
-}
-
-static int
-__elfN(arm_exec)(struct preloaded_file *fp)
-{
- struct file_metadata *fmp;
- vm_offset_t modulep, kernend;
- Elf_Ehdr *e;
- int error;
- void (*entry)(void *);
-
- if ((fmp = file_findmetadata(fp, MODINFOMD_ELFHDR)) == NULL)
- return (EFTYPE);
-
- e = (Elf_Ehdr *)&fmp->md_data;
-
- efi_time_fini();
- if ((error = bi_load(fp->f_args, &modulep, &kernend)) != 0) {
- efi_time_init();
- return (error);
- }
-
- entry = efi_translate(e->e_entry);
- printf("Kernel entry at 0x%x...\n", (unsigned)entry);
- printf("Kernel args: %s\n", fp->f_args);
- printf("modulep: %#x\n", modulep);
- printf("relocation_offset %llx\n", __elfN(relocation_offset));
-
- dev_cleanup();
-
- (*entry)((void *)modulep);
- panic("exec returned");
-}
-
-static struct file_format arm_elf = {
- __elfN(arm_load),
- __elfN(arm_exec)
-};
-
-struct file_format *file_formats[] = {
- &arm_elf,
- NULL
-};
-
diff --git a/sys/boot/efi/loader/arch/arm/ldscript.arm b/sys/boot/efi/loader/arch/arm/ldscript.arm
deleted file mode 100644
index 9f6e7c29117e..000000000000
--- a/sys/boot/efi/loader/arch/arm/ldscript.arm
+++ /dev/null
@@ -1,67 +0,0 @@
-/* $FreeBSD$ */
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
- /* Read-only sections, merged into text segment: */
- . = 0;
- ImageBase = .;
- .text : {
- *(.peheader)
- *(.text .stub .text.* .gnu.linkonce.t.*)
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- } =0
- _etext = .;
- PROVIDE (etext = .);
- . = ALIGN(16);
- .data :
- {
- *(.data .data.*)
- *(.gnu.linkonce.d*)
- *(.rodata)
- *(.rodata.*)
- CONSTRUCTORS
-
- . = ALIGN(4);
- PROVIDE (__bss_start = .);
- *(.sbss)
- *(.scommon)
- *(.dynsbss)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- . = ALIGN(4);
- PROVIDE (__bss_end = .);
- }
- /* We want the small data sections together, so single-instruction offsets
- can access them all, and initialized data all before uninitialized, so
- we can shorten the on-disk segment size. */
- .sdata : {
- *(.got.plt .got)
- *(.sdata*.sdata.* .gnu.linkonce.s.*)
- }
- set_Xcommand_set : {
- __start_set_Xcommand_set = .;
- *(set_Xcommand_set)
- __stop_set_Xcommand_set = .;
- }
- set_Xficl_compile_set : {
- __start_set_Xficl_compile_set = .;
- *(set_Xficl_compile_set)
- __stop_set_Xficl_compile_set = .;
- }
- __gp = .;
- .plt : { *(.plt) }
- .dynamic : { *(.dynamic) }
- .reloc : { *(.reloc) }
- .dynsym : { *(.dynsym) }
- .dynstr : { *(.dynstr) }
- .rel.dyn : {
- *(.rel.*)
- *(.relset_*)
- }
- _edata = .;
- .hash : { *(.hash) }
-}
diff --git a/sys/boot/efi/loader/arch/arm/start.S b/sys/boot/efi/loader/arch/arm/start.S
deleted file mode 100644
index 5b6182d67d0a..000000000000
--- a/sys/boot/efi/loader/arch/arm/start.S
+++ /dev/null
@@ -1,189 +0,0 @@
-/*-
- * Copyright (c) 2014, 2015 Andrew Turner
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#include <machine/asm.h>
-
-/*
- * We need to be a PE32 file for EFI. On some architectures we can use
- * objcopy to create the correct file, however on arm we need to do
- * it ourselves.
- */
-
-#define IMAGE_FILE_MACHINE_ARM 0x01c2
-
-#define IMAGE_SCN_CNT_CODE 0x00000020
-#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040
-#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000
-#define IMAGE_SCN_MEM_EXECUTE 0x20000000
-#define IMAGE_SCN_MEM_READ 0x40000000
-
- .section .peheader,"a"
-efi_start:
- /* The MS-DOS Stub, only used to get the offset of the COFF header */
- .ascii "MZ"
- .short 0
- .space 0x38
- .long pe_sig - efi_start
-
- /* The PE32 Signature. Needs to be 8-byte aligned */
- .align 3
-pe_sig:
- .ascii "PE"
- .short 0
-coff_head:
- .short IMAGE_FILE_MACHINE_ARM /* ARM file */
- .short 2 /* 2 Sections */
- .long 0 /* Timestamp */
- .long 0 /* No symbol table */
- .long 0 /* No symbols */
- .short section_table - optional_header /* Optional header size */
- .short 0 /* Characteristics TODO: Fill in */
-
-optional_header:
- .short 0x010b /* PE32 (32-bit addressing) */
- .byte 0 /* Major linker version */
- .byte 0 /* Minor linker version */
- .long _edata - _end_header /* Code size */
- .long 0 /* No initialized data */
- .long 0 /* No uninitialized data */
- .long _start - efi_start /* Entry point */
- .long _end_header - efi_start /* Start of code */
- .long 0 /* Start of data */
-
-optional_windows_header:
- .long 0 /* Image base */
- .long 32 /* Section Alignment */
- .long 8 /* File alignment */
- .short 0 /* Major OS version */
- .short 0 /* Minor OS version */
- .short 0 /* Major image version */
- .short 0 /* Minor image version */
- .short 0 /* Major subsystem version */
- .short 0 /* Minor subsystem version */
- .long 0 /* Win32 version */
- .long _edata - efi_start /* Image size */
- .long _end_header - efi_start /* Header size */
- .long 0 /* Checksum */
- .short 0xa /* Subsystem (EFI app) */
- .short 0 /* DLL Characteristics */
- .long 0 /* Stack reserve */
- .long 0 /* Stack commit */
- .long 0 /* Heap reserve */
- .long 0 /* Heap commit */
- .long 0 /* Loader flags */
- .long 6 /* Number of RVAs */
-
- /* RVAs: */
- .quad 0
- .quad 0
- .quad 0
- .quad 0
- .quad 0
- .quad 0
-
-section_table:
- /* We need a .reloc section for EFI */
- .ascii ".reloc"
- .byte 0
- .byte 0 /* Pad to 8 bytes */
- .long 0 /* Virtual size */
- .long 0 /* Virtual address */
- .long 0 /* Size of raw data */
- .long 0 /* Pointer to raw data */
- .long 0 /* Pointer to relocations */
- .long 0 /* Pointer to line numbers */
- .short 0 /* Number of relocations */
- .short 0 /* Number of line numbers */
- .long (IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ | \
- IMAGE_SCN_MEM_DISCARDABLE) /* Characteristics */
-
- /* The contents of the loader */
- .ascii ".text"
- .byte 0
- .byte 0
- .byte 0 /* Pad to 8 bytes */
- .long _edata - _end_header /* Virtual size */
- .long _end_header - efi_start /* Virtual address */
- .long _edata - _end_header /* Size of raw data */
- .long _end_header - efi_start /* Pointer to raw data */
- .long 0 /* Pointer to relocations */
- .long 0 /* Pointer to line numbers */
- .short 0 /* Number of relocations */
- .short 0 /* Number of line numbers */
- .long (IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE | \
- IMAGE_SCN_MEM_READ) /* Characteristics */
-_end_header:
-
- .text
-_start:
- /* Save the boot params to the stack */
- push {r0, r1}
-
- adr r0, .Lbase
- ldr r1, [r0]
- sub r5, r0, r1
-
- ldr r0, .Limagebase
- add r0, r0, r5
- ldr r1, .Ldynamic
- add r1, r1, r5
-
- bl _C_LABEL(self_reloc)
-
- /* Zero the BSS, _reloc fixed the values for us */
- ldr r0, .Lbss
- ldr r1, .Lbssend
- mov r2, #0
-
-1: cmp r0, r1
- bge 2f
- str r2, [r0], #4
- b 1b
-2:
-
- pop {r0, r1}
- bl _C_LABEL(efi_main)
-
-1: b 1b
-
-.Lbase:
- .word .
-.Limagebase:
- .word ImageBase
-.Ldynamic:
- .word _DYNAMIC
-.Lbss:
- .word __bss_start
-.Lbssend:
- .word __bss_end
-
-.align 3
-stack:
- .space 512
-stack_end:
-
diff --git a/sys/boot/efi/loader/arch/arm64/Makefile.inc b/sys/boot/efi/loader/arch/arm64/Makefile.inc
deleted file mode 100644
index a71bcc2e1a1f..000000000000
--- a/sys/boot/efi/loader/arch/arm64/Makefile.inc
+++ /dev/null
@@ -1,12 +0,0 @@
-# $FreeBSD$
-
-HAVE_FDT=yes
-
-SRCS+= exec.c \
- start.S
-
-.PATH: ${BOOTSRC}/arm64/libarm64
-CFLAGS+=-I${BOOTSRC}/arm64/libarm64
-SRCS+= cache.c
-
-CFLAGS+= -mgeneral-regs-only
diff --git a/sys/boot/efi/loader/arch/arm64/exec.c b/sys/boot/efi/loader/arch/arm64/exec.c
deleted file mode 100644
index 45321261def0..000000000000
--- a/sys/boot/efi/loader/arch/arm64/exec.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/*-
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <string.h>
-
-#include <sys/param.h>
-#include <sys/linker.h>
-#include <machine/elf.h>
-
-#include <bootstrap.h>
-
-#include <efi.h>
-#include <efilib.h>
-
-#include "loader_efi.h"
-#include "cache.h"
-
-#include "platform/acfreebsd.h"
-#include "acconfig.h"
-#define ACPI_SYSTEM_XFACE
-#define ACPI_USE_SYSTEM_INTTYPES
-#include "actypes.h"
-#include "actbl.h"
-
-static EFI_GUID acpi_guid = ACPI_TABLE_GUID;
-static EFI_GUID acpi20_guid = ACPI_20_TABLE_GUID;
-
-static int elf64_exec(struct preloaded_file *amp);
-static int elf64_obj_exec(struct preloaded_file *amp);
-
-int bi_load(char *args, vm_offset_t *modulep, vm_offset_t *kernendp);
-
-static struct file_format arm64_elf = {
- elf64_loadfile,
- elf64_exec
-};
-
-struct file_format *file_formats[] = {
- &arm64_elf,
- NULL
-};
-
-static int
-elf64_exec(struct preloaded_file *fp)
-{
- vm_offset_t modulep, kernendp;
- vm_offset_t clean_addr;
- size_t clean_size;
- struct file_metadata *md;
- ACPI_TABLE_RSDP *rsdp;
- Elf_Ehdr *ehdr;
- char buf[24];
- int err, revision;
- void (*entry)(vm_offset_t);
-
- rsdp = efi_get_table(&acpi20_guid);
- if (rsdp == NULL) {
- rsdp = efi_get_table(&acpi_guid);
- }
- if (rsdp != NULL) {
- sprintf(buf, "0x%016llx", (unsigned long long)rsdp);
- setenv("hint.acpi.0.rsdp", buf, 1);
- revision = rsdp->Revision;
- if (revision == 0)
- revision = 1;
- sprintf(buf, "%d", revision);
- setenv("hint.acpi.0.revision", buf, 1);
- strncpy(buf, rsdp->OemId, sizeof(rsdp->OemId));
- buf[sizeof(rsdp->OemId)] = '\0';
- setenv("hint.acpi.0.oem", buf, 1);
- sprintf(buf, "0x%016x", rsdp->RsdtPhysicalAddress);
- setenv("hint.acpi.0.rsdt", buf, 1);
- if (revision >= 2) {
- /* XXX extended checksum? */
- sprintf(buf, "0x%016llx",
- (unsigned long long)rsdp->XsdtPhysicalAddress);
- setenv("hint.acpi.0.xsdt", buf, 1);
- sprintf(buf, "%d", rsdp->Length);
- setenv("hint.acpi.0.xsdt_length", buf, 1);
- }
- }
-
- if ((md = file_findmetadata(fp, MODINFOMD_ELFHDR)) == NULL)
- return(EFTYPE);
-
- ehdr = (Elf_Ehdr *)&(md->md_data);
- entry = efi_translate(ehdr->e_entry);
-
- efi_time_fini();
- err = bi_load(fp->f_args, &modulep, &kernendp);
- if (err != 0) {
- efi_time_init();
- return (err);
- }
-
- dev_cleanup();
-
- /* Clean D-cache under kernel area and invalidate whole I-cache */
- clean_addr = (vm_offset_t)efi_translate(fp->f_addr);
- clean_size = (vm_offset_t)efi_translate(kernendp) - clean_addr;
-
- cpu_flush_dcache((void *)clean_addr, clean_size);
- cpu_inval_icache(NULL, 0);
-
- (*entry)(modulep);
- panic("exec returned");
-}
-
-static int
-elf64_obj_exec(struct preloaded_file *fp)
-{
-
- printf("%s called for preloaded file %p (=%s):\n", __func__, fp,
- fp->f_name);
- return (ENOSYS);
-}
-
diff --git a/sys/boot/efi/loader/arch/arm64/ldscript.arm64 b/sys/boot/efi/loader/arch/arm64/ldscript.arm64
deleted file mode 100644
index 685c0967840d..000000000000
--- a/sys/boot/efi/loader/arch/arm64/ldscript.arm64
+++ /dev/null
@@ -1,85 +0,0 @@
-/* $FreeBSD$ */
-/*
-OUTPUT_FORMAT("elf64-aarch64-freebsd", "elf64-aarch64-freebsd", "elf64-aarch64-freebsd")
-*/
-OUTPUT_ARCH(aarch64)
-ENTRY(_start)
-SECTIONS
-{
- /* Read-only sections, merged into text segment: */
- . = 0;
- ImageBase = .;
- .text : {
- *(.peheader)
- *(.text .stub .text.* .gnu.linkonce.t.*)
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.plt)
- } =0xD4200000
- . = ALIGN(16);
- .data : {
- *(.rodata .rodata.* .gnu.linkonce.r.*)
- *(.rodata1)
- *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
- *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
- *(.opd)
- *(.data .data.* .gnu.linkonce.d.*)
- *(.data1)
- *(.plabel)
-
- . = ALIGN(16);
- __bss_start = .;
- *(.sbss .sbss.* .gnu.linkonce.sb.*)
- *(.scommon)
- *(.dynbss)
- *(.bss *.bss.*)
- *(COMMON)
- . = ALIGN(16);
- __bss_end = .;
- }
- . = ALIGN(16);
- set_Xcommand_set : {
- __start_set_Xcommand_set = .;
- *(set_Xcommand_set)
- __stop_set_Xcommand_set = .;
- }
- set_Xficl_compile_set : {
- __start_set_Xficl_compile_set = .;
- *(set_Xficl_compile_set)
- __stop_set_Xficl_compile_set = .;
- }
- . = ALIGN(16);
- __gp = .;
- .sdata : {
- *(.got.plt .got)
- *(.sdata .sdata.* .gnu.linkonce.s.*)
- *(dynsbss)
- *(.scommon)
- }
- . = ALIGN(16);
- .dynamic : { *(.dynamic) }
- . = ALIGN(16);
- .rela.dyn : {
- *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
- *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
- *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
- *(.rela.got)
- *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
- *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
- *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
- *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
- *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
- *(.rela.plt)
- *(.relset_*)
- *(.rela.dyn .rela.dyn.*)
- }
- . = ALIGN(16);
- .reloc : { *(.reloc) }
- . = ALIGN(16);
- .dynsym : { *(.dynsym) }
- _edata = .;
-
- /* Unused sections */
- .dynstr : { *(.dynstr) }
- .hash : { *(.hash) }
-}
diff --git a/sys/boot/efi/loader/arch/arm64/start.S b/sys/boot/efi/loader/arch/arm64/start.S
deleted file mode 100644
index b58c2c50be9f..000000000000
--- a/sys/boot/efi/loader/arch/arm64/start.S
+++ /dev/null
@@ -1,165 +0,0 @@
-/*-
- * Copyright (c) 2014 Andrew Turner
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-/*
- * We need to be a PE32+ file for EFI. On some architectures we can use
- * objcopy to create the correct file, however on arm64 we need to do
- * it ourselves.
- */
-
-#define IMAGE_FILE_MACHINE_ARM64 0xaa64
-
-#define IMAGE_SCN_CNT_CODE 0x00000020
-#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040
-#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000
-#define IMAGE_SCN_MEM_EXECUTE 0x20000000
-#define IMAGE_SCN_MEM_READ 0x40000000
-
- .section .peheader,"a"
-efi_start:
- /* The MS-DOS Stub, only used to get the offset of the COFF header */
- .ascii "MZ"
- .short 0
- .space 0x38
- .long pe_sig - efi_start
-
- /* The PE32 Signature. Needs to be 8-byte aligned */
- .align 3
-pe_sig:
- .ascii "PE"
- .short 0
-coff_head:
- .short IMAGE_FILE_MACHINE_ARM64 /* AArch64 file */
- .short 2 /* 2 Sections */
- .long 0 /* Timestamp */
- .long 0 /* No symbol table */
- .long 0 /* No symbols */
- .short section_table - optional_header /* Optional header size */
- .short 0 /* Characteristics TODO: Fill in */
-
-optional_header:
- .short 0x020b /* PE32+ (64-bit addressing) */
- .byte 0 /* Major linker version */
- .byte 0 /* Minor linker version */
- .long _edata - _end_header /* Code size */
- .long 0 /* No initialized data */
- .long 0 /* No uninitialized data */
- .long _start - efi_start /* Entry point */
- .long _end_header - efi_start /* Start of code */
-
-optional_windows_header:
- .quad 0 /* Image base */
- .long 32 /* Section Alignment */
- .long 8 /* File alignment */
- .short 0 /* Major OS version */
- .short 0 /* Minor OS version */
- .short 0 /* Major image version */
- .short 0 /* Minor image version */
- .short 0 /* Major subsystem version */
- .short 0 /* Minor subsystem version */
- .long 0 /* Win32 version */
- .long _edata - efi_start /* Image size */
- .long _end_header - efi_start /* Header size */
- .long 0 /* Checksum */
- .short 0xa /* Subsystem (EFI app) */
- .short 0 /* DLL Characteristics */
- .quad 0 /* Stack reserve */
- .quad 0 /* Stack commit */
- .quad 0 /* Heap reserve */
- .quad 0 /* Heap commit */
- .long 0 /* Loader flags */
- .long 6 /* Number of RVAs */
-
- /* RVAs: */
- .quad 0
- .quad 0
- .quad 0
- .quad 0
- .quad 0
- .quad 0
-
-section_table:
- /* We need a .reloc section for EFI */
- .ascii ".reloc"
- .byte 0
- .byte 0 /* Pad to 8 bytes */
- .long 0 /* Virtual size */
- .long 0 /* Virtual address */
- .long 0 /* Size of raw data */
- .long 0 /* Pointer to raw data */
- .long 0 /* Pointer to relocations */
- .long 0 /* Pointer to line numbers */
- .short 0 /* Number of relocations */
- .short 0 /* Number of line numbers */
- .long (IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ | \
- IMAGE_SCN_MEM_DISCARDABLE) /* Characteristics */
-
- /* The contents of the loader */
- .ascii ".text"
- .byte 0
- .byte 0
- .byte 0 /* Pad to 8 bytes */
- .long _edata - _end_header /* Virtual size */
- .long _end_header - efi_start /* Virtual address */
- .long _edata - _end_header /* Size of raw data */
- .long _end_header - efi_start /* Pointer to raw data */
- .long 0 /* Pointer to relocations */
- .long 0 /* Pointer to line numbers */
- .short 0 /* Number of relocations */
- .short 0 /* Number of line numbers */
- .long (IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE | \
- IMAGE_SCN_MEM_READ) /* Characteristics */
-_end_header:
-
- .text
- .globl _start
-_start:
- /* Save the boot params to the stack */
- stp x0, x1, [sp, #-16]!
-
- adr x0, __bss_start
- adr x1, __bss_end
-
- b 2f
-
-1:
- stp xzr, xzr, [x0], #16
-2:
- cmp x0, x1
- b.lo 1b
-
- adr x0, ImageBase
- adr x1, _DYNAMIC
-
- bl self_reloc
-
- ldp x0, x1, [sp], #16
-
- bl efi_main
-
-1: b 1b
diff --git a/sys/boot/efi/loader/arch/i386/Makefile.inc b/sys/boot/efi/loader/arch/i386/Makefile.inc
deleted file mode 100644
index 70d2848ba26f..000000000000
--- a/sys/boot/efi/loader/arch/i386/Makefile.inc
+++ /dev/null
@@ -1,14 +0,0 @@
-# $FreeBSD$
-
-SRCS+= start.S \
- efimd.c \
- elf32_freebsd.c \
- exec.c
-
-.PATH: ${BOOTSRC}/i386/libi386
-SRCS+= nullconsole.c \
- comconsole.c \
- spinconsole.c
-
-CFLAGS+= -fPIC -DTERM_EMU
-LDFLAGS+= -Wl,-znocombreloc
diff --git a/sys/boot/efi/loader/arch/i386/bootinfo.c b/sys/boot/efi/loader/arch/i386/bootinfo.c
deleted file mode 100644
index cbd6e4ebe977..000000000000
--- a/sys/boot/efi/loader/arch/i386/bootinfo.c
+++ /dev/null
@@ -1,275 +0,0 @@
-/*-
- * Copyright (c) 1998 Michael Smith <msmith@freebsd.org>
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <string.h>
-#include <sys/param.h>
-#include <sys/reboot.h>
-#include <sys/linker.h>
-#include <sys/boot.h>
-
-#include <efi.h>
-#include <efilib.h>
-
-#include "bootstrap.h"
-#include "libi386.h"
-#include <machine/bootinfo.h>
-
-static const char howto_switches[] = "aCdrgDmphsv";
-static int howto_masks[] = {
- RB_ASKNAME, RB_CDROM, RB_KDB, RB_DFLTROOT, RB_GDB, RB_MULTIPLE,
- RB_MUTE, RB_PAUSE, RB_SERIAL, RB_SINGLE, RB_VERBOSE
-};
-
-int
-bi_getboothowto(char *kargs)
-{
- const char *sw;
- char *opts;
- int howto, i;
-
- howto = 0;
-
- /* Get the boot options from the environment first. */
- for (i = 0; howto_names[i].ev != NULL; i++) {
- if (getenv(howto_names[i].ev) != NULL)
- howto |= howto_names[i].mask;
- }
-
- /* Parse kargs */
- if (kargs == NULL)
- return (howto);
-
- opts = strchr(kargs, '-');
- while (opts != NULL) {
- while (*(++opts) != '\0') {
- sw = strchr(howto_switches, *opts);
- if (sw == NULL)
- break;
- howto |= howto_masks[sw - howto_switches];
- }
- opts = strchr(opts, '-');
- }
-
- return (howto);
-}
-
-/*
- * Copy the environment into the load area starting at (addr).
- * Each variable is formatted as <name>=<value>, with a single nul
- * separating each variable, and a double nul terminating the environment.
- */
-vm_offset_t
-bi_copyenv(vm_offset_t start)
-{
- struct env_var *ep;
- vm_offset_t addr, last;
- size_t len;
-
- addr = last = start;
-
- /* Traverse the environment. */
- for (ep = environ; ep != NULL; ep = ep->ev_next) {
- len = strlen(ep->ev_name);
- if (i386_copyin(ep->ev_name, addr, len) != len)
- break;
- addr += len;
- if (i386_copyin("=", addr, 1) != 1)
- break;
- addr++;
- if (ep->ev_value != NULL) {
- len = strlen(ep->ev_value);
- if (i386_copyin(ep->ev_value, addr, len) != len)
- break;
- addr += len;
- }
- if (i386_copyin("", addr, 1) != 1)
- break;
- last = ++addr;
- }
-
- if (i386_copyin("", last++, 1) != 1)
- 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); \
- i386_copyin(&x, a, sizeof(x)); \
- a += sizeof(x); \
-}
-
-#define MOD_STR(t, a, s) { \
- COPY32(t, a); \
- COPY32(strlen(s) + 1, a); \
- i386_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); \
- i386_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); \
- i386_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));
-}
diff --git a/sys/boot/efi/loader/arch/i386/efimd.c b/sys/boot/efi/loader/arch/i386/efimd.c
deleted file mode 100644
index 8e1d850d82cc..000000000000
--- a/sys/boot/efi/loader/arch/i386/efimd.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/*-
- * Copyright (c) 2004, 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-
-#include <efi.h>
-#include <efilib.h>
-
-#include <libi386.h>
-#include <machine/bootinfo.h>
-
-#define EFI_INTEL_FPSWA \
- {0xc41b6531,0x97b9,0x11d3,{0x9a,0x29,0x00,0x90,0x27,0x3f,0xc1,0x4d}}
-
-static EFI_GUID fpswa_guid = EFI_INTEL_FPSWA;
-
-/* DIG64 Headless Console & Debug Port Table. */
-#define HCDP_TABLE_GUID \
- {0xf951938d,0x620b,0x42ef,{0x82,0x79,0xa8,0x4b,0x79,0x61,0x78,0x98}}
-
-static EFI_GUID hcdp_guid = HCDP_TABLE_GUID;
-
-static UINTN mapkey;
-
-int ldr_bootinfo(struct bootinfo *, uint64_t *);
-int ldr_enter(const char *);
-
-static uint64_t
-ldr_alloc(vm_offset_t va)
-{
-
- return (0);
-}
-
-int
-ldr_bootinfo(struct bootinfo *bi, uint64_t *bi_addr)
-{
- VOID *fpswa;
- EFI_MEMORY_DESCRIPTOR *mm;
- EFI_PHYSICAL_ADDRESS addr;
- EFI_HANDLE handle;
- EFI_STATUS status;
- size_t bisz;
- UINTN mmsz, pages, sz;
- UINT32 mmver;
-
- bi->bi_systab = (uint64_t)ST;
- bi->bi_hcdp = (uint64_t)efi_get_table(&hcdp_guid);
-
- sz = sizeof(EFI_HANDLE);
- status = BS->LocateHandle(ByProtocol, &fpswa_guid, 0, &sz, &handle);
- if (status == 0)
- status = BS->HandleProtocol(handle, &fpswa_guid, &fpswa);
- bi->bi_fpswa = (status == 0) ? (uint64_t)fpswa : 0;
-
- bisz = (sizeof(struct bootinfo) + 0x0f) & ~0x0f;
-
- /*
- * Allocate enough pages to hold the bootinfo block and the memory
- * map EFI will return to us. The memory map has an unknown size,
- * so we have to determine that first. Note that the AllocatePages
- * call can itself modify the memory map, so we have to take that
- * into account as well. The changes to the memory map are caused
- * by splitting a range of free memory into two (AFAICT), so that
- * one is marked as being loader data.
- */
- sz = 0;
- BS->GetMemoryMap(&sz, NULL, &mapkey, &mmsz, &mmver);
- sz += mmsz;
- sz = (sz + 15) & ~15;
- pages = EFI_SIZE_TO_PAGES(sz + bisz);
- status = BS->AllocatePages(AllocateAnyPages, EfiLoaderData, pages,
- &addr);
- if (EFI_ERROR(status)) {
- printf("%s: AllocatePages() returned 0x%lx\n", __func__,
- (long)status);
- return (ENOMEM);
- }
-
- /*
- * Read the memory map and stash it after bootinfo. Align the
- * memory map on a 16-byte boundary (the bootinfo block is page
- * aligned).
- */
- *bi_addr = addr;
- mm = (void *)(addr + bisz);
- sz = (EFI_PAGE_SIZE * pages) - bisz;
- status = BS->GetMemoryMap(&sz, mm, &mapkey, &mmsz, &mmver);
- if (EFI_ERROR(status)) {
- printf("%s: GetMemoryMap() returned 0x%lx\n", __func__,
- (long)status);
- return (EINVAL);
- }
- bi->bi_memmap = (uint64_t)mm;
- bi->bi_memmap_size = sz;
- bi->bi_memdesc_size = mmsz;
- bi->bi_memdesc_version = mmver;
-
- bcopy(bi, (void *)(*bi_addr), sizeof(*bi));
- return (0);
-}
-
-int
-ldr_enter(const char *kernel)
-{
- EFI_STATUS status;
-
- status = BS->ExitBootServices(IH, mapkey);
- if (EFI_ERROR(status)) {
- printf("%s: ExitBootServices() returned 0x%lx\n", __func__,
- (long)status);
- return (EINVAL);
- }
-
- return (0);
-}
diff --git a/sys/boot/efi/loader/arch/i386/elf32_freebsd.c b/sys/boot/efi/loader/arch/i386/elf32_freebsd.c
deleted file mode 100644
index d3c42613108e..000000000000
--- a/sys/boot/efi/loader/arch/i386/elf32_freebsd.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/*-
- * Copyright (c) 1998 Michael Smith <msmith@freebsd.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/exec.h>
-#include <sys/linker.h>
-#include <string.h>
-#include <machine/bootinfo.h>
-#include <machine/elf.h>
-#include <stand.h>
-
-#include <efi.h>
-#include <efilib.h>
-
-#include "bootstrap.h"
-#include "../libi386/libi386.h"
-#include "../btx/lib/btxv86.h"
-
-extern void __exec(caddr_t addr, ...);
-extern int bi_load(char *args, vm_offset_t *modulep, vm_offset_t *kernendp);
-extern int ldr_enter(const char *kernel);
-
-static int elf32_exec(struct preloaded_file *amp);
-static int elf32_obj_exec(struct preloaded_file *amp);
-
-struct file_format i386_elf = { elf32_loadfile, elf32_exec };
-struct file_format i386_elf_obj = { elf32_obj_loadfile, elf32_obj_exec };
-
-struct file_format *file_formats[] = {
- &i386_elf,
- &i386_elf_obj,
- NULL
-};
-
-/*
- * There is an ELF kernel and one or more ELF modules loaded.
- * We wish to start executing the kernel image, so make such
- * preparations as are required, and do so.
- */
-static int
-elf32_exec(struct preloaded_file *fp)
-{
- struct file_metadata *md;
- Elf_Ehdr *ehdr;
- vm_offset_t entry, bootinfop, modulep, kernend;
- int boothowto, err, bootdev;
-
- if ((md = file_findmetadata(fp, MODINFOMD_ELFHDR)) == NULL)
- return(EFTYPE);
- ehdr = (Elf_Ehdr *)&(md->md_data);
-
- efi_time_fini();
- err = bi_load(fp->f_args, &modulep, &kernend);
- if (err != 0) {
- efi_time_init();
- return(err);
- }
- entry = ehdr->e_entry & 0xffffff;
-
- printf("Start @ 0x%x ...\n", entry);
-
- ldr_enter(fp->f_name);
-
- dev_cleanup();
- __exec((void *)entry, boothowto, bootdev, 0, 0, 0, bootinfop, modulep, kernend);
-
- panic("exec returned");
-}
-
-static int
-elf32_obj_exec(struct preloaded_file *fp)
-{
- return (EFTYPE);
-}
diff --git a/sys/boot/efi/loader/arch/i386/exec.c b/sys/boot/efi/loader/arch/i386/exec.c
deleted file mode 100644
index 579f5593b24b..000000000000
--- a/sys/boot/efi/loader/arch/i386/exec.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-
- * Copyright (c) 2010 Rui Paulo <rpaulo@FreeBSD.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <machine/elf.h>
-#include "../btx/lib/btxv86.h"
-
-#include "../../common/bootstrap.h"
-
-uint32_t __base;
-struct __v86 __v86;
-
-void
-__v86int()
-{
- printf("%s\n", __func__);
- exit(1);
-}
-
-void
-__exec(caddr_t addr, ...)
-{
-}
diff --git a/sys/boot/efi/loader/arch/i386/i386_copy.c b/sys/boot/efi/loader/arch/i386/i386_copy.c
deleted file mode 100644
index 522913f5da43..000000000000
--- a/sys/boot/efi/loader/arch/i386/i386_copy.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*-
- * Copyright (c) 1998 Michael Smith <msmith@freebsd.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * MD primitives supporting placement of module data
- *
- * XXX should check load address/size against memory top.
- */
-#include <stand.h>
-
-#include "libi386.h"
-#include "btxv86.h"
-
-ssize_t
-i386_copyin(const void *src, vm_offset_t dest, const size_t len)
-{
- bcopy(src, PTOV(dest), len);
- return(len);
-}
-
-ssize_t
-i386_copyout(const vm_offset_t src, void *dest, const size_t len)
-{
- bcopy(PTOV(src), dest, len);
- return(len);
-}
-
-
-ssize_t
-i386_readin(const int fd, vm_offset_t dest, const size_t len)
-{
- return (read(fd, PTOV(dest), len));
-}
diff --git a/sys/boot/efi/loader/arch/i386/ldscript.i386 b/sys/boot/efi/loader/arch/i386/ldscript.i386
deleted file mode 100644
index e17212a1bddd..000000000000
--- a/sys/boot/efi/loader/arch/i386/ldscript.i386
+++ /dev/null
@@ -1,77 +0,0 @@
-/* $FreeBSD$ */
-OUTPUT_FORMAT("elf32-i386-freebsd", "elf32-i386-freebsd", "elf32-i386-freebsd")
-OUTPUT_ARCH(i386)
-ENTRY(_start)
-SECTIONS
-{
- /* Read-only sections, merged into text segment: */
- . = 0;
- ImageBase = .;
- . = SIZEOF_HEADERS;
- . = ALIGN(4096);
- .text : {
- *(.text .stub .text.* .gnu.linkonce.t.*)
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.plt)
- } =0xCCCCCCCC
- . = ALIGN(4096);
- .data : {
- *(.rodata .rodata.* .gnu.linkonce.r.*)
- *(.rodata1)
- *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
- *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
- *(.opd)
- *(.data .data.* .gnu.linkonce.d.*)
- *(.data1)
- *(.plabel)
- *(.dynbss)
- *(.bss .bss.* .gnu.linkonce.b.*)
- *(COMMON)
- }
- . = ALIGN(4096);
- set_Xcommand_set : {
- __start_set_Xcommand_set = .;
- *(set_Xcommand_set)
- __stop_set_Xcommand_set = .;
- }
- set_Xficl_compile_set : {
- __start_set_Xficl_compile_set = .;
- *(set_Xficl_compile_set)
- __stop_set_Xficl_compile_set = .;
- }
- . = ALIGN(4096);
- __gp = .;
- .sdata : {
- *(.got.plt .got)
- *(.sdata .sdata.* .gnu.linkonce.s.*)
- *(dynsbss)
- *(.sbss .sbss.* .gnu.linkonce.sb.*)
- *(.scommon)
- }
- . = ALIGN(4096);
- .dynamic : { *(.dynamic) }
- . = ALIGN(4096);
- .rel.dyn : {
- *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
- *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
- *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
- *(.rel.got)
- *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*)
- *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*)
- *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*)
- *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*)
- *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
- *(.rel.plt)
- *(.relset_*)
- *(.rel.dyn .rel.dyn.*)
- }
- . = ALIGN(4096);
- .reloc : { *(.reloc) }
- . = ALIGN(4096);
- .hash : { *(.hash) }
- . = ALIGN(4096);
- .dynsym : { *(.dynsym) }
- . = ALIGN(4096);
- .dynstr : { *(.dynstr) }
-}
diff --git a/sys/boot/efi/loader/arch/i386/start.S b/sys/boot/efi/loader/arch/i386/start.S
deleted file mode 100644
index b597f419d4a1..000000000000
--- a/sys/boot/efi/loader/arch/i386/start.S
+++ /dev/null
@@ -1,68 +0,0 @@
-/*-
- * Copyright (c) 2008-2010 Rui Paulo <rpaulo@FreeBSD.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
- .text
-
-#include <machine/asm.h>
-
-#define EFI_SUCCESS 0
-
-/*
- * EFI entry point.
- * _start(EFI_IMAGE image_handle, EFI_SYSTEM_TABLE *system_table);
- *
- * We calculate the base address along with _DYNAMIC, relocate us and finally
- * pass control to efi_main.
- */
-
-ENTRY(_start)
- pushl %ebp
- movl %esp, %ebp
-
- pushl 12(%ebp) /* image_handle */
- pushl 8(%ebp) /* system_table */
- call 0f
-0: popl %eax
- movl %eax, %ebx
- addl $ImageBase-0b, %eax
- addl $_DYNAMIC-0b, %ebx
- pushl %ebx /* dynamic */
- pushl %eax /* ImageBase */
- call self_reloc
- popl %ebx /* remove ImageBase from the stack */
- popl %ebx /* remove dynamic from the stack */
- call efi_main
-1: leave
- ret
-END(_start)
-
- .data
- .section .reloc, "a"
- .long 0
- .long 10
- .word 0
diff --git a/sys/boot/efi/loader/autoload.c b/sys/boot/efi/loader/autoload.c
deleted file mode 100644
index c1eb84928ed8..000000000000
--- a/sys/boot/efi/loader/autoload.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * Copyright (c) 2010 Rui Paulo <rpaulo@FreeBSD.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include "loader_efi.h"
-
-int
-efi_autoload(void)
-{
-
- return (0);
-}
diff --git a/sys/boot/efi/loader/bootinfo.c b/sys/boot/efi/loader/bootinfo.c
deleted file mode 100644
index ca06a6194f8d..000000000000
--- a/sys/boot/efi/loader/bootinfo.c
+++ /dev/null
@@ -1,471 +0,0 @@
-/*-
- * Copyright (c) 1998 Michael Smith <msmith@freebsd.org>
- * Copyright (c) 2004, 2006 Marcel Moolenaar
- * Copyright (c) 2014 The FreeBSD Foundation
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <string.h>
-#include <sys/param.h>
-#include <sys/reboot.h>
-#include <sys/linker.h>
-#include <sys/boot.h>
-#include <machine/cpufunc.h>
-#include <machine/elf.h>
-#include <machine/metadata.h>
-#include <machine/psl.h>
-
-#include <efi.h>
-#include <efilib.h>
-
-#include "bootstrap.h"
-#include "loader_efi.h"
-
-#if defined(__amd64__)
-#include <machine/specialreg.h>
-#endif
-
-#include "framebuffer.h"
-
-#if defined(LOADER_FDT_SUPPORT)
-#include <fdt_platform.h>
-#endif
-
-int bi_load(char *args, vm_offset_t *modulep, vm_offset_t *kernendp);
-
-extern EFI_SYSTEM_TABLE *ST;
-
-static const char howto_switches[] = "aCdrgDmphsv";
-static int howto_masks[] = {
- RB_ASKNAME, RB_CDROM, RB_KDB, RB_DFLTROOT, RB_GDB, RB_MULTIPLE,
- RB_MUTE, RB_PAUSE, RB_SERIAL, RB_SINGLE, RB_VERBOSE
-};
-
-static int
-bi_getboothowto(char *kargs)
-{
- const char *sw;
- char *opts;
- char *console;
- int howto, i;
-
- howto = 0;
-
- /* Get the boot options from the environment first. */
- for (i = 0; howto_names[i].ev != NULL; i++) {
- if (getenv(howto_names[i].ev) != NULL)
- howto |= howto_names[i].mask;
- }
-
- console = getenv("console");
- if (console != NULL) {
- if (strcmp(console, "comconsole") == 0)
- howto |= RB_SERIAL;
- if (strcmp(console, "nullconsole") == 0)
- howto |= RB_MUTE;
- }
-
- /* Parse kargs */
- if (kargs == NULL)
- return (howto);
-
- opts = strchr(kargs, '-');
- while (opts != NULL) {
- while (*(++opts) != '\0') {
- sw = strchr(howto_switches, *opts);
- if (sw == NULL)
- break;
- howto |= howto_masks[sw - howto_switches];
- }
- opts = strchr(opts, '-');
- }
-
- return (howto);
-}
-
-/*
- * Copy the environment into the load area starting at (addr).
- * Each variable is formatted as <name>=<value>, with a single nul
- * separating each variable, and a double nul terminating the environment.
- */
-static vm_offset_t
-bi_copyenv(vm_offset_t start)
-{
- struct env_var *ep;
- vm_offset_t addr, last;
- size_t len;
-
- addr = last = start;
-
- /* Traverse the environment. */
- for (ep = environ; ep != NULL; ep = ep->ev_next) {
- len = strlen(ep->ev_name);
- if ((size_t)archsw.arch_copyin(ep->ev_name, addr, len) != len)
- break;
- addr += len;
- if (archsw.arch_copyin("=", addr, 1) != 1)
- break;
- addr++;
- if (ep->ev_value != NULL) {
- len = strlen(ep->ev_value);
- if ((size_t)archsw.arch_copyin(ep->ev_value, addr, len) != len)
- break;
- addr += len;
- }
- if (archsw.arch_copyin("", addr, 1) != 1)
- break;
- last = ++addr;
- }
-
- if (archsw.arch_copyin("", last++, 1) != 1)
- 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, c) { \
- uint32_t x = (v); \
- if (c) \
- archsw.arch_copyin(&x, a, sizeof(x)); \
- a += sizeof(x); \
-}
-
-#define MOD_STR(t, a, s, c) { \
- COPY32(t, a, c); \
- COPY32(strlen(s) + 1, a, c); \
- if (c) \
- archsw.arch_copyin(s, a, strlen(s) + 1); \
- a += roundup(strlen(s) + 1, sizeof(u_long)); \
-}
-
-#define MOD_NAME(a, s, c) MOD_STR(MODINFO_NAME, a, s, c)
-#define MOD_TYPE(a, s, c) MOD_STR(MODINFO_TYPE, a, s, c)
-#define MOD_ARGS(a, s, c) MOD_STR(MODINFO_ARGS, a, s, c)
-
-#define MOD_VAR(t, a, s, c) { \
- COPY32(t, a, c); \
- COPY32(sizeof(s), a, c); \
- if (c) \
- archsw.arch_copyin(&s, a, sizeof(s)); \
- a += roundup(sizeof(s), sizeof(u_long)); \
-}
-
-#define MOD_ADDR(a, s, c) MOD_VAR(MODINFO_ADDR, a, s, c)
-#define MOD_SIZE(a, s, c) MOD_VAR(MODINFO_SIZE, a, s, c)
-
-#define MOD_METADATA(a, mm, c) { \
- COPY32(MODINFO_METADATA | mm->md_type, a, c); \
- COPY32(mm->md_size, a, c); \
- if (c) \
- archsw.arch_copyin(mm->md_data, a, mm->md_size); \
- a += roundup(mm->md_size, sizeof(u_long)); \
-}
-
-#define MOD_END(a, c) { \
- COPY32(MODINFO_END, a, c); \
- COPY32(0, a, c); \
-}
-
-static vm_offset_t
-bi_copymodules(vm_offset_t addr)
-{
- struct preloaded_file *fp;
- struct file_metadata *md;
- int c;
- uint64_t v;
-
- c = addr != 0;
- /* Start with the first module on the list, should be the kernel. */
- for (fp = file_findfile(NULL, NULL); fp != NULL; fp = fp->f_next) {
- MOD_NAME(addr, fp->f_name, c); /* This must come first. */
- MOD_TYPE(addr, fp->f_type, c);
- if (fp->f_args)
- MOD_ARGS(addr, fp->f_args, c);
- v = fp->f_addr;
-#if defined(__arm__)
- v -= __elfN(relocation_offset);
-#endif
- MOD_ADDR(addr, v, c);
- v = fp->f_size;
- MOD_SIZE(addr, v, c);
- for (md = fp->f_metadata; md != NULL; md = md->md_next)
- if (!(md->md_type & MODINFOMD_NOCOPY))
- MOD_METADATA(addr, md, c);
- }
- MOD_END(addr, c);
- return(addr);
-}
-
-static int
-bi_load_efi_data(struct preloaded_file *kfp)
-{
- EFI_MEMORY_DESCRIPTOR *mm;
- EFI_PHYSICAL_ADDRESS addr;
- EFI_STATUS status;
- size_t efisz;
- UINTN efi_mapkey;
- UINTN mmsz, pages, retry, sz;
- UINT32 mmver;
- struct efi_map_header *efihdr;
-
-#if defined(__amd64__) || defined(__aarch64__)
- struct efi_fb efifb;
-
- if (efi_find_framebuffer(&efifb) == 0) {
- printf("EFI framebuffer information:\n");
- printf("addr, size 0x%jx, 0x%jx\n", efifb.fb_addr,
- efifb.fb_size);
- printf("dimensions %d x %d\n", efifb.fb_width,
- efifb.fb_height);
- printf("stride %d\n", efifb.fb_stride);
- printf("masks 0x%08x, 0x%08x, 0x%08x, 0x%08x\n",
- efifb.fb_mask_red, efifb.fb_mask_green, efifb.fb_mask_blue,
- efifb.fb_mask_reserved);
-
- file_addmetadata(kfp, MODINFOMD_EFI_FB, sizeof(efifb), &efifb);
- }
-#endif
-
- efisz = (sizeof(struct efi_map_header) + 0xf) & ~0xf;
-
- /*
- * Assgin size of EFI_MEMORY_DESCRIPTOR to keep compatible with
- * u-boot which doesn't fill this value when buffer for memory
- * descriptors is too small (eg. 0 to obtain memory map size)
- */
- mmsz = sizeof(EFI_MEMORY_DESCRIPTOR);
-
- /*
- * It is possible that the first call to ExitBootServices may change
- * the map key. Fetch a new map key and retry ExitBootServices in that
- * case.
- */
- for (retry = 2; retry > 0; retry--) {
- /*
- * Allocate enough pages to hold the bootinfo block and the
- * memory map EFI will return to us. The memory map has an
- * unknown size, so we have to determine that first. Note that
- * the AllocatePages call can itself modify the memory map, so
- * we have to take that into account as well. The changes to
- * the memory map are caused by splitting a range of free
- * memory into two (AFAICT), so that one is marked as being
- * loader data.
- */
- sz = 0;
- BS->GetMemoryMap(&sz, NULL, &efi_mapkey, &mmsz, &mmver);
- sz += mmsz;
- sz = (sz + 0xf) & ~0xf;
- pages = EFI_SIZE_TO_PAGES(sz + efisz);
- status = BS->AllocatePages(AllocateAnyPages, EfiLoaderData,
- pages, &addr);
- if (EFI_ERROR(status)) {
- printf("%s: AllocatePages error %lu\n", __func__,
- EFI_ERROR_CODE(status));
- return (ENOMEM);
- }
-
- /*
- * Read the memory map and stash it after bootinfo. Align the
- * memory map on a 16-byte boundary (the bootinfo block is page
- * aligned).
- */
- efihdr = (struct efi_map_header *)addr;
- mm = (void *)((uint8_t *)efihdr + efisz);
- sz = (EFI_PAGE_SIZE * pages) - efisz;
-
- status = BS->GetMemoryMap(&sz, mm, &efi_mapkey, &mmsz, &mmver);
- if (EFI_ERROR(status)) {
- printf("%s: GetMemoryMap error %lu\n", __func__,
- EFI_ERROR_CODE(status));
- return (EINVAL);
- }
- status = BS->ExitBootServices(IH, efi_mapkey);
- if (EFI_ERROR(status) == 0) {
- efihdr->memory_size = sz;
- efihdr->descriptor_size = mmsz;
- efihdr->descriptor_version = mmver;
- file_addmetadata(kfp, MODINFOMD_EFI_MAP, efisz + sz,
- efihdr);
- return (0);
- }
- BS->FreePages(addr, pages);
- }
- printf("ExitBootServices error %lu\n", EFI_ERROR_CODE(status));
- return (EINVAL);
-}
-
-/*
- * Load the information expected by an amd64 kernel.
- *
- * - The 'boothowto' argument is constructed.
- * - The 'bootdev' argument is constructed.
- * - The 'bootinfo' struct is constructed, and copied into the kernel space.
- * - The kernel environment is copied into kernel space.
- * - Module metadata are formatted and placed in kernel space.
- */
-int
-bi_load(char *args, vm_offset_t *modulep, vm_offset_t *kernendp)
-{
- struct preloaded_file *xp, *kfp;
- struct devdesc *rootdev;
- struct file_metadata *md;
- vm_offset_t addr;
- uint64_t kernend;
- uint64_t envp;
- vm_offset_t size;
- char *rootdevname;
- int howto;
-#if defined(LOADER_FDT_SUPPORT)
- vm_offset_t dtbp;
- int dtb_size;
-#endif
-#if defined(__arm__)
- vm_offset_t vaddr;
- size_t i;
- /*
- * These metadata addreses must be converted for kernel after
- * relocation.
- */
- uint32_t mdt[] = {
- MODINFOMD_SSYM, MODINFOMD_ESYM, MODINFOMD_KERNEND,
- MODINFOMD_ENVP,
-#if defined(LOADER_FDT_SUPPORT)
- MODINFOMD_DTBP
-#endif
- };
-#endif
-
- howto = bi_getboothowto(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");
- archsw.arch_getdev((void**)(&rootdev), rootdevname, NULL);
- if (rootdev == NULL) {
- printf("Can't determine root device.\n");
- return(EINVAL);
- }
-
- /* Try reading the /etc/fstab file to select the root device */
- getrootmount(efi_fmtdev((void *)rootdev));
-
- 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;
- }
-
- /* Pad to a page boundary. */
- addr = roundup(addr, PAGE_SIZE);
-
- /* Copy our environment. */
- envp = addr;
- addr = bi_copyenv(addr);
-
- /* Pad to a page boundary. */
- addr = roundup(addr, PAGE_SIZE);
-
-#if defined(LOADER_FDT_SUPPORT)
- /* Handle device tree blob */
- dtbp = addr;
- dtb_size = fdt_copy(addr);
-
- /* Pad to a page boundary */
- if (dtb_size)
- addr += roundup(dtb_size, PAGE_SIZE);
-#endif
-
- kfp = file_findfile(NULL, "elf kernel");
- if (kfp == NULL)
- kfp = file_findfile(NULL, "elf64 kernel");
- if (kfp == NULL)
- panic("can't find kernel file");
- kernend = 0; /* fill it in later */
- file_addmetadata(kfp, MODINFOMD_HOWTO, sizeof howto, &howto);
- file_addmetadata(kfp, MODINFOMD_ENVP, sizeof envp, &envp);
-#if defined(LOADER_FDT_SUPPORT)
- if (dtb_size)
- file_addmetadata(kfp, MODINFOMD_DTBP, sizeof dtbp, &dtbp);
- else
- printf("WARNING! Trying to fire up the kernel, but no "
- "device tree blob found!\n");
-#endif
- file_addmetadata(kfp, MODINFOMD_KERNEND, sizeof kernend, &kernend);
- file_addmetadata(kfp, MODINFOMD_FW_HANDLE, sizeof ST, &ST);
-
- bi_load_efi_data(kfp);
-
- /* Figure out the size and location of the metadata. */
- *modulep = addr;
- size = bi_copymodules(0);
- kernend = roundup(addr + size, PAGE_SIZE);
- *kernendp = kernend;
-
- /* patch MODINFOMD_KERNEND */
- md = file_findmetadata(kfp, MODINFOMD_KERNEND);
- bcopy(&kernend, md->md_data, sizeof kernend);
-
-#if defined(__arm__)
- *modulep -= __elfN(relocation_offset);
-
- /* Do relocation fixup on metadata of each module. */
- for (xp = file_findfile(NULL, NULL); xp != NULL; xp = xp->f_next) {
- for (i = 0; i < nitems(mdt); i++) {
- md = file_findmetadata(xp, mdt[i]);
- if (md) {
- bcopy(md->md_data, &vaddr, sizeof vaddr);
- vaddr -= __elfN(relocation_offset);
- bcopy(&vaddr, md->md_data, sizeof vaddr);
- }
- }
- }
-#endif
-
- /* Copy module list and metadata. */
- (void)bi_copymodules(addr);
-
- return (0);
-}
diff --git a/sys/boot/efi/loader/conf.c b/sys/boot/efi/loader/conf.c
deleted file mode 100644
index cea95b3db104..000000000000
--- a/sys/boot/efi/loader/conf.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/*-
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <bootstrap.h>
-#include <efi.h>
-#include <efilib.h>
-#ifdef EFI_ZFS_BOOT
-#include <libzfs.h>
-#endif
-
-struct devsw *devsw[] = {
- &efipart_fddev,
- &efipart_cddev,
- &efipart_hddev,
- &efinet_dev,
-#ifdef EFI_ZFS_BOOT
- &zfs_dev,
-#endif
- NULL
-};
-
-struct fs_ops *file_system[] = {
-#ifdef EFI_ZFS_BOOT
- &zfs_fsops,
-#endif
- &dosfs_fsops,
- &ufs_fsops,
- &cd9660_fsops,
- &tftp_fsops,
- &nfs_fsops,
- &gzipfs_fsops,
- &bzipfs_fsops,
- NULL
-};
-
-struct netif_driver *netif_drivers[] = {
- &efinetif,
- NULL
-};
-
-extern struct console efi_console;
-#if defined(__amd64__) || defined(__i386__)
-extern struct console comconsole;
-extern struct console nullconsole;
-extern struct console spinconsole;
-#endif
-
-struct console *consoles[] = {
- &efi_console,
-#if defined(__amd64__) || defined(__i386__)
- &comconsole,
- &nullconsole,
- &spinconsole,
-#endif
- NULL
-};
diff --git a/sys/boot/efi/loader/copy.c b/sys/boot/efi/loader/copy.c
deleted file mode 100644
index efa42b99d66e..000000000000
--- a/sys/boot/efi/loader/copy.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/*-
- * Copyright (c) 2013 The FreeBSD Foundation
- * All rights reserved.
- *
- * This software was developed by Benno Rice under sponsorship from
- * the FreeBSD Foundation.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-
-#include <stand.h>
-#include <bootstrap.h>
-
-#include <efi.h>
-#include <efilib.h>
-
-#include "loader_efi.h"
-
-#if defined(__i386__) || defined(__amd64__)
-#include <machine/cpufunc.h>
-#include <machine/specialreg.h>
-
-/*
- * The code is excerpted from sys/x86/x86/identcpu.c: identify_cpu(),
- * identify_hypervisor(), and dev/hyperv/vmbus/hyperv.c: hyperv_identify().
- */
-#define CPUID_LEAF_HV_MAXLEAF 0x40000000
-#define CPUID_LEAF_HV_INTERFACE 0x40000001
-#define CPUID_LEAF_HV_FEATURES 0x40000003
-#define CPUID_LEAF_HV_LIMITS 0x40000005
-#define CPUID_HV_IFACE_HYPERV 0x31237648 /* HV#1 */
-#define CPUID_HV_MSR_TIME_REFCNT 0x0002 /* MSR_HV_TIME_REF_COUNT */
-#define CPUID_HV_MSR_HYPERCALL 0x0020
-
-static int
-running_on_hyperv(void)
-{
- char hv_vendor[16];
- uint32_t regs[4];
-
- do_cpuid(1, regs);
- if ((regs[2] & CPUID2_HV) == 0)
- return (0);
-
- do_cpuid(CPUID_LEAF_HV_MAXLEAF, regs);
- if (regs[0] < CPUID_LEAF_HV_LIMITS)
- return (0);
-
- ((uint32_t *)&hv_vendor)[0] = regs[1];
- ((uint32_t *)&hv_vendor)[1] = regs[2];
- ((uint32_t *)&hv_vendor)[2] = regs[3];
- hv_vendor[12] = '\0';
- if (strcmp(hv_vendor, "Microsoft Hv") != 0)
- return (0);
-
- do_cpuid(CPUID_LEAF_HV_INTERFACE, regs);
- if (regs[0] != CPUID_HV_IFACE_HYPERV)
- return (0);
-
- do_cpuid(CPUID_LEAF_HV_FEATURES, regs);
- if ((regs[0] & CPUID_HV_MSR_HYPERCALL) == 0)
- return (0);
- if ((regs[0] & CPUID_HV_MSR_TIME_REFCNT) == 0)
- return (0);
-
- return (1);
-}
-
-#define KERNEL_PHYSICAL_BASE (2*1024*1024)
-
-static void
-efi_verify_staging_size(unsigned long *nr_pages)
-{
- UINTN sz;
- EFI_MEMORY_DESCRIPTOR *map, *p;
- EFI_PHYSICAL_ADDRESS start, end;
- UINTN key, dsz;
- UINT32 dver;
- EFI_STATUS status;
- int i, ndesc;
- unsigned long available_pages = 0;
-
- sz = 0;
- status = BS->GetMemoryMap(&sz, 0, &key, &dsz, &dver);
- if (status != EFI_BUFFER_TOO_SMALL) {
- printf("Can't determine memory map size\n");
- return;
- }
-
- map = malloc(sz);
- status = BS->GetMemoryMap(&sz, map, &key, &dsz, &dver);
- if (EFI_ERROR(status)) {
- printf("Can't read memory map\n");
- goto out;
- }
-
- ndesc = sz / dsz;
- for (i = 0, p = map; i < ndesc;
- i++, p = NextMemoryDescriptor(p, dsz)) {
- start = p->PhysicalStart;
- end = start + p->NumberOfPages * EFI_PAGE_SIZE;
-
- if (KERNEL_PHYSICAL_BASE < start ||
- KERNEL_PHYSICAL_BASE >= end)
- continue;
-
- available_pages = p->NumberOfPages -
- ((KERNEL_PHYSICAL_BASE - start) >> EFI_PAGE_SHIFT);
- break;
- }
-
- if (available_pages == 0) {
- printf("Can't find valid memory map for staging area!\n");
- goto out;
- }
-
- i++;
- p = NextMemoryDescriptor(p, dsz);
-
- for ( ; i < ndesc;
- i++, p = NextMemoryDescriptor(p, dsz)) {
- if (p->Type != EfiConventionalMemory &&
- p->Type != EfiLoaderData)
- break;
-
- if (p->PhysicalStart != end)
- break;
-
- end = p->PhysicalStart + p->NumberOfPages * EFI_PAGE_SIZE;
-
- available_pages += p->NumberOfPages;
- }
-
- if (*nr_pages > available_pages) {
- printf("Staging area's size is reduced: %ld -> %ld!\n",
- *nr_pages, available_pages);
- *nr_pages = available_pages;
- }
-out:
- free(map);
-}
-#endif /* __i386__ || __amd64__ */
-
-#ifndef EFI_STAGING_SIZE
-#define EFI_STAGING_SIZE 64
-#endif
-
-EFI_PHYSICAL_ADDRESS staging, staging_end;
-int stage_offset_set = 0;
-ssize_t stage_offset;
-
-int
-efi_copy_init(void)
-{
- EFI_STATUS status;
-
- unsigned long nr_pages;
-
- nr_pages = EFI_SIZE_TO_PAGES((EFI_STAGING_SIZE) * 1024 * 1024);
-
-#if defined(__i386__) || defined(__amd64__)
- /*
- * We'll decrease nr_pages, if it's too big. Currently we only
- * apply this to FreeBSD VM running on Hyper-V. Why? Please see
- * https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=211746#c28
- */
- if (running_on_hyperv())
- efi_verify_staging_size(&nr_pages);
-
- /*
- * The staging area must reside in the the first 1GB physical
- * memory: see elf64_exec() in
- * boot/efi/loader/arch/amd64/elf64_freebsd.c.
- */
- staging = 1024*1024*1024;
- status = BS->AllocatePages(AllocateMaxAddress, EfiLoaderData,
- nr_pages, &staging);
-#else
- status = BS->AllocatePages(AllocateAnyPages, EfiLoaderData,
- nr_pages, &staging);
-#endif
- if (EFI_ERROR(status)) {
- printf("failed to allocate staging area: %lu\n",
- EFI_ERROR_CODE(status));
- return (status);
- }
- staging_end = staging + nr_pages * EFI_PAGE_SIZE;
-
-#if defined(__aarch64__) || defined(__arm__)
- /*
- * Round the kernel load address to a 2MiB value. This is needed
- * because the kernel builds a page table based on where it has
- * been loaded in physical address space. As the kernel will use
- * either a 1MiB or 2MiB page for this we need to make sure it
- * is correctly aligned for both cases.
- */
- staging = roundup2(staging, 2 * 1024 * 1024);
-#endif
-
- return (0);
-}
-
-void *
-efi_translate(vm_offset_t ptr)
-{
-
- return ((void *)(ptr + stage_offset));
-}
-
-ssize_t
-efi_copyin(const void *src, vm_offset_t dest, const size_t len)
-{
-
- if (!stage_offset_set) {
- stage_offset = (vm_offset_t)staging - dest;
- stage_offset_set = 1;
- }
-
- /* XXX: Callers do not check for failure. */
- if (dest + stage_offset + len > staging_end) {
- errno = ENOMEM;
- return (-1);
- }
- bcopy(src, (void *)(dest + stage_offset), len);
- return (len);
-}
-
-ssize_t
-efi_copyout(const vm_offset_t src, void *dest, const size_t len)
-{
-
- /* XXX: Callers do not check for failure. */
- if (src + stage_offset + len > staging_end) {
- errno = ENOMEM;
- return (-1);
- }
- bcopy((void *)(src + stage_offset), dest, len);
- return (len);
-}
-
-
-ssize_t
-efi_readin(const int fd, vm_offset_t dest, const size_t len)
-{
-
- if (dest + stage_offset + len > staging_end) {
- errno = ENOMEM;
- return (-1);
- }
- return (read(fd, (void *)(dest + stage_offset), len));
-}
-
-void
-efi_copy_finish(void)
-{
- uint64_t *src, *dst, *last;
-
- src = (uint64_t *)staging;
- dst = (uint64_t *)(staging - stage_offset);
- last = (uint64_t *)staging_end;
-
- while (src < last)
- *dst++ = *src++;
-}
diff --git a/sys/boot/efi/loader/efi_main.c b/sys/boot/efi/loader/efi_main.c
deleted file mode 100644
index e424d89666ec..000000000000
--- a/sys/boot/efi/loader/efi_main.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/*-
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <efi.h>
-#include <eficonsctl.h>
-#include <efilib.h>
-#include <stand.h>
-
-static EFI_PHYSICAL_ADDRESS heap;
-static UINTN heapsize;
-
-void
-efi_exit(EFI_STATUS exit_code)
-{
-
- BS->FreePages(heap, EFI_SIZE_TO_PAGES(heapsize));
- BS->Exit(IH, exit_code, 0, NULL);
-}
-
-void
-exit(int status)
-{
-
- efi_exit(EFI_LOAD_ERROR);
-}
-
-static CHAR16 *
-arg_skipsep(CHAR16 *argp)
-{
-
- while (*argp == ' ' || *argp == '\t' || *argp == '\n')
- argp++;
- return (argp);
-}
-
-static CHAR16 *
-arg_skipword(CHAR16 *argp)
-{
-
- while (*argp && *argp != ' ' && *argp != '\t' && *argp != '\n')
- argp++;
- return (argp);
-}
-
-EFI_STATUS
-efi_main(EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *system_table)
-{
- static EFI_GUID image_protocol = LOADED_IMAGE_PROTOCOL;
- static EFI_GUID console_control_protocol =
- EFI_CONSOLE_CONTROL_PROTOCOL_GUID;
- EFI_CONSOLE_CONTROL_PROTOCOL *console_control = NULL;
- EFI_LOADED_IMAGE *img;
- CHAR16 *argp, *args, **argv;
- EFI_STATUS status;
- int argc, addprog;
-
- IH = image_handle;
- ST = system_table;
- BS = ST->BootServices;
- RS = ST->RuntimeServices;
-
- status = BS->LocateProtocol(&console_control_protocol, NULL,
- (VOID **)&console_control);
- if (status == EFI_SUCCESS)
- (void)console_control->SetMode(console_control,
- EfiConsoleControlScreenText);
-
- heapsize = 64 * 1024 * 1024;
- status = BS->AllocatePages(AllocateAnyPages, EfiLoaderData,
- EFI_SIZE_TO_PAGES(heapsize), &heap);
- if (status != EFI_SUCCESS)
- BS->Exit(IH, status, 0, NULL);
-
- setheap((void *)(uintptr_t)heap, (void *)(uintptr_t)(heap + heapsize));
-
- /* Use efi_exit() from here on... */
-
- status = BS->HandleProtocol(IH, &image_protocol, (VOID**)&img);
- if (status != EFI_SUCCESS)
- efi_exit(status);
-
- /*
- * Pre-process the (optional) load options. If the option string
- * is given as an ASCII string, we use a poor man's ASCII to
- * Unicode-16 translation. The size of the option string as given
- * to us includes the terminating null character. We assume the
- * string is an ASCII string if strlen() plus the terminating
- * '\0' is less than LoadOptionsSize. Even if all Unicode-16
- * characters have the upper 8 bits non-zero, the terminating
- * null character will cause a one-off.
- * If the string is already in Unicode-16, we make a copy so that
- * we know we can always modify the string.
- */
- if (img->LoadOptionsSize > 0 && img->LoadOptions != NULL) {
- if (img->LoadOptionsSize == strlen(img->LoadOptions) + 1) {
- args = malloc(img->LoadOptionsSize << 1);
- for (argc = 0; argc < (int)img->LoadOptionsSize; argc++)
- args[argc] = ((char*)img->LoadOptions)[argc];
- } else {
- args = malloc(img->LoadOptionsSize);
- memcpy(args, img->LoadOptions, img->LoadOptionsSize);
- }
- } else
- args = NULL;
-
- /*
- * Use a quick and dirty algorithm to build the argv vector. We
- * first count the number of words. Then, after allocating the
- * vector, we split the string up. We don't deal with quotes or
- * other more advanced shell features.
- * The EFI shell will pass the name of the image as the first
- * word in the argument list. This does not happen if we're
- * loaded by the boot manager. This is not so easy to figure
- * out though. The ParentHandle is not always NULL, because
- * there can be a function (=image) that will perform the task
- * for the boot manager.
- */
- /* Part 1: Figure out if we need to add our program name. */
- addprog = (args == NULL || img->ParentHandle == NULL ||
- img->FilePath == NULL) ? 1 : 0;
- if (!addprog) {
- addprog =
- (DevicePathType(img->FilePath) != MEDIA_DEVICE_PATH ||
- DevicePathSubType(img->FilePath) != MEDIA_FILEPATH_DP ||
- DevicePathNodeLength(img->FilePath) <=
- sizeof(FILEPATH_DEVICE_PATH)) ? 1 : 0;
- if (!addprog) {
- /* XXX todo. */
- }
- }
- /* Part 2: count words. */
- argc = (addprog) ? 1 : 0;
- argp = args;
- while (argp != NULL && *argp != 0) {
- argp = arg_skipsep(argp);
- if (*argp == 0)
- break;
- argc++;
- argp = arg_skipword(argp);
- }
- /* Part 3: build vector. */
- argv = malloc((argc + 1) * sizeof(CHAR16*));
- argc = 0;
- if (addprog)
- argv[argc++] = (CHAR16 *)L"loader.efi";
- argp = args;
- while (argp != NULL && *argp != 0) {
- argp = arg_skipsep(argp);
- if (*argp == 0)
- break;
- argv[argc++] = argp;
- argp = arg_skipword(argp);
- /* Terminate the words. */
- if (*argp != 0)
- *argp++ = 0;
- }
- argv[argc] = NULL;
-
- status = main(argc, argv);
- efi_exit(status);
- return (status);
-}
diff --git a/sys/boot/efi/loader/framebuffer.c b/sys/boot/efi/loader/framebuffer.c
deleted file mode 100644
index 37999ea1d372..000000000000
--- a/sys/boot/efi/loader/framebuffer.c
+++ /dev/null
@@ -1,568 +0,0 @@
-/*-
- * Copyright (c) 2013 The FreeBSD Foundation
- * All rights reserved.
- *
- * This software was developed by Benno Rice under sponsorship from
- * the FreeBSD Foundation.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <bootstrap.h>
-#include <sys/endian.h>
-#include <stand.h>
-
-#include <efi.h>
-#include <efilib.h>
-#include <efiuga.h>
-#include <efipciio.h>
-#include <machine/metadata.h>
-
-#include "framebuffer.h"
-
-static EFI_GUID gop_guid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
-static EFI_GUID pciio_guid = EFI_PCI_IO_PROTOCOL_GUID;
-static EFI_GUID uga_guid = EFI_UGA_DRAW_PROTOCOL_GUID;
-
-static u_int
-efifb_color_depth(struct efi_fb *efifb)
-{
- uint32_t mask;
- u_int depth;
-
- mask = efifb->fb_mask_red | efifb->fb_mask_green |
- efifb->fb_mask_blue | efifb->fb_mask_reserved;
- if (mask == 0)
- return (0);
- for (depth = 1; mask != 1; depth++)
- mask >>= 1;
- return (depth);
-}
-
-static int
-efifb_mask_from_pixfmt(struct efi_fb *efifb, EFI_GRAPHICS_PIXEL_FORMAT pixfmt,
- EFI_PIXEL_BITMASK *pixinfo)
-{
- int result;
-
- result = 0;
- switch (pixfmt) {
- case PixelRedGreenBlueReserved8BitPerColor:
- efifb->fb_mask_red = 0x000000ff;
- efifb->fb_mask_green = 0x0000ff00;
- efifb->fb_mask_blue = 0x00ff0000;
- efifb->fb_mask_reserved = 0xff000000;
- break;
- case PixelBlueGreenRedReserved8BitPerColor:
- efifb->fb_mask_red = 0x00ff0000;
- efifb->fb_mask_green = 0x0000ff00;
- efifb->fb_mask_blue = 0x000000ff;
- efifb->fb_mask_reserved = 0xff000000;
- break;
- case PixelBitMask:
- efifb->fb_mask_red = pixinfo->RedMask;
- efifb->fb_mask_green = pixinfo->GreenMask;
- efifb->fb_mask_blue = pixinfo->BlueMask;
- efifb->fb_mask_reserved = pixinfo->ReservedMask;
- break;
- default:
- result = 1;
- break;
- }
- return (result);
-}
-
-static int
-efifb_from_gop(struct efi_fb *efifb, EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *mode,
- EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *info)
-{
- int result;
-
- efifb->fb_addr = mode->FrameBufferBase;
- efifb->fb_size = mode->FrameBufferSize;
- efifb->fb_height = info->VerticalResolution;
- efifb->fb_width = info->HorizontalResolution;
- efifb->fb_stride = info->PixelsPerScanLine;
- result = efifb_mask_from_pixfmt(efifb, info->PixelFormat,
- &info->PixelInformation);
- return (result);
-}
-
-static ssize_t
-efifb_uga_find_pixel(EFI_UGA_DRAW_PROTOCOL *uga, u_int line,
- EFI_PCI_IO_PROTOCOL *pciio, uint64_t addr, uint64_t size)
-{
- EFI_UGA_PIXEL pix0, pix1;
- uint8_t *data1, *data2;
- size_t count, maxcount = 1024;
- ssize_t ofs;
- EFI_STATUS status;
- u_int idx;
-
- status = uga->Blt(uga, &pix0, EfiUgaVideoToBltBuffer,
- 0, line, 0, 0, 1, 1, 0);
- if (EFI_ERROR(status)) {
- printf("UGA BLT operation failed (video->buffer)");
- return (-1);
- }
- pix1.Red = ~pix0.Red;
- pix1.Green = ~pix0.Green;
- pix1.Blue = ~pix0.Blue;
- pix1.Reserved = 0;
-
- data1 = calloc(maxcount, 2);
- if (data1 == NULL) {
- printf("Unable to allocate memory");
- return (-1);
- }
- data2 = data1 + maxcount;
-
- ofs = 0;
- while (size > 0) {
- count = min(size, maxcount);
-
- status = pciio->Mem.Read(pciio, EfiPciIoWidthUint32,
- EFI_PCI_IO_PASS_THROUGH_BAR, addr + ofs, count >> 2,
- data1);
- if (EFI_ERROR(status)) {
- printf("Error reading frame buffer (before)");
- goto fail;
- }
- status = uga->Blt(uga, &pix1, EfiUgaBltBufferToVideo,
- 0, 0, 0, line, 1, 1, 0);
- if (EFI_ERROR(status)) {
- printf("UGA BLT operation failed (modify)");
- goto fail;
- }
- status = pciio->Mem.Read(pciio, EfiPciIoWidthUint32,
- EFI_PCI_IO_PASS_THROUGH_BAR, addr + ofs, count >> 2,
- data2);
- if (EFI_ERROR(status)) {
- printf("Error reading frame buffer (after)");
- goto fail;
- }
- status = uga->Blt(uga, &pix0, EfiUgaBltBufferToVideo,
- 0, 0, 0, line, 1, 1, 0);
- if (EFI_ERROR(status)) {
- printf("UGA BLT operation failed (restore)");
- goto fail;
- }
- for (idx = 0; idx < count; idx++) {
- if (data1[idx] != data2[idx]) {
- free(data1);
- return (ofs + (idx & ~3));
- }
- }
- ofs += count;
- size -= count;
- }
- printf("No change detected in frame buffer");
-
- fail:
- printf(" -- error %lu\n", EFI_ERROR_CODE(status));
- free(data1);
- return (-1);
-}
-
-static EFI_PCI_IO_PROTOCOL *
-efifb_uga_get_pciio(void)
-{
- EFI_PCI_IO_PROTOCOL *pciio;
- EFI_HANDLE *buf, *hp;
- EFI_STATUS status;
- UINTN bufsz;
-
- /* Get all handles that support the UGA protocol. */
- bufsz = 0;
- status = BS->LocateHandle(ByProtocol, &uga_guid, NULL, &bufsz, NULL);
- if (status != EFI_BUFFER_TOO_SMALL)
- return (NULL);
- buf = malloc(bufsz);
- status = BS->LocateHandle(ByProtocol, &uga_guid, NULL, &bufsz, buf);
- if (status != EFI_SUCCESS) {
- free(buf);
- return (NULL);
- }
- bufsz /= sizeof(EFI_HANDLE);
-
- /* Get the PCI I/O interface of the first handle that supports it. */
- pciio = NULL;
- for (hp = buf; hp < buf + bufsz; hp++) {
- status = BS->HandleProtocol(*hp, &pciio_guid, (void **)&pciio);
- if (status == EFI_SUCCESS) {
- free(buf);
- return (pciio);
- }
- }
- free(buf);
- return (NULL);
-}
-
-static EFI_STATUS
-efifb_uga_locate_framebuffer(EFI_PCI_IO_PROTOCOL *pciio, uint64_t *addrp,
- uint64_t *sizep)
-{
- uint8_t *resattr;
- uint64_t addr, size;
- EFI_STATUS status;
- u_int bar;
-
- if (pciio == NULL)
- return (EFI_DEVICE_ERROR);
-
- /* Attempt to get the frame buffer address (imprecise). */
- *addrp = 0;
- *sizep = 0;
- for (bar = 0; bar < 6; bar++) {
- status = pciio->GetBarAttributes(pciio, bar, NULL,
- (void **)&resattr);
- if (status != EFI_SUCCESS)
- continue;
- /* XXX magic offsets and constants. */
- if (resattr[0] == 0x87 && resattr[3] == 0) {
- /* 32-bit address space descriptor (MEMIO) */
- addr = le32dec(resattr + 10);
- size = le32dec(resattr + 22);
- } else if (resattr[0] == 0x8a && resattr[3] == 0) {
- /* 64-bit address space descriptor (MEMIO) */
- addr = le64dec(resattr + 14);
- size = le64dec(resattr + 38);
- } else {
- addr = 0;
- size = 0;
- }
- BS->FreePool(resattr);
- if (addr == 0 || size == 0)
- continue;
-
- /* We assume the largest BAR is the frame buffer. */
- if (size > *sizep) {
- *addrp = addr;
- *sizep = size;
- }
- }
- return ((*addrp == 0 || *sizep == 0) ? EFI_DEVICE_ERROR : 0);
-}
-
-static int
-efifb_from_uga(struct efi_fb *efifb, EFI_UGA_DRAW_PROTOCOL *uga)
-{
- EFI_PCI_IO_PROTOCOL *pciio;
- char *ev, *p;
- EFI_STATUS status;
- ssize_t offset;
- uint64_t fbaddr;
- uint32_t horiz, vert, stride;
- uint32_t np, depth, refresh;
-
- status = uga->GetMode(uga, &horiz, &vert, &depth, &refresh);
- if (EFI_ERROR(status))
- return (1);
- efifb->fb_height = vert;
- efifb->fb_width = horiz;
- /* Paranoia... */
- if (efifb->fb_height == 0 || efifb->fb_width == 0)
- return (1);
-
- /* The color masks are fixed AFAICT. */
- efifb_mask_from_pixfmt(efifb, PixelBlueGreenRedReserved8BitPerColor,
- NULL);
-
- /* pciio can be NULL on return! */
- pciio = efifb_uga_get_pciio();
-
- /* Try to find the frame buffer. */
- status = efifb_uga_locate_framebuffer(pciio, &efifb->fb_addr,
- &efifb->fb_size);
- if (EFI_ERROR(status)) {
- efifb->fb_addr = 0;
- efifb->fb_size = 0;
- }
-
- /*
- * There's no reliable way to detect the frame buffer or the
- * offset within the frame buffer of the visible region, nor
- * the stride. Our only option is to look at the system and
- * fill in the blanks based on that. Luckily, UGA was mostly
- * only used on Apple hardware.
- */
- offset = -1;
- ev = getenv("smbios.system.maker");
- if (ev != NULL && !strcmp(ev, "Apple Inc.")) {
- ev = getenv("smbios.system.product");
- if (ev != NULL && !strcmp(ev, "iMac7,1")) {
- /* These are the expected values we should have. */
- horiz = 1680;
- vert = 1050;
- fbaddr = 0xc0000000;
- /* These are the missing bits. */
- offset = 0x10000;
- stride = 1728;
- } else if (ev != NULL && !strcmp(ev, "MacBook3,1")) {
- /* These are the expected values we should have. */
- horiz = 1280;
- vert = 800;
- fbaddr = 0xc0000000;
- /* These are the missing bits. */
- offset = 0x0;
- stride = 2048;
- }
- }
-
- /*
- * If this is hardware we know, make sure that it looks familiar
- * before we accept our hardcoded values.
- */
- if (offset >= 0 && efifb->fb_width == horiz &&
- efifb->fb_height == vert && efifb->fb_addr == fbaddr) {
- efifb->fb_addr += offset;
- efifb->fb_size -= offset;
- efifb->fb_stride = stride;
- return (0);
- } else if (offset >= 0) {
- printf("Hardware make/model known, but graphics not "
- "as expected.\n");
- printf("Console may not work!\n");
- }
-
- /*
- * The stride is equal or larger to the width. Often it's the
- * next larger power of two. We'll start with that...
- */
- efifb->fb_stride = efifb->fb_width;
- do {
- np = efifb->fb_stride & (efifb->fb_stride - 1);
- if (np) {
- efifb->fb_stride |= (np - 1);
- efifb->fb_stride++;
- }
- } while (np);
-
- ev = getenv("hw.efifb.address");
- if (ev == NULL) {
- if (efifb->fb_addr == 0) {
- printf("Please set hw.efifb.address and "
- "hw.efifb.stride.\n");
- return (1);
- }
-
- /*
- * The visible part of the frame buffer may not start at
- * offset 0, so try to detect it. Note that we may not
- * always be able to read from the frame buffer, which
- * means that we may not be able to detect anything. In
- * that case, we would take a long time scanning for a
- * pixel change in the frame buffer, which would have it
- * appear that we're hanging, so we limit the scan to
- * 1/256th of the frame buffer. This number is mostly
- * based on PR 202730 and the fact that on a MacBoook,
- * where we can't read from the frame buffer the offset
- * of the visible region is 0. In short: we want to scan
- * enough to handle all adapters that have an offset
- * larger than 0 and we want to scan as little as we can
- * to not appear to hang when we can't read from the
- * frame buffer.
- */
- offset = efifb_uga_find_pixel(uga, 0, pciio, efifb->fb_addr,
- efifb->fb_size >> 8);
- if (offset == -1) {
- printf("Unable to reliably detect frame buffer.\n");
- } else if (offset > 0) {
- efifb->fb_addr += offset;
- efifb->fb_size -= offset;
- }
- } else {
- offset = 0;
- efifb->fb_size = efifb->fb_height * efifb->fb_stride * 4;
- efifb->fb_addr = strtoul(ev, &p, 0);
- if (*p != '\0')
- return (1);
- }
-
- ev = getenv("hw.efifb.stride");
- if (ev == NULL) {
- if (pciio != NULL && offset != -1) {
- /* Determine the stride. */
- offset = efifb_uga_find_pixel(uga, 1, pciio,
- efifb->fb_addr, horiz * 8);
- if (offset != -1)
- efifb->fb_stride = offset >> 2;
- } else {
- printf("Unable to reliably detect the stride.\n");
- }
- } else {
- efifb->fb_stride = strtoul(ev, &p, 0);
- if (*p != '\0')
- return (1);
- }
-
- /*
- * We finalized on the stride, so recalculate the size of the
- * frame buffer.
- */
- efifb->fb_size = efifb->fb_height * efifb->fb_stride * 4;
- return (0);
-}
-
-int
-efi_find_framebuffer(struct efi_fb *efifb)
-{
- EFI_GRAPHICS_OUTPUT *gop;
- EFI_UGA_DRAW_PROTOCOL *uga;
- EFI_STATUS status;
-
- status = BS->LocateProtocol(&gop_guid, NULL, (VOID **)&gop);
- if (status == EFI_SUCCESS)
- return (efifb_from_gop(efifb, gop->Mode, gop->Mode->Info));
-
- status = BS->LocateProtocol(&uga_guid, NULL, (VOID **)&uga);
- if (status == EFI_SUCCESS)
- return (efifb_from_uga(efifb, uga));
-
- return (1);
-}
-
-static void
-print_efifb(int mode, struct efi_fb *efifb, int verbose)
-{
- u_int depth;
-
- if (mode >= 0)
- printf("mode %d: ", mode);
- depth = efifb_color_depth(efifb);
- printf("%ux%ux%u, stride=%u", efifb->fb_width, efifb->fb_height,
- depth, efifb->fb_stride);
- if (verbose) {
- printf("\n frame buffer: address=%jx, size=%jx",
- (uintmax_t)efifb->fb_addr, (uintmax_t)efifb->fb_size);
- printf("\n color mask: R=%08x, G=%08x, B=%08x\n",
- efifb->fb_mask_red, efifb->fb_mask_green,
- efifb->fb_mask_blue);
- }
-}
-
-COMMAND_SET(gop, "gop", "graphics output protocol", command_gop);
-
-static int
-command_gop(int argc, char *argv[])
-{
- struct efi_fb efifb;
- EFI_GRAPHICS_OUTPUT *gop;
- EFI_STATUS status;
- u_int mode;
-
- status = BS->LocateProtocol(&gop_guid, NULL, (VOID **)&gop);
- if (EFI_ERROR(status)) {
- snprintf(command_errbuf, sizeof(command_errbuf),
- "%s: Graphics Output Protocol not present (error=%lu)",
- argv[0], EFI_ERROR_CODE(status));
- return (CMD_ERROR);
- }
-
- if (argc < 2)
- goto usage;
-
- if (!strcmp(argv[1], "set")) {
- char *cp;
-
- if (argc != 3)
- goto usage;
- mode = strtol(argv[2], &cp, 0);
- if (cp[0] != '\0') {
- sprintf(command_errbuf, "mode is an integer");
- return (CMD_ERROR);
- }
- status = gop->SetMode(gop, mode);
- if (EFI_ERROR(status)) {
- snprintf(command_errbuf, sizeof(command_errbuf),
- "%s: Unable to set mode to %u (error=%lu)",
- argv[0], mode, EFI_ERROR_CODE(status));
- return (CMD_ERROR);
- }
- } else if (!strcmp(argv[1], "get")) {
- if (argc != 2)
- goto usage;
- efifb_from_gop(&efifb, gop->Mode, gop->Mode->Info);
- print_efifb(gop->Mode->Mode, &efifb, 1);
- printf("\n");
- } else if (!strcmp(argv[1], "list")) {
- EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *info;
- UINTN infosz;
-
- if (argc != 2)
- goto usage;
- pager_open();
- for (mode = 0; mode < gop->Mode->MaxMode; mode++) {
- status = gop->QueryMode(gop, mode, &infosz, &info);
- if (EFI_ERROR(status))
- continue;
- efifb_from_gop(&efifb, gop->Mode, info);
- print_efifb(mode, &efifb, 0);
- if (pager_output("\n"))
- break;
- }
- pager_close();
- }
- return (CMD_OK);
-
- usage:
- snprintf(command_errbuf, sizeof(command_errbuf),
- "usage: %s [list | get | set <mode>]", argv[0]);
- return (CMD_ERROR);
-}
-
-COMMAND_SET(uga, "uga", "universal graphics adapter", command_uga);
-
-static int
-command_uga(int argc, char *argv[])
-{
- struct efi_fb efifb;
- EFI_UGA_DRAW_PROTOCOL *uga;
- EFI_STATUS status;
-
- status = BS->LocateProtocol(&uga_guid, NULL, (VOID **)&uga);
- if (EFI_ERROR(status)) {
- snprintf(command_errbuf, sizeof(command_errbuf),
- "%s: UGA Protocol not present (error=%lu)",
- argv[0], EFI_ERROR_CODE(status));
- return (CMD_ERROR);
- }
-
- if (argc != 1)
- goto usage;
-
- if (efifb_from_uga(&efifb, uga) != CMD_OK) {
- snprintf(command_errbuf, sizeof(command_errbuf),
- "%s: Unable to get UGA information", argv[0]);
- return (CMD_ERROR);
- }
-
- print_efifb(-1, &efifb, 1);
- printf("\n");
- return (CMD_OK);
-
- usage:
- snprintf(command_errbuf, sizeof(command_errbuf), "usage: %s", argv[0]);
- return (CMD_ERROR);
-}
diff --git a/sys/boot/efi/loader/framebuffer.h b/sys/boot/efi/loader/framebuffer.h
deleted file mode 100644
index 2ec9017dc3ee..000000000000
--- a/sys/boot/efi/loader/framebuffer.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*-
- * Copyright (c) 2013 The FreeBSD Foundation
- * All rights reserved.
- *
- * This software was developed by Benno Rice under sponsorship from
- * the FreeBSD Foundation.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef _EFIFB_H_
-#define _EFIFB_H_
-
-int efi_find_framebuffer(struct efi_fb *efifb);
-
-#endif /* _EFIFB_H_ */
diff --git a/sys/boot/efi/loader/loader_efi.h b/sys/boot/efi/loader/loader_efi.h
deleted file mode 100644
index 780fbfe4c6aa..000000000000
--- a/sys/boot/efi/loader/loader_efi.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * Copyright (c) 2013 The FreeBSD Foundation
- * All rights reserved.
- *
- * This software was developed by Benno Rice under sponsorship from
- * the FreeBSD Foundation.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef _LOADER_EFI_COPY_H_
-#define _LOADER_EFI_COPY_H_
-
-#include <stand.h>
-
-int efi_autoload(void);
-
-int efi_copy_init(void);
-
-ssize_t efi_copyin(const void *src, vm_offset_t dest, const size_t len);
-ssize_t efi_copyout(const vm_offset_t src, void *dest, const size_t len);
-ssize_t efi_readin(const int fd, vm_offset_t dest, const size_t len);
-void * efi_translate(vm_offset_t ptr);
-
-void efi_copy_finish(void);
-
-#endif /* _LOADER_EFI_COPY_H_ */
diff --git a/sys/boot/efi/loader/main.c b/sys/boot/efi/loader/main.c
deleted file mode 100644
index 129fd72068ba..000000000000
--- a/sys/boot/efi/loader/main.c
+++ /dev/null
@@ -1,936 +0,0 @@
-/*-
- * Copyright (c) 2008-2010 Rui Paulo
- * Copyright (c) 2006 Marcel Moolenaar
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/disk.h>
-#include <sys/param.h>
-#include <sys/reboot.h>
-#include <sys/boot.h>
-#include <inttypes.h>
-#include <stand.h>
-#include <string.h>
-#include <setjmp.h>
-#include <disk.h>
-
-#include <efi.h>
-#include <efilib.h>
-
-#include <uuid.h>
-
-#include <bootstrap.h>
-#include <smbios.h>
-
-#ifdef EFI_ZFS_BOOT
-#include <libzfs.h>
-
-#include "efizfs.h"
-#endif
-
-#include "loader_efi.h"
-
-extern char bootprog_info[];
-
-struct arch_switch archsw; /* MI/MD interface boundary */
-
-EFI_GUID acpi = ACPI_TABLE_GUID;
-EFI_GUID acpi20 = ACPI_20_TABLE_GUID;
-EFI_GUID devid = DEVICE_PATH_PROTOCOL;
-EFI_GUID imgid = LOADED_IMAGE_PROTOCOL;
-EFI_GUID mps = MPS_TABLE_GUID;
-EFI_GUID netid = EFI_SIMPLE_NETWORK_PROTOCOL;
-EFI_GUID smbios = SMBIOS_TABLE_GUID;
-EFI_GUID dxe = DXE_SERVICES_TABLE_GUID;
-EFI_GUID hoblist = HOB_LIST_TABLE_GUID;
-EFI_GUID memtype = MEMORY_TYPE_INFORMATION_TABLE_GUID;
-EFI_GUID debugimg = DEBUG_IMAGE_INFO_TABLE_GUID;
-EFI_GUID fdtdtb = FDT_TABLE_GUID;
-EFI_GUID inputid = SIMPLE_TEXT_INPUT_PROTOCOL;
-
-static EFI_LOADED_IMAGE *img;
-
-#ifdef EFI_ZFS_BOOT
-bool
-efi_zfs_is_preferred(EFI_HANDLE *h)
-{
- return (h == img->DeviceHandle);
-}
-#endif
-
-static int
-has_keyboard(void)
-{
- EFI_STATUS status;
- EFI_DEVICE_PATH *path;
- EFI_HANDLE *hin, *hin_end, *walker;
- UINTN sz;
- int retval = 0;
-
- /*
- * Find all the handles that support the SIMPLE_TEXT_INPUT_PROTOCOL and
- * do the typical dance to get the right sized buffer.
- */
- sz = 0;
- hin = NULL;
- status = BS->LocateHandle(ByProtocol, &inputid, 0, &sz, 0);
- if (status == EFI_BUFFER_TOO_SMALL) {
- hin = (EFI_HANDLE *)malloc(sz);
- status = BS->LocateHandle(ByProtocol, &inputid, 0, &sz,
- hin);
- if (EFI_ERROR(status))
- free(hin);
- }
- if (EFI_ERROR(status))
- return retval;
-
- /*
- * Look at each of the handles. If it supports the device path protocol,
- * use it to get the device path for this handle. Then see if that
- * device path matches either the USB device path for keyboards or the
- * legacy device path for keyboards.
- */
- hin_end = &hin[sz / sizeof(*hin)];
- for (walker = hin; walker < hin_end; walker++) {
- status = BS->HandleProtocol(*walker, &devid, (VOID **)&path);
- if (EFI_ERROR(status))
- continue;
-
- while (!IsDevicePathEnd(path)) {
- /*
- * Check for the ACPI keyboard node. All PNP3xx nodes
- * are keyboards of different flavors. Note: It is
- * unclear of there's always a keyboard node when
- * there's a keyboard controller, or if there's only one
- * when a keyboard is detected at boot.
- */
- if (DevicePathType(path) == ACPI_DEVICE_PATH &&
- (DevicePathSubType(path) == ACPI_DP ||
- DevicePathSubType(path) == ACPI_EXTENDED_DP)) {
- ACPI_HID_DEVICE_PATH *acpi;
-
- acpi = (ACPI_HID_DEVICE_PATH *)(void *)path;
- if ((EISA_ID_TO_NUM(acpi->HID) & 0xff00) == 0x300 &&
- (acpi->HID & 0xffff) == PNP_EISA_ID_CONST) {
- retval = 1;
- goto out;
- }
- /*
- * Check for USB keyboard node, if present. Unlike a
- * PS/2 keyboard, these definitely only appear when
- * connected to the system.
- */
- } else if (DevicePathType(path) == MESSAGING_DEVICE_PATH &&
- DevicePathSubType(path) == MSG_USB_CLASS_DP) {
- USB_CLASS_DEVICE_PATH *usb;
-
- usb = (USB_CLASS_DEVICE_PATH *)(void *)path;
- if (usb->DeviceClass == 3 && /* HID */
- usb->DeviceSubClass == 1 && /* Boot devices */
- usb->DeviceProtocol == 1) { /* Boot keyboards */
- retval = 1;
- goto out;
- }
- }
- path = NextDevicePathNode(path);
- }
- }
-out:
- free(hin);
- return retval;
-}
-
-static void
-set_devdesc_currdev(struct devsw *dev, int unit)
-{
- struct devdesc currdev;
- char *devname;
-
- currdev.d_dev = dev;
- currdev.d_type = currdev.d_dev->dv_type;
- currdev.d_unit = unit;
- currdev.d_opendata = NULL;
- devname = efi_fmtdev(&currdev);
-
- env_setenv("currdev", EV_VOLATILE, devname, efi_setcurrdev,
- env_nounset);
- env_setenv("loaddev", EV_VOLATILE, devname, env_noset, env_nounset);
-}
-
-static int
-find_currdev(EFI_LOADED_IMAGE *img)
-{
- pdinfo_list_t *pdi_list;
- pdinfo_t *dp, *pp;
- EFI_DEVICE_PATH *devpath, *copy;
- EFI_HANDLE h;
- char *devname;
- struct devsw *dev;
- int unit;
- uint64_t extra;
-
-#ifdef EFI_ZFS_BOOT
- /* Did efi_zfs_probe() detect the boot pool? */
- if (pool_guid != 0) {
- struct zfs_devdesc currdev;
-
- currdev.d_dev = &zfs_dev;
- currdev.d_unit = 0;
- currdev.d_type = currdev.d_dev->dv_type;
- currdev.d_opendata = NULL;
- currdev.pool_guid = pool_guid;
- currdev.root_guid = 0;
- devname = efi_fmtdev(&currdev);
-
- env_setenv("currdev", EV_VOLATILE, devname, efi_setcurrdev,
- env_nounset);
- env_setenv("loaddev", EV_VOLATILE, devname, env_noset,
- env_nounset);
- init_zfs_bootenv(devname);
- return (0);
- }
-#endif /* EFI_ZFS_BOOT */
-
- /* We have device lists for hd, cd, fd, walk them all. */
- pdi_list = efiblk_get_pdinfo_list(&efipart_hddev);
- STAILQ_FOREACH(dp, pdi_list, pd_link) {
- struct disk_devdesc currdev;
-
- currdev.d_dev = &efipart_hddev;
- currdev.d_type = currdev.d_dev->dv_type;
- currdev.d_unit = dp->pd_unit;
- currdev.d_opendata = NULL;
- currdev.d_slice = -1;
- currdev.d_partition = -1;
-
- if (dp->pd_handle == img->DeviceHandle) {
- devname = efi_fmtdev(&currdev);
-
- env_setenv("currdev", EV_VOLATILE, devname,
- efi_setcurrdev, env_nounset);
- env_setenv("loaddev", EV_VOLATILE, devname,
- env_noset, env_nounset);
- return (0);
- }
- /* Assuming GPT partitioning. */
- STAILQ_FOREACH(pp, &dp->pd_part, pd_link) {
- if (pp->pd_handle == img->DeviceHandle) {
- currdev.d_slice = pp->pd_unit;
- currdev.d_partition = 255;
- devname = efi_fmtdev(&currdev);
-
- env_setenv("currdev", EV_VOLATILE, devname,
- efi_setcurrdev, env_nounset);
- env_setenv("loaddev", EV_VOLATILE, devname,
- env_noset, env_nounset);
- return (0);
- }
- }
- }
-
- pdi_list = efiblk_get_pdinfo_list(&efipart_cddev);
- STAILQ_FOREACH(dp, pdi_list, pd_link) {
- if (dp->pd_handle == img->DeviceHandle ||
- dp->pd_alias == img->DeviceHandle) {
- set_devdesc_currdev(&efipart_cddev, dp->pd_unit);
- return (0);
- }
- }
-
- pdi_list = efiblk_get_pdinfo_list(&efipart_fddev);
- STAILQ_FOREACH(dp, pdi_list, pd_link) {
- if (dp->pd_handle == img->DeviceHandle) {
- set_devdesc_currdev(&efipart_fddev, dp->pd_unit);
- return (0);
- }
- }
-
- /*
- * Try the device handle from our loaded image first. If that
- * fails, use the device path from the loaded image and see if
- * any of the nodes in that path match one of the enumerated
- * handles.
- */
- if (efi_handle_lookup(img->DeviceHandle, &dev, &unit, &extra) == 0) {
- set_devdesc_currdev(dev, unit);
- return (0);
- }
-
- copy = NULL;
- devpath = efi_lookup_image_devpath(IH);
- while (devpath != NULL) {
- h = efi_devpath_handle(devpath);
- if (h == NULL)
- break;
-
- free(copy);
- copy = NULL;
-
- if (efi_handle_lookup(h, &dev, &unit, &extra) == 0) {
- set_devdesc_currdev(dev, unit);
- return (0);
- }
-
- devpath = efi_lookup_devpath(h);
- if (devpath != NULL) {
- copy = efi_devpath_trim(devpath);
- devpath = copy;
- }
- }
- free(copy);
-
- return (ENOENT);
-}
-
-EFI_STATUS
-main(int argc, CHAR16 *argv[])
-{
- char var[128];
- EFI_GUID *guid;
- int i, j, vargood, howto;
- UINTN k;
- int has_kbd;
-#if !defined(__arm__)
- char buf[40];
-#endif
-
- archsw.arch_autoload = efi_autoload;
- archsw.arch_getdev = efi_getdev;
- archsw.arch_copyin = efi_copyin;
- archsw.arch_copyout = efi_copyout;
- archsw.arch_readin = efi_readin;
-#ifdef EFI_ZFS_BOOT
- /* Note this needs to be set before ZFS init. */
- archsw.arch_zfs_probe = efi_zfs_probe;
-#endif
-
- /* Get our loaded image protocol interface structure. */
- BS->HandleProtocol(IH, &imgid, (VOID**)&img);
-
- /* Init the time source */
- efi_time_init();
-
- has_kbd = has_keyboard();
-
- /*
- * XXX Chicken-and-egg problem; we want to have console output
- * early, but some console attributes may depend on reading from
- * eg. the boot device, which we can't do yet. We can use
- * printf() etc. once this is done.
- */
- cons_probe();
-
- /*
- * Initialise the block cache. Set the upper limit.
- */
- bcache_init(32768, 512);
-
- /*
- * Parse the args to set the console settings, etc
- * boot1.efi passes these in, if it can read /boot.config or /boot/config
- * or iPXE may be setup to pass these in.
- *
- * Loop through the args, and for each one that contains an '=' that is
- * not the first character, add it to the environment. This allows
- * loader and kernel env vars to be passed on the command line. Convert
- * args from UCS-2 to ASCII (16 to 8 bit) as they are copied.
- */
- howto = 0;
- for (i = 1; i < argc; i++) {
- if (argv[i][0] == '-') {
- for (j = 1; argv[i][j] != 0; j++) {
- int ch;
-
- ch = argv[i][j];
- switch (ch) {
- case 'a':
- howto |= RB_ASKNAME;
- break;
- case 'd':
- howto |= RB_KDB;
- break;
- case 'D':
- howto |= RB_MULTIPLE;
- break;
- case 'h':
- howto |= RB_SERIAL;
- break;
- case 'm':
- howto |= RB_MUTE;
- break;
- case 'p':
- howto |= RB_PAUSE;
- break;
- case 'P':
- if (!has_kbd)
- howto |= RB_SERIAL | RB_MULTIPLE;
- break;
- case 'r':
- howto |= RB_DFLTROOT;
- break;
- case 's':
- howto |= RB_SINGLE;
- break;
- case 'S':
- if (argv[i][j + 1] == 0) {
- if (i + 1 == argc) {
- setenv("comconsole_speed", "115200", 1);
- } else {
- cpy16to8(&argv[i + 1][0], var,
- sizeof(var));
- setenv("comconsole_speed", var, 1);
- }
- i++;
- break;
- } else {
- cpy16to8(&argv[i][j + 1], var,
- sizeof(var));
- setenv("comconsole_speed", var, 1);
- break;
- }
- case 'v':
- howto |= RB_VERBOSE;
- break;
- }
- }
- } else {
- vargood = 0;
- for (j = 0; argv[i][j] != 0; j++) {
- if (j == sizeof(var)) {
- vargood = 0;
- break;
- }
- if (j > 0 && argv[i][j] == '=')
- vargood = 1;
- var[j] = (char)argv[i][j];
- }
- if (vargood) {
- var[j] = 0;
- putenv(var);
- }
- }
- }
- for (i = 0; howto_names[i].ev != NULL; i++)
- if (howto & howto_names[i].mask)
- setenv(howto_names[i].ev, "YES", 1);
- if (howto & RB_MULTIPLE) {
- if (howto & RB_SERIAL)
- setenv("console", "comconsole efi" , 1);
- else
- setenv("console", "efi comconsole" , 1);
- } else if (howto & RB_SERIAL) {
- setenv("console", "comconsole" , 1);
- }
-
- if (efi_copy_init()) {
- printf("failed to allocate staging area\n");
- return (EFI_BUFFER_TOO_SMALL);
- }
-
- /*
- * March through the device switch probing for things.
- */
- for (i = 0; devsw[i] != NULL; i++)
- if (devsw[i]->dv_init != NULL)
- (devsw[i]->dv_init)();
-
- printf("Command line arguments:");
- for (i = 0; i < argc; i++)
- printf(" %S", argv[i]);
- printf("\n");
-
- printf("Image base: 0x%lx\n", (u_long)img->ImageBase);
- printf("EFI version: %d.%02d\n", ST->Hdr.Revision >> 16,
- ST->Hdr.Revision & 0xffff);
- printf("EFI Firmware: %S (rev %d.%02d)\n", ST->FirmwareVendor,
- ST->FirmwareRevision >> 16, ST->FirmwareRevision & 0xffff);
-
- printf("\n%s", bootprog_info);
-
- /*
- * Disable the watchdog timer. By default the boot manager sets
- * the timer to 5 minutes before invoking a boot option. If we
- * want to return to the boot manager, we have to disable the
- * watchdog timer and since we're an interactive program, we don't
- * want to wait until the user types "quit". The timer may have
- * fired by then. We don't care if this fails. It does not prevent
- * normal functioning in any way...
- */
- BS->SetWatchdogTimer(0, 0, 0, NULL);
-
- if (find_currdev(img) != 0)
- return (EFI_NOT_FOUND);
-
- efi_init_environment();
- setenv("LINES", "24", 1); /* optional */
-
- for (k = 0; k < ST->NumberOfTableEntries; k++) {
- guid = &ST->ConfigurationTable[k].VendorGuid;
-#if !defined(__arm__)
- if (!memcmp(guid, &smbios, sizeof(EFI_GUID))) {
- snprintf(buf, sizeof(buf), "%p",
- ST->ConfigurationTable[k].VendorTable);
- setenv("hint.smbios.0.mem", buf, 1);
- smbios_detect(ST->ConfigurationTable[k].VendorTable);
- break;
- }
-#endif
- }
-
- interact(NULL); /* doesn't return */
-
- return (EFI_SUCCESS); /* keep compiler happy */
-}
-
-COMMAND_SET(reboot, "reboot", "reboot the system", command_reboot);
-
-static int
-command_reboot(int argc, char *argv[])
-{
- int i;
-
- for (i = 0; devsw[i] != NULL; ++i)
- if (devsw[i]->dv_cleanup != NULL)
- (devsw[i]->dv_cleanup)();
-
- RS->ResetSystem(EfiResetCold, EFI_SUCCESS, 0, NULL);
-
- /* NOTREACHED */
- return (CMD_ERROR);
-}
-
-COMMAND_SET(quit, "quit", "exit the loader", command_quit);
-
-static int
-command_quit(int argc, char *argv[])
-{
- exit(0);
- return (CMD_OK);
-}
-
-COMMAND_SET(memmap, "memmap", "print memory map", command_memmap);
-
-static int
-command_memmap(int argc, char *argv[])
-{
- UINTN sz;
- EFI_MEMORY_DESCRIPTOR *map, *p;
- UINTN key, dsz;
- UINT32 dver;
- EFI_STATUS status;
- int i, ndesc;
- char line[80];
- static char *types[] = {
- "Reserved",
- "LoaderCode",
- "LoaderData",
- "BootServicesCode",
- "BootServicesData",
- "RuntimeServicesCode",
- "RuntimeServicesData",
- "ConventionalMemory",
- "UnusableMemory",
- "ACPIReclaimMemory",
- "ACPIMemoryNVS",
- "MemoryMappedIO",
- "MemoryMappedIOPortSpace",
- "PalCode"
- };
-
- sz = 0;
- status = BS->GetMemoryMap(&sz, 0, &key, &dsz, &dver);
- if (status != EFI_BUFFER_TOO_SMALL) {
- printf("Can't determine memory map size\n");
- return (CMD_ERROR);
- }
- map = malloc(sz);
- status = BS->GetMemoryMap(&sz, map, &key, &dsz, &dver);
- if (EFI_ERROR(status)) {
- printf("Can't read memory map\n");
- return (CMD_ERROR);
- }
-
- ndesc = sz / dsz;
- snprintf(line, sizeof(line), "%23s %12s %12s %8s %4s\n",
- "Type", "Physical", "Virtual", "#Pages", "Attr");
- pager_open();
- if (pager_output(line)) {
- pager_close();
- return (CMD_OK);
- }
-
- for (i = 0, p = map; i < ndesc;
- i++, p = NextMemoryDescriptor(p, dsz)) {
- printf("%23s %012jx %012jx %08jx ", types[p->Type],
- (uintmax_t)p->PhysicalStart, (uintmax_t)p->VirtualStart,
- (uintmax_t)p->NumberOfPages);
- if (p->Attribute & EFI_MEMORY_UC)
- printf("UC ");
- if (p->Attribute & EFI_MEMORY_WC)
- printf("WC ");
- if (p->Attribute & EFI_MEMORY_WT)
- printf("WT ");
- if (p->Attribute & EFI_MEMORY_WB)
- printf("WB ");
- if (p->Attribute & EFI_MEMORY_UCE)
- printf("UCE ");
- if (p->Attribute & EFI_MEMORY_WP)
- printf("WP ");
- if (p->Attribute & EFI_MEMORY_RP)
- printf("RP ");
- if (p->Attribute & EFI_MEMORY_XP)
- printf("XP ");
- if (pager_output("\n"))
- break;
- }
-
- pager_close();
- return (CMD_OK);
-}
-
-COMMAND_SET(configuration, "configuration", "print configuration tables",
- command_configuration);
-
-static const char *
-guid_to_string(EFI_GUID *guid)
-{
- static char buf[40];
-
- sprintf(buf, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
- guid->Data1, guid->Data2, guid->Data3, guid->Data4[0],
- guid->Data4[1], guid->Data4[2], guid->Data4[3], guid->Data4[4],
- guid->Data4[5], guid->Data4[6], guid->Data4[7]);
- return (buf);
-}
-
-static int
-command_configuration(int argc, char *argv[])
-{
- char line[80];
- UINTN i;
-
- snprintf(line, sizeof(line), "NumberOfTableEntries=%lu\n",
- (unsigned long)ST->NumberOfTableEntries);
- pager_open();
- if (pager_output(line)) {
- pager_close();
- return (CMD_OK);
- }
-
- for (i = 0; i < ST->NumberOfTableEntries; i++) {
- EFI_GUID *guid;
-
- printf(" ");
- guid = &ST->ConfigurationTable[i].VendorGuid;
- if (!memcmp(guid, &mps, sizeof(EFI_GUID)))
- printf("MPS Table");
- else if (!memcmp(guid, &acpi, sizeof(EFI_GUID)))
- printf("ACPI Table");
- else if (!memcmp(guid, &acpi20, sizeof(EFI_GUID)))
- printf("ACPI 2.0 Table");
- else if (!memcmp(guid, &smbios, sizeof(EFI_GUID)))
- printf("SMBIOS Table %p",
- ST->ConfigurationTable[i].VendorTable);
- else if (!memcmp(guid, &dxe, sizeof(EFI_GUID)))
- printf("DXE Table");
- else if (!memcmp(guid, &hoblist, sizeof(EFI_GUID)))
- printf("HOB List Table");
- else if (!memcmp(guid, &memtype, sizeof(EFI_GUID)))
- printf("Memory Type Information Table");
- else if (!memcmp(guid, &debugimg, sizeof(EFI_GUID)))
- printf("Debug Image Info Table");
- else if (!memcmp(guid, &fdtdtb, sizeof(EFI_GUID)))
- printf("FDT Table");
- else
- printf("Unknown Table (%s)", guid_to_string(guid));
- snprintf(line, sizeof(line), " at %p\n",
- ST->ConfigurationTable[i].VendorTable);
- if (pager_output(line))
- break;
- }
-
- pager_close();
- return (CMD_OK);
-}
-
-
-COMMAND_SET(mode, "mode", "change or display EFI text modes", command_mode);
-
-static int
-command_mode(int argc, char *argv[])
-{
- UINTN cols, rows;
- unsigned int mode;
- int i;
- char *cp;
- char rowenv[8];
- EFI_STATUS status;
- SIMPLE_TEXT_OUTPUT_INTERFACE *conout;
- extern void HO(void);
-
- conout = ST->ConOut;
-
- if (argc > 1) {
- mode = strtol(argv[1], &cp, 0);
- if (cp[0] != '\0') {
- printf("Invalid mode\n");
- return (CMD_ERROR);
- }
- status = conout->QueryMode(conout, mode, &cols, &rows);
- if (EFI_ERROR(status)) {
- printf("invalid mode %d\n", mode);
- return (CMD_ERROR);
- }
- status = conout->SetMode(conout, mode);
- if (EFI_ERROR(status)) {
- printf("couldn't set mode %d\n", mode);
- return (CMD_ERROR);
- }
- sprintf(rowenv, "%u", (unsigned)rows);
- setenv("LINES", rowenv, 1);
- HO(); /* set cursor */
- return (CMD_OK);
- }
-
- printf("Current mode: %d\n", conout->Mode->Mode);
- for (i = 0; i <= conout->Mode->MaxMode; i++) {
- status = conout->QueryMode(conout, i, &cols, &rows);
- if (EFI_ERROR(status))
- continue;
- printf("Mode %d: %u columns, %u rows\n", i, (unsigned)cols,
- (unsigned)rows);
- }
-
- if (i != 0)
- printf("Select a mode with the command \"mode <number>\"\n");
-
- return (CMD_OK);
-}
-
-#ifdef EFI_ZFS_BOOT
-COMMAND_SET(lszfs, "lszfs", "list child datasets of a zfs dataset",
- command_lszfs);
-
-static int
-command_lszfs(int argc, char *argv[])
-{
- int err;
-
- if (argc != 2) {
- command_errmsg = "wrong number of arguments";
- return (CMD_ERROR);
- }
-
- err = zfs_list(argv[1]);
- if (err != 0) {
- command_errmsg = strerror(err);
- return (CMD_ERROR);
- }
- return (CMD_OK);
-}
-
-COMMAND_SET(reloadbe, "reloadbe", "refresh the list of ZFS Boot Environments",
- command_reloadbe);
-
-static int
-command_reloadbe(int argc, char *argv[])
-{
- int err;
- char *root;
-
- if (argc > 2) {
- command_errmsg = "wrong number of arguments";
- return (CMD_ERROR);
- }
-
- if (argc == 2) {
- err = zfs_bootenv(argv[1]);
- } else {
- root = getenv("zfs_be_root");
- if (root == NULL) {
- return (CMD_OK);
- }
- err = zfs_bootenv(root);
- }
-
- if (err != 0) {
- command_errmsg = strerror(err);
- return (CMD_ERROR);
- }
-
- return (CMD_OK);
-}
-#endif
-
-#ifdef LOADER_FDT_SUPPORT
-extern int command_fdt_internal(int argc, char *argv[]);
-
-/*
- * Since proper fdt command handling function is defined in fdt_loader_cmd.c,
- * and declaring it as extern is in contradiction with COMMAND_SET() macro
- * (which uses static pointer), we're defining wrapper function, which
- * calls the proper fdt handling routine.
- */
-static int
-command_fdt(int argc, char *argv[])
-{
-
- return (command_fdt_internal(argc, argv));
-}
-
-COMMAND_SET(fdt, "fdt", "flattened device tree handling", command_fdt);
-#endif
-
-/*
- * Chain load another efi loader.
- */
-static int
-command_chain(int argc, char *argv[])
-{
- EFI_GUID LoadedImageGUID = LOADED_IMAGE_PROTOCOL;
- EFI_HANDLE loaderhandle;
- EFI_LOADED_IMAGE *loaded_image;
- EFI_STATUS status;
- struct stat st;
- struct devdesc *dev;
- char *name, *path;
- void *buf;
- int fd;
-
- if (argc < 2) {
- command_errmsg = "wrong number of arguments";
- return (CMD_ERROR);
- }
-
- name = argv[1];
-
- if ((fd = open(name, O_RDONLY)) < 0) {
- command_errmsg = "no such file";
- return (CMD_ERROR);
- }
-
- if (fstat(fd, &st) < -1) {
- command_errmsg = "stat failed";
- close(fd);
- return (CMD_ERROR);
- }
-
- status = BS->AllocatePool(EfiLoaderCode, (UINTN)st.st_size, &buf);
- if (status != EFI_SUCCESS) {
- command_errmsg = "failed to allocate buffer";
- close(fd);
- return (CMD_ERROR);
- }
- if (read(fd, buf, st.st_size) != st.st_size) {
- command_errmsg = "error while reading the file";
- (void)BS->FreePool(buf);
- close(fd);
- return (CMD_ERROR);
- }
- close(fd);
- status = BS->LoadImage(FALSE, IH, NULL, buf, st.st_size, &loaderhandle);
- (void)BS->FreePool(buf);
- if (status != EFI_SUCCESS) {
- command_errmsg = "LoadImage failed";
- return (CMD_ERROR);
- }
- status = BS->HandleProtocol(loaderhandle, &LoadedImageGUID,
- (void **)&loaded_image);
-
- if (argc > 2) {
- int i, len = 0;
- CHAR16 *argp;
-
- for (i = 2; i < argc; i++)
- len += strlen(argv[i]) + 1;
-
- len *= sizeof (*argp);
- loaded_image->LoadOptions = argp = malloc (len);
- loaded_image->LoadOptionsSize = len;
- for (i = 2; i < argc; i++) {
- char *ptr = argv[i];
- while (*ptr)
- *(argp++) = *(ptr++);
- *(argp++) = ' ';
- }
- *(--argv) = 0;
- }
-
- if (efi_getdev((void **)&dev, name, (const char **)&path) == 0) {
-#ifdef EFI_ZFS_BOOT
- struct zfs_devdesc *z_dev;
-#endif
- struct disk_devdesc *d_dev;
- pdinfo_t *hd, *pd;
-
- switch (dev->d_type) {
-#ifdef EFI_ZFS_BOOT
- case DEVT_ZFS:
- z_dev = (struct zfs_devdesc *)dev;
- loaded_image->DeviceHandle =
- efizfs_get_handle_by_guid(z_dev->pool_guid);
- break;
-#endif
- case DEVT_NET:
- loaded_image->DeviceHandle =
- efi_find_handle(dev->d_dev, dev->d_unit);
- break;
- default:
- hd = efiblk_get_pdinfo(dev);
- if (STAILQ_EMPTY(&hd->pd_part)) {
- loaded_image->DeviceHandle = hd->pd_handle;
- break;
- }
- d_dev = (struct disk_devdesc *)dev;
- STAILQ_FOREACH(pd, &hd->pd_part, pd_link) {
- /*
- * d_partition should be 255
- */
- if (pd->pd_unit == (uint32_t)d_dev->d_slice) {
- loaded_image->DeviceHandle =
- pd->pd_handle;
- break;
- }
- }
- break;
- }
- }
-
- dev_cleanup();
- status = BS->StartImage(loaderhandle, NULL, NULL);
- if (status != EFI_SUCCESS) {
- command_errmsg = "StartImage failed";
- free(loaded_image->LoadOptions);
- loaded_image->LoadOptions = NULL;
- status = BS->UnloadImage(loaded_image);
- return (CMD_ERROR);
- }
-
- return (CMD_ERROR); /* not reached */
-}
-
-COMMAND_SET(chain, "chain", "chain load file", command_chain);
diff --git a/sys/boot/efi/loader/version b/sys/boot/efi/loader/version
deleted file mode 100644
index 3a4c47c5efb1..000000000000
--- a/sys/boot/efi/loader/version
+++ /dev/null
@@ -1,7 +0,0 @@
-$FreeBSD$
-
-NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this
-file is important. Make sure the current version number is on line 6.
-
-1.1: Keep in sync with i386 version.
-0.1: Initial i386 version. Derived from ia64.