aboutsummaryrefslogtreecommitdiff
path: root/sys/amd64
diff options
context:
space:
mode:
Diffstat (limited to 'sys/amd64')
-rw-r--r--sys/amd64/amd64/machdep.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c
index ea0f164b2e56..9644e167d54d 100644
--- a/sys/amd64/amd64/machdep.c
+++ b/sys/amd64/amd64/machdep.c
@@ -1691,6 +1691,27 @@ SYSCTL_PROC(_machdep, OID_AUTO, efi_map,
efi_map_sysctl_handler, "S,efi_map_header",
"Raw EFI Memory Map");
+static int
+efi_arch_sysctl_handler(SYSCTL_HANDLER_ARGS)
+{
+ char *arch;
+ caddr_t kmdp;
+
+ kmdp = preload_search_by_type("elf kernel");
+ if (kmdp == NULL)
+ kmdp = preload_search_by_type("elf64 kernel");
+
+ arch = (char *)preload_search_info(kmdp,
+ MODINFO_METADATA | MODINFOMD_EFI_ARCH);
+ if (arch == NULL)
+ return (0);
+
+ return (SYSCTL_OUT_STR(req, arch));
+}
+SYSCTL_PROC(_machdep, OID_AUTO, efi_arch,
+ CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, 0,
+ efi_arch_sysctl_handler, "A", "EFI Firmware Architecture");
+
void
spinlock_enter(void)
{