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