Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/sommerfeld_i386mp_1]: src/sys/arch/i386/stand g/c COMPAT_OLDBOOT from bo...
details: https://anonhg.NetBSD.org/src/rev/37c3133c4f6b
branches: sommerfeld_i386mp_1
changeset: 482410:37c3133c4f6b
user: jdolecek <jdolecek%NetBSD.org@localhost>
date: Fri Jun 01 23:26:31 2001 +0000
description:
g/c COMPAT_OLDBOOT from bootblocks, sprinkle some const
bump bootblock version to 2.10
diffstat:
sys/arch/i386/stand/biosboot/devopen.c | 117 ++++++++++++++++++++
sys/arch/i386/stand/dosboot/devopen.c | 139 ++++++++++++++++++++++++
sys/arch/i386/stand/lib/exec.c | 187 +++++++++++++++++++++++++++++++++
sys/arch/i386/stand/lib/libi386.h | 104 ++++++++++++++++++
4 files changed, 547 insertions(+), 0 deletions(-)
diffs (truncated from 563 to 300 lines):
diff -r 5c61056be88d -r 37c3133c4f6b sys/arch/i386/stand/biosboot/devopen.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/i386/stand/biosboot/devopen.c Fri Jun 01 23:26:31 2001 +0000
@@ -0,0 +1,117 @@
+/* $NetBSD: devopen.c,v 1.11.2.2 2001/06/01 23:26:31 jdolecek Exp $ */
+
+/*
+ * Copyright (c) 1996, 1997
+ * Matthias Drochner. 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 for the NetBSD Project
+ * by Matthias Drochner.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * 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/types.h>
+
+#include <lib/libsa/stand.h>
+#include <lib/libkern/libkern.h>
+
+#include <libi386.h>
+#include <biosdisk.h>
+#include "devopen.h"
+#ifdef _STANDALONE
+#include <bootinfo.h>
+#endif
+#ifdef SUPPORT_PS2
+#include <biosmca.h>
+#endif
+
+static __inline int dev2bios __P((char *, unsigned int, int *));
+
+static __inline int
+dev2bios(devname, unit, biosdev)
+ char *devname;
+ unsigned int unit;
+ int *biosdev;
+{
+ if (strcmp(devname, "hd") == 0)
+ *biosdev = 0x80 + unit;
+ else if (strcmp(devname, "fd") == 0)
+ *biosdev = 0x00 + unit;
+ else
+ return (ENXIO);
+
+ return (0);
+}
+
+int
+bios2dev(biosdev, devname, unit)
+ int biosdev;
+ char **devname;
+ unsigned int *unit;
+{
+ if (biosdev & 0x80)
+ *devname = "hd";
+ else
+ *devname = "fd";
+
+ *unit = biosdev & 0x7f;
+
+ return (0);
+}
+
+#ifdef _STANDALONE
+struct btinfo_bootpath bibp;
+#endif
+
+/*
+ * Open the BIOS disk device
+ */
+int
+devopen(f, fname, file)
+ struct open_file *f;
+ const char *fname;
+ char **file;
+{
+ char *fsname, *devname;
+ unsigned int unit, partition;
+ int biosdev;
+ int error;
+ struct devsw *dp;
+
+ if ((error = parsebootfile(fname, &fsname, &devname,
+ &unit, &partition, (const char **) file))
+ || (error = dev2bios(devname, unit, &biosdev)))
+ return (error);
+
+ dp = &devsw[0]; /* must be biosdisk */
+ f->f_dev = dp;
+
+#ifdef _STANDALONE
+ strncpy(bibp.bootpath, *file, sizeof(bibp.bootpath));
+ BI_ADD(&bibp, BTINFO_BOOTPATH, sizeof(bibp));
+#endif
+
+ return (biosdiskopen(f, biosdev, partition));
+}
diff -r 5c61056be88d -r 37c3133c4f6b sys/arch/i386/stand/dosboot/devopen.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/i386/stand/dosboot/devopen.c Fri Jun 01 23:26:31 2001 +0000
@@ -0,0 +1,139 @@
+/* $NetBSD: devopen.c,v 1.5.2.2 2001/06/01 23:26:32 jdolecek Exp $ */
+
+/*
+ * Copyright (c) 1996
+ * Matthias Drochner. 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 for the NetBSD Project
+ * by Matthias Drochner.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * 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 <lib/libsa/stand.h>
+#include <lib/libkern/libkern.h>
+#include <lib/libsa/ufs.h>
+
+#include <libi386.h>
+#include <biosdisk.h>
+#include <dosfile.h>
+#include <bootinfo.h>
+
+struct devsw devsw[] = {
+ {"disk", biosdiskstrategy, biosdiskopen, biosdiskclose, biosdiskioctl},
+};
+int ndevs = sizeof(devsw) / sizeof(struct devsw);
+
+static struct fs_ops dosfs = {
+ dos_open, dos_close, dos_read, dos_write, dos_seek, dos_stat
+};
+static struct fs_ops ufsfs = {
+ ufs_open, ufs_close, ufs_read, ufs_write, ufs_seek, ufs_stat
+};
+
+struct fs_ops file_system[] = {
+ {0},
+};
+int nfsys = 1;
+
+static struct {
+ char *name;
+ int biosdev;
+} biosdevtab[] = {
+ {
+ "fd", 0
+ },
+ {
+ "wd", 0x80
+ },
+ {
+ "sd", 0x80
+ },
+ {
+ "hd", 0x80
+ }
+};
+#define NUMBIOSDEVS (sizeof(biosdevtab) / sizeof(biosdevtab[0]))
+
+static int dev2bios __P((char *, unsigned int, int *));
+
+static int
+dev2bios(devname, unit, biosdev)
+ char *devname;
+ unsigned int unit;
+ int *biosdev;
+{
+ int i;
+
+ for (i = 0; i < NUMBIOSDEVS; i++)
+ if (!strcmp(devname, biosdevtab[i].name)) {
+ *biosdev = biosdevtab[i].biosdev + unit;
+ if (unit >= 4) /* ??? */
+ return (EUNIT);
+ return (0);
+ }
+ return (ENXIO);
+}
+
+struct btinfo_bootpath bibp;
+
+int
+devopen(f, fname, file)
+ struct open_file *f;
+ const char *fname;
+ char **file;
+{
+ char *devname;
+ char *fsmode;
+ unsigned int unit, partition;
+ int biosdev;
+ int error;
+ struct devsw *dp;
+
+ if ((error = parsebootfile(fname, &fsmode, &devname, &unit,
+ &partition, (const char **) file)))
+ return (error);
+
+ if (!strcmp(fsmode, "dos")) {
+ file_system[0] = dosfs; /* structure assignment! */
+ f->f_flags |= F_NODEV; /* handled by DOS */
+ return (0);
+ } else if (!strcmp(fsmode, "ufs")) {
+ if ((error = dev2bios(devname, unit, &biosdev)))
+ return (error);
+ file_system[0] = ufsfs; /* structure assignment! */
+ dp = &devsw[0]; /* must be biosdisk */
+ f->f_dev = dp;
+
+ strncpy(bibp.bootpath, *file, sizeof(bibp.bootpath));
+ BI_ADD(&bibp, BTINFO_BOOTPATH, sizeof(bibp));
+
+ return (biosdiskopen(f, biosdev, partition));
+ } else {
+ printf("no file system\n");
+ return (ENXIO);
+ }
+ /* NOTREACHED */
+}
diff -r 5c61056be88d -r 37c3133c4f6b sys/arch/i386/stand/lib/exec.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/i386/stand/lib/exec.c Fri Jun 01 23:26:31 2001 +0000
@@ -0,0 +1,187 @@
+/* $NetBSD: exec.c,v 1.17.2.2 2001/06/01 23:26:32 jdolecek Exp $ */
+
+/*
+ * Copyright (c) 1982, 1986, 1990, 1993
+ * The Regents of the University of California. All rights reserved.
+ * Copyright (c) 1996
+ * Matthias Drochner. All rights reserved.
+ * Copyright (c) 1996
+ * Perry E. Metzger. All rights reserved.
+ * Copyright (c) 1997
+ * Martin Husemann. 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 the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University 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 REGENTS 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 REGENTS OR CONTRIBUTORS BE LIABLE
Home |
Main Index |
Thread Index |
Old Index