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