Module Name: src
Committed By: thorpej
Date: Mon Jan 8 05:10:51 UTC 2024
Modified Files:
src/sys/arch/virt68k/virt68k: autoconf.c machdep.c
Log Message:
Accept "root=xxx" for the root device and "flags=xxx" as the boothowto
flags from the kernel command line arguments.
To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/virt68k/virt68k/autoconf.c
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/virt68k/virt68k/machdep.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/virt68k/virt68k/autoconf.c
diff -u src/sys/arch/virt68k/virt68k/autoconf.c:1.4 src/sys/arch/virt68k/virt68k/autoconf.c:1.5
--- src/sys/arch/virt68k/virt68k/autoconf.c:1.4 Sun Jan 7 16:41:24 2024
+++ src/sys/arch/virt68k/virt68k/autoconf.c Mon Jan 8 05:10:51 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: autoconf.c,v 1.4 2024/01/07 16:41:24 thorpej Exp $ */
+/* $NetBSD: autoconf.c,v 1.5 2024/01/08 05:10:51 thorpej Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@@ -45,7 +45,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.4 2024/01/07 16:41:24 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.5 2024/01/08 05:10:51 thorpej Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -96,6 +96,26 @@ void
device_register(device_t dev, void *aux)
{
device_t parent = device_parent(dev);
+ char rootname[DEVICE_XNAME_SIZE];
+ bool rootname_valid = false;
+
+ if (booted_device == NULL) {
+ rootname_valid = bootinfo_getarg("root",
+ rootname, sizeof(rootname));
+ if (rootname_valid) {
+ size_t len = strlen(rootname);
+ while (len) {
+ len--;
+ if (isdigit(rootname[len])) {
+ break;
+ }
+ rootname[len] = '\0';
+ }
+ if (strcmp(device_xname(dev), rootname) == 0) {
+ booted_device = dev;
+ }
+ }
+ }
if (device_is_a(parent, "mainbus")) {
struct mainbus_attach_args *ma = aux;
Index: src/sys/arch/virt68k/virt68k/machdep.c
diff -u src/sys/arch/virt68k/virt68k/machdep.c:1.5 src/sys/arch/virt68k/virt68k/machdep.c:1.6
--- src/sys/arch/virt68k/virt68k/machdep.c:1.5 Sat Jan 6 21:43:37 2024
+++ src/sys/arch/virt68k/virt68k/machdep.c Mon Jan 8 05:10:51 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: machdep.c,v 1.5 2024/01/06 21:43:37 thorpej Exp $ */
+/* $NetBSD: machdep.c,v 1.6 2024/01/08 05:10:51 thorpej Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.5 2024/01/06 21:43:37 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.6 2024/01/08 05:10:51 thorpej Exp $");
#include "opt_ddb.h"
#include "opt_m060sp.h"
@@ -70,6 +70,7 @@ __KERNEL_RCSID(0, "$NetBSD: machdep.c,v
#include <sys/module.h>
#include <sys/device.h>
#include <sys/cpu.h>
+#include <sys/boot_flag.h>
#include "ksyms.h"
@@ -100,8 +101,6 @@ __KERNEL_RCSID(0, "$NetBSD: machdep.c,v
#include <ddb/db_output.h>
#endif
-#define MAXMEM 64*1024 /* XXX - from cmap.h */
-
/* the following is used externally (sysctl_hw) */
char machine[] = MACHINE; /* from <machine/param.h> */
@@ -207,6 +206,17 @@ virt68k_init(void)
/* Check for RND seed from the loader. */
bootinfo_setup_rndseed();
+
+ char flags[32];
+ if (bootinfo_getarg("flags", flags, sizeof(flags))) {
+ for (const char *cp = flags; *cp != '\0'; cp++) {
+ /* Consume 'm' in favor of BI_RAMDISK. */
+ if (*cp == 'm') {
+ continue;
+ }
+ BOOT_FLAG(*cp, boothowto);
+ }
+ }
}
/*