git: 62d1ec7889a8 - main - stand/i386: Initialize archsw at compile time
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 26 May 2025 15:33:32 UTC
The branch main has been updated by imp:
URL: https://cgit.FreeBSD.org/src/commit/?id=62d1ec7889a864a4c50f727f913384ea50e8a88e
commit 62d1ec7889a864a4c50f727f913384ea50e8a88e
Author: Warner Losh <imp@FreeBSD.org>
AuthorDate: 2025-05-25 15:17:53 +0000
Commit: Warner Losh <imp@FreeBSD.org>
CommitDate: 2025-05-26 15:30:37 +0000
stand/i386: Initialize archsw at compile time
No need to initialize this at runtime. This trades .bss space + code in
.text for just .data and is net smaller by 4 bytes.
Sponsored by: Netflix
---
stand/i386/loader/main.c | 38 +++++++++++++++++++++-----------------
1 file changed, 21 insertions(+), 17 deletions(-)
diff --git a/stand/i386/loader/main.c b/stand/i386/loader/main.c
index e7a42c194326..a7dfb2dde762 100644
--- a/stand/i386/loader/main.c
+++ b/stand/i386/loader/main.c
@@ -61,21 +61,35 @@ static uint32_t initial_howto;
static uint32_t initial_bootdev;
static struct bootinfo *initial_bootinfo;
-struct arch_switch archsw; /* MI/MD interface boundary */
-
-static void extract_currdev(void);
static int isa_inb(int port);
static void isa_outb(int port, int value);
+
+#ifdef LOADER_ZFS_SUPPORT
+struct zfs_boot_args *zargs;
+static void i386_zfs_probe(void);
+#endif
+
+struct arch_switch archsw = { /* MI/MD interface boundary */
+ .arch_autoload = i386_autoload,
+ .arch_getdev = i386_getdev,
+ .arch_copyin = i386_copyin,
+ .arch_copyout = i386_copyout,
+ .arch_readin = i386_readin,
+ .arch_isainb = isa_inb,
+ .arch_isaoutb = isa_outb,
+ .arch_hypervisor = x86_hypervisor,
+#ifdef LOADER_ZFS_SUPPORT
+ .arch_zfs_probe = i386_zfs_probe,
+#endif
+};
+
+static void extract_currdev(void);
void exit(int code);
#ifdef LOADER_GELI_SUPPORT
#include "geliboot.h"
struct geli_boot_args *gargs;
struct geli_boot_data *gbdata;
#endif
-#ifdef LOADER_ZFS_SUPPORT
-struct zfs_boot_args *zargs;
-static void i386_zfs_probe(void);
-#endif
/* XXX debugging */
extern char end[];
@@ -182,17 +196,7 @@ main(void)
bc_add(initial_bootdev);
}
- archsw.arch_autoload = i386_autoload;
- archsw.arch_getdev = i386_getdev;
- archsw.arch_copyin = i386_copyin;
- archsw.arch_copyout = i386_copyout;
- archsw.arch_readin = i386_readin;
- archsw.arch_isainb = isa_inb;
- archsw.arch_isaoutb = isa_outb;
- archsw.arch_hypervisor = x86_hypervisor;
#ifdef LOADER_ZFS_SUPPORT
- archsw.arch_zfs_probe = i386_zfs_probe;
-
/*
* zfsboot and gptzfsboot have always passed KARGS_FLAGS_ZFS,
* so if that is set along with KARGS_FLAGS_EXTARG we know we