diff options
Diffstat (limited to 'sys/boot/amd64/efi/main.c')
-rw-r--r-- | sys/boot/amd64/efi/main.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/boot/amd64/efi/main.c b/sys/boot/amd64/efi/main.c index d1ea9c3..eb6e69a 100644 --- a/sys/boot/amd64/efi/main.c +++ b/sys/boot/amd64/efi/main.c @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include <efilib.h> #include <bootstrap.h> +#include <smbios.h> #include "x86_efi.h" extern char bootprog_name[]; @@ -59,6 +60,7 @@ main(int argc, CHAR16 *argv[]) { char vendor[128]; EFI_LOADED_IMAGE *img; + EFI_GUID *guid; int i; /* @@ -124,6 +126,14 @@ main(int argc, CHAR16 *argv[]) archsw.arch_copyout = x86_efi_copyout; archsw.arch_readin = x86_efi_readin; + for (i = 0; i < ST->NumberOfTableEntries; i++) { + guid = &ST->ConfigurationTable[i].VendorGuid; + if (!memcmp(guid, &smbios, sizeof(EFI_GUID))) { + smbios_detect(ST->ConfigurationTable[i].VendorTable); + break; + } + } + interact(); /* doesn't return */ return (EFI_SUCCESS); /* keep compiler happy */ |