Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch move machine-port specific file to machine directory.



details:   https://anonhg.NetBSD.org/src/rev/5d2b33fcf6dc
branches:  trunk
changeset: 503457:5d2b33fcf6dc
user:      uch <uch%NetBSD.org@localhost>
date:      Tue Feb 06 16:45:19 2001 +0000

description:
move machine-port specific file to machine directory.
for evbsh3, mmeye and dreamcast, use MI md_root.c

diffstat:

 sys/arch/dreamcast/conf/files.dreamcast |   42 ++++-
 sys/arch/dreamcast/dreamcast/autoconf.c |  295 ++++++++++++++++++++++++++++++++
 sys/arch/dreamcast/dreamcast/mainbus.c  |  110 +++++++++++
 sys/arch/evbsh3/conf/files.evbsh3       |   43 ++++-
 sys/arch/evbsh3/evbsh3/autoconf.c       |  295 ++++++++++++++++++++++++++++++++
 sys/arch/evbsh3/evbsh3/mainbus.c        |  110 +++++++++++
 sys/arch/hpcsh/conf/files.hpcsh         |   41 ++++-
 sys/arch/hpcsh/hpcsh/autoconf.c         |  295 ++++++++++++++++++++++++++++++++
 sys/arch/hpcsh/hpcsh/mainbus.c          |  110 +++++++++++
 sys/arch/hpcsh/hpcsh/md_root.c          |  109 +++++++++++
 sys/arch/mmeye/conf/files.mmeye         |   42 ++++-
 sys/arch/mmeye/mmeye/autoconf.c         |  295 ++++++++++++++++++++++++++++++++
 sys/arch/mmeye/mmeye/mainbus.c          |  110 +++++++++++
 sys/arch/sh3/conf/files.sh3             |   41 +----
 sys/arch/sh3/sh3/autoconf.c             |  295 --------------------------------
 sys/arch/sh3/sh3/mainbus.c              |  110 -----------
 sys/arch/sh3/sh3/md_root.c              |  109 -----------
 17 files changed, 1890 insertions(+), 562 deletions(-)

diffs (truncated from 2602 to 300 lines):

diff -r f20bb25b8b46 -r 5d2b33fcf6dc sys/arch/dreamcast/conf/files.dreamcast
--- a/sys/arch/dreamcast/conf/files.dreamcast   Tue Feb 06 16:37:56 2001 +0000
+++ b/sys/arch/dreamcast/conf/files.dreamcast   Tue Feb 06 16:45:19 2001 +0000
@@ -1,9 +1,12 @@
-#      $NetBSD: files.dreamcast,v 1.7 2001/02/01 01:27:04 thorpej Exp $
+#      $NetBSD: files.dreamcast,v 1.8 2001/02/06 16:45:19 uch Exp $
 #
 # new style config file for sh3 architecture
 #
 
-include "arch/dreamcast/conf/files.shbus"
+# maxpartitions must be first item in files.${ARCH}.newconf
+maxpartitions 8
+
+maxusers 2 16 64
 
 include "dev/wscons/files.wscons"
 include "dev/rasops/files.rasops"
@@ -14,6 +17,7 @@
 
 file   arch/dreamcast/dreamcast/conf.c
 file   arch/dreamcast/dreamcast/machdep.c
+file   arch/dreamcast/dreamcast/autoconf.c
 file   arch/dreamcast/dreamcast/procfs_machdep.c       procfs
 
 defopt opt_memsize.h   IOM_ROM_BEGIN IOM_ROM_SIZE IOM_RAM_BEGIN IOM_RAM_SIZE
@@ -23,6 +27,40 @@
                        BSC_RTCSR_VAL BSC_RTCNT_VAL BSC_RTCOR_VAL BSC_RFCR_VAL
                        BSC_PCR_VAL FRQCR_VAL PFC_SCPCR_VAL
 
+#
+# Machine-independent SCSI drivers
+#
+
+include "dev/scsipi/files.scsipi"
+major  {sd = 4}
+major  {st = 5}
+major  {cd = 6}
+
+#
+# Machine-independent ATA drivers
+#
+
+include "dev/ata/files.ata"
+major  {wd = 0}
+
+# Memory Disk for install floppy
+file dev/md_root.c                             memory_disk_hooks
+major  {md = 17}
+
+#
+# System bus types
+#
+
+define mainbus { }
+device mainbus:  mainbus
+attach mainbus at root
+file   arch/dreamcast/dreamcast/mainbus.c      mainbus
+
+include "arch/dreamcast/conf/files.shbus"
+
+# network devices MII bus
+include "dev/mii/files.mii"
+
 device maple { [port = -1], [subunit = -1] }
 attach maple at shb
 file   arch/dreamcast/dev/maple/maple.c                maple
diff -r f20bb25b8b46 -r 5d2b33fcf6dc sys/arch/dreamcast/dreamcast/autoconf.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/dreamcast/dreamcast/autoconf.c   Tue Feb 06 16:45:19 2001 +0000
@@ -0,0 +1,295 @@
+/*     $NetBSD: autoconf.c,v 1.1 2001/02/06 16:45:20 uch Exp $ */
+
+/*-
+ * Copyright (c) 1990 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * William Jolitz.
+ *
+ * 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
+ * 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.
+ *
+ *     @(#)autoconf.c  7.1 (Berkeley) 5/9/91
+ */
+
+/*
+ * Setup the system to run on the current machine.
+ *
+ * Configure() is called at boot time and initializes the vba
+ * device tables and the memory controller monitoring.  Available
+ * devices are determined (from possibilities mentioned in ioconf.c),
+ * and the drivers are initialized.
+ */
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/buf.h>
+#include <sys/dkstat.h>
+#include <sys/disklabel.h>
+#include <sys/conf.h>
+#include <sys/reboot.h>
+#include <sys/device.h>
+#include <sys/vnode.h>
+#include <sys/fcntl.h>
+#include <sys/dkio.h>
+
+#include <machine/pte.h>
+#include <machine/cpu.h>
+#include <machine/bootinfo.h>
+
+static int match_harddisk __P((struct device *, struct btinfo_bootdisk *));
+
+struct device *booted_device;
+int booted_partition;
+
+static void findroot __P((void));
+
+/*
+ * Determine i/o configuration for a machine.
+ */
+void
+cpu_configure()
+{
+
+       startrtclock();
+
+       if (config_rootfound("mainbus", NULL) == NULL)
+               panic("configure: mainbus not configured");
+
+       printf("biomask %0x netmask %0x ttymask %0x\n",
+              imask[IPL_BIO], imask[IPL_NET], imask[IPL_TTY]);
+
+       spl0();
+}
+
+void
+cpu_rootconf()
+{
+       findroot();
+
+       printf("boot device: %s\n",
+           booted_device ? booted_device->dv_xname : "<unknown>");
+
+       setroot(booted_device, booted_partition);
+}
+
+u_long bootdev = 0;            /* should be dev_t, but not until 32 bits */
+struct device *booted_device;
+
+/*
+ * helper function for "findroot()":
+ * return nonzero if disk device matches bootinfo
+ */
+static int
+match_harddisk(dv, bid)
+       struct device *dv;
+       struct btinfo_bootdisk *bid;
+{
+       struct devnametobdevmaj *i;
+       struct vnode *tmpvn;
+       int error;
+       struct disklabel label;
+       int found = 0;
+
+       /*
+        * A disklabel is required here.  The
+        * bootblocks don't refuse to boot from
+        * a disk without a label, but this is
+        * normally not wanted.
+        */
+       if (bid->labelsector == -1)
+               return(0);
+
+       /*
+        * lookup major number for disk block device
+        */
+       i = dev_name2blk;
+       while (i->d_name &&
+              strcmp(i->d_name, dv->dv_cfdata->cf_driver->cd_name))
+               i++;
+       if (i->d_name == NULL)
+               return(0); /* XXX panic() ??? */
+
+       /*
+        * Fake a temporary vnode for the disk, open
+        * it, and read the disklabel for comparison.
+        */
+       if (bdevvp(MAKEDISKDEV(i->d_maj, dv->dv_unit, bid->partition), &tmpvn))
+               panic("findroot can't alloc vnode");
+       error = VOP_OPEN(tmpvn, FREAD, NOCRED, 0);
+       if (error) {
+#ifndef DEBUG
+               /*
+                * Ignore errors caused by missing
+                * device, partition or medium.
+                */
+               if (error != ENXIO && error != ENODEV)
+#endif
+                       printf("findroot: can't open dev %s%c (%d)\n",
+                              dv->dv_xname, 'a' + bid->partition, error);
+               vrele(tmpvn);
+               return(0);
+       }
+       error = VOP_IOCTL(tmpvn, DIOCGDINFO, (caddr_t)&label, FREAD, NOCRED, 0);
+       if (error) {
+               /*
+                * XXX can't happen - open() would
+                * have errored out (or faked up one)
+                */
+               printf("can't get label for dev %s%c (%d)\n",
+                      dv->dv_xname, 'a' + bid->partition, error);
+               goto closeout;
+       }
+
+       /* compare with our data */
+       if (label.d_type == bid->label.type &&
+           label.d_checksum == bid->label.checksum &&
+           !strncmp(label.d_packname, bid->label.packname, 16))
+               found = 1;
+
+closeout:
+       VOP_CLOSE(tmpvn, FREAD, NOCRED, 0);
+       vrele(tmpvn);
+
+       return(found);
+}
+
+/*
+ * Attempt to find the device from which we were booted.
+ * If we can do so, and not instructed not to do so,
+ * change rootdev to correspond to the load device.
+ */
+void
+findroot(void)
+{
+       struct btinfo_bootdisk *bid;
+       struct device *dv;
+       int i, majdev, unit, part;
+       char buf[32];
+
+       if (booted_device)
+               return;
+
+       if (lookup_bootinfo(BTINFO_NETIF)) {
+               /*
+                * We got netboot interface information, but
+                * "device_register()" couldn't match it to a configured
+                * device. Bootdisk information cannot be present at the
+                * same time, so give up.
+                */
+               printf("findroot: netboot interface not found\n");
+               return;
+       }
+
+       bid = lookup_bootinfo(BTINFO_BOOTDISK);
+       if (bid) {
+               /*
+                * Scan all disk devices for ones that match the passed data.
+                * Don't break if one is found, to get possible multiple
+                * matches - for problem tracking. Use the first match anyway
+                * because lower device numbers are more likely to be the
+                * boot device.
+                */
+               for (dv = alldevs.tqh_first; dv != NULL;
+               dv = dv->dv_list.tqe_next) {
+                       if (dv->dv_class != DV_DISK)
+                               continue;
+
+                       if (!strcmp(dv->dv_cfdata->cf_driver->cd_name, "fd")) {
+                               /*
+                                * Assume the configured unit number matches
+                                * the BIOS device number.  (This is the old
+                                * behaviour.)  Needs some ideas how to handle
+                                * BIOS's "swap floppy drive" options.
+                                */



Home | Main Index | Thread Index | Old Index