summaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/mvme68k/README152
-rw-r--r--sys/arch/mvme68k/conf/VME14751
-rw-r--r--sys/arch/mvme68k/dev/iio.c114
-rw-r--r--sys/arch/mvme68k/dev/iio.h18
-rw-r--r--sys/arch/mvme68k/mvme68k/clock.c367
-rw-r--r--sys/arch/mvme68k/mvme68k/clockreg.h76
-rw-r--r--sys/arch/mvme68k/mvme68k/isr.h47
-rw-r--r--sys/arch/mvme68k/mvme68k/mainbus.c29
-rw-r--r--sys/arch/mvme68k/stand/libsa/exec.c177
-rw-r--r--sys/arch/mvme68k/stand/libsa/if_lereg.h176
-rw-r--r--sys/arch/mvme68k/stand/libsa/machdep.c154
-rw-r--r--sys/arch/mvme68k/stand/libsa/netif.c531
-rw-r--r--sys/arch/mvme68k/stand/libsa/netif.h22
-rw-r--r--sys/arch/mvme68k/stand/sboot/console.c139
-rw-r--r--sys/arch/mvme68k/stand/sboot/le_poll.c320
-rw-r--r--sys/arch/mvme68k/stand/sboot/libc_sa.c348
-rw-r--r--sys/arch/mvme68k/stand/sboot/oc_cksum.s187
-rw-r--r--sys/arch/mvme68k/stand/sboot/start.s47
18 files changed, 0 insertions, 2955 deletions
diff --git a/sys/arch/mvme68k/README b/sys/arch/mvme68k/README
deleted file mode 100644
index 0b1b930c54e..00000000000
--- a/sys/arch/mvme68k/README
+++ /dev/null
@@ -1,152 +0,0 @@
- $NetBSD: README,v 1.1.1.1 1995/07/25 23:11:53 chuck Exp $
-
-NetBSD/mvme68k port
-
-supported environment:
-
- Motorola makes a number of m68k VME cards. This port
-currently only works on the m68030 based VME147 card (diskless only
-for now).
-
-requirements:
- - VME147 card
- - a machine to connect the console to
- - network connection
- - NFS server (to serve root and swap)
-
-future plans:
- - VME147 scsi disk support
- - hopefully, support for the VME162 card
-
-
-how to boot:
- Booting NetBSD/mvme68k on a VME147 is somewhat painful because
-the ROM doesn't know how to talk to the ethernet chip. I have solved
-this problem by downloading a bootstrap into RAM via the console line.
-
- First, you will need a m68k8k NFS mountable /usr and root
-directory. NetBSD/sun3 binaries will run fine on the mvme68k system
-for the most part (the exception being kvm stuff). These binaries can
-be ftp'd from ftp.netbsd.org. You will also need a NetBSD/mvme68k
-kernel and related bootstraps. For now these can be obtained from
-dworkin.wustl.edu in /dist/netbsd/mvme68k_boot.tar.gz (once I get set
-up I will put these plus a snapshot on ftp.netbsd.org).
-
- Put the mvme68k "netbsd" binary in NFS root directory. Put
-boot.vme147 in /tftpboot of your NFS server machine. Make a symbolic
-link from the hex encoding of your IP address to that file. For
-example:
-
-lrwxrwxrwx 1 root 11 Apr 13 17:27 80FCA93F.147 -> boot.vme147
-
-
-[80FCA93F is the IP address (128.252.169.63) of my vme147.]
-
-Make sure you've got the right info in /etc/ethers and /etc/bootparams
-on your server.
-
-
-Now, bring up your 147. You should have the "bug" prompt:
-
-COLD Start
-
-Onboard RAM start = $00000000, stop = $007FFFFF
-
-147-Bug>
-
-
-Make sure the "stop" looks ok (if you've got 8MB you should have the
-same value as I). Also make sure the clock is ticking:
-
-147-Bug>time
-Sunday 5/30/27 16:25:14
-147-Bug>time
-Sunday 5/30/27 16:25:15
-147-Bug>
-
-
-Looks good. you now need to download "sboot" into RAM. you can
-either do that through the console line or through a 2nd serial
-connection. I have my 147 connected to a sun4/110 and I access it via
-"tip". to load that way do this:
-
-lo 0
-~Ccat sboot
-go 4000
-
-which will look like this:
-147-Bug>
-147-Bug>lo 0
-~CLocal command? cat sboot
-
-away for 11 seconds
-!
-
-147-Bug>g 4000
-Effective address: 00004000
-
-sboot: serial line bootstrap program (&end = 5fd8)
-
->>>
-
-
-Now, if you want to do it through serial line 1, then connect serial
-line one to a machine. At the "147-Bug> " prompt do this "tm
-1"... you should then login to what ever machine it is connected to.
-Then hit "^A" to escape to Bug. do "lo 1;x=cat sboot" ... then when
-that is done you can reconnect "tm 1" and logout. Then do "go 4000"
-and you've got ">>> " prompt of sboot.
-
-
-Once you've got the ">>> " prompt you can do commands such as:
-"b" - boot "netbsd" multiuser
-"b gennetbsd" - boot "gennetbsd" multiuser
-"b -s" - boot "netbsd" single user
-"b gennetbsd -s"- boot "gennetbsd" single user
-
-A typical boot looks like this:
-
->>> b
-le0: ethernet address: 8:0:3e:20:cb:87
-My ip address is: 128.252.169.63
-Server ip address is: 128.252.169.2
-3800
-Download was a success!
-Start @ 0x8000 ...
->> NetBSD netboot [$Revision: 1.1 $]
-boot: client IP address: 128.252.169.63
-boot: client name: vme147
-root addr=128.252.169.2 path=/export/root/vme147
-449744+20348+64444+[29268+29051]=0x90f0b
-Start @ 0x88aa ...
-Copyright (c) 1982, 1986, 1989, 1991, 1993
- The Regents of the University of California. All rights reserved.
-
-NetBSD 1.0A (VME147) #17: Sat Jul 1 00:07:04 CDT 1995
- chuck@vme147.ccrc.wustl.edu:/um/netbsd/src/sys/arch/mvme68k/compile/VME147
-Motorola MVME147 MC68030 CPU+MMU, ???MHz MC68882 FPU)
-real mem = 8388608
-avail mem = 6832128
-using 102 buffers containing 417792 bytes of memory
-mainbus0 (root)
-iio0 at mainbus0 addr 0xfffe0000
-pcc0 at iio0 offset 0x1000 rev 0 intbvr 0x40
-clock0 at iio0 offset 0x7f8 ipl 5
-zs0 at iio0 offset 0x3000 ipl 4
-le0 at iio0 offset 0x1800 ipl 2 ler2 0x94000 address 08:00:3e:20:cb:87
-nfs_boot: using network interface 'le0'
-nfs_boot: client_addr=0x80fca93f
-nfs_boot: server_addr=0x80fca902
-nfs_boot: hostname=vme147
-root on dworkin:/export/root/vme147
-root time: 0x2ffc6859
-WARNING: clock gained 18 days -- CHECK AND RESET THE DATE!
-swap on dworkin:/export/swap/vme147
-swap size: 0x4000 (blocks)
-init: copying out path `/sbin/init' 11
-Automatic boot in progress: starting file system checks.
-[etc...]
-
-
-good luck!
-
diff --git a/sys/arch/mvme68k/conf/VME147 b/sys/arch/mvme68k/conf/VME147
deleted file mode 100644
index 97498fff5ba..00000000000
--- a/sys/arch/mvme68k/conf/VME147
+++ /dev/null
@@ -1,51 +0,0 @@
-# $NetBSD: VME147,v 1.1.1.1 1995/07/25 23:12:05 chuck Exp $
-
-machine mvme68k m68k
-
-options "M68040" # support for 040
-options FPSP # MC68040 floating point support
-options "M68030" # support for 030
-options FPCOPROC # Support for MC6888[12] (Required)
-
-maxusers 2
-
-# obsolete timezone spec
-options TIMEZONE=0, DST=0
-
-options DIAGNOSTIC, DEBUG
-#options FFS
-options NFSCLIENT
-#options NFSSERVER
-#options SYSVSHM
-options KTRACE
-options COMPAT_43
-options FIFO
-#options MFS
-options DEVPAGER, SWAPPAGER, VNODEPAGER
-#options MSDOSFS
-
-# Networking options
-options INET
-options TCP_COMPAT_42 # compatibility with 4.2BSD TCP/IP
-#options GATEWAY # IP packet forwarding
-#options ISO # OSI networking
-#options TPIP
-#options EON
-options COMPAT_09, COMPAT_10
-options COMPAT_SUNOS
-
-config netbsd root on nfs swap on nfs
-
-pseudo-device sl
-pseudo-device ppp 2
-pseudo-device loop
-pseudo-device bpfilter
-pseudo-device pty
-
-mainbus0 at root
-iio0 at mainbus0
-
-pcc0 at iio0 offset 0x1000
-zs0 at iio0 offset 0x3000 ipl 4
-clock0 at iio0 offset 0x07f8 ipl 5
-le0 at iio0 offset 0x1800 ipl 2
diff --git a/sys/arch/mvme68k/dev/iio.c b/sys/arch/mvme68k/dev/iio.c
deleted file mode 100644
index ea9abed48b6..00000000000
--- a/sys/arch/mvme68k/dev/iio.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/* $Id: iio.c,v 1.1 1995/10/18 08:51:10 deraadt Exp $ */
-
-/*
- *
- * Copyright (c) 1995 Charles D. Cranor
- * 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 Charles D. Cranor.
- * 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.
- */
-
-/*
- * peripheral channel controller
- */
-
-#include <sys/param.h>
-#include <sys/conf.h>
-#include <sys/ioctl.h>
-#include <sys/proc.h>
-#include <sys/user.h>
-#include <sys/tty.h>
-#include <sys/uio.h>
-#include <sys/callout.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/syslog.h>
-#include <sys/fcntl.h>
-#include <sys/device.h>
-#include <machine/cpu.h>
-#include <dev/cons.h>
-#include <mvme68k/mvme68k/isr.h>
-#include <mvme68k/dev/iio.h>
-
-/*
- * Configuration routines for the internal I/O bus
- */
-void iioattach __P((struct device *, struct device *, void *));
-int iiomatch __P((struct device *, void *, void *));
-
-struct iiosoftc {
- struct device sc_dev;
-};
-
-struct cfdriver iiocd = {
- NULL, "iio", iiomatch, iioattach,
- DV_DULL, sizeof(struct iiosoftc), 0
-};
-
-int
-iiomatch(parent, cf, args)
- struct device *parent;
- void *cf;
- void *args;
-{
- return (1);
-}
-
-void
-iioattach(parent, self, args)
- struct device *parent, *self;
- void *args;
-{
- extern struct cfdata cfdata[];
- extern struct cfdriver pcccd;
- struct cfdata *cf, *pcccf = NULL;
-
- printf(" addr 0x%x\n", INTIOBASE);
-
- /*
- * attach the pcc first!
- */
- for (cf = cfdata; pcccf==NULL && cf->cf_driver; cf++) {
- if (cf->cf_driver != &pcccd)
- continue;
- pcccf = cf;
- }
- if (!pcccf)
- panic("no pcc device configured");
- config_attach(self, pcccf, NULL, NULL);
-
- while (config_found(self, NULL, NULL))
- ;
-}
-
-void
-iio_print(cf)
- struct cfdata *cf;
-{
- printf(" offset 0x%x", cf->cf_loc[0]);
- if (cf->cf_loc[1] > 0)
- printf(" ipl %d", cf->cf_loc[1]);
-}
diff --git a/sys/arch/mvme68k/dev/iio.h b/sys/arch/mvme68k/dev/iio.h
deleted file mode 100644
index 0a87c698cc7..00000000000
--- a/sys/arch/mvme68k/dev/iio.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* $NetBSD: iio.h,v 1.1.1.1 1995/07/25 23:12:11 chuck Exp $ */
-/* $Id: iio.h,v 1.1 1995/10/18 08:51:10 deraadt Exp $ */
-
-struct iioargs {
- int ic_addr;
- int ic_lev;
-};
-
-#define IIO_CFLOC_ADDR(cf) (IIOV(INTIOBASE + (cf)->cf_loc[0]))
-#define IIO_CFLOC_LEVEL(cf) ((cf)->cf_loc[1])
-
-/*
- * for the console we need zs phys addr
- */
-
-#define ZS0_PHYS (INTIOBASE + 0x3000)
-#define ZS1_PHYS (INTIOBASE + 0x3800)
-
diff --git a/sys/arch/mvme68k/mvme68k/clock.c b/sys/arch/mvme68k/mvme68k/clock.c
deleted file mode 100644
index 2279e6a066a..00000000000
--- a/sys/arch/mvme68k/mvme68k/clock.c
+++ /dev/null
@@ -1,367 +0,0 @@
-/* $NetBSD: clock.c,v 1.1.1.1 1995/07/25 23:11:56 chuck Exp $ */
-
-/*
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This software was developed by the Computer Systems Engineering group
- * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
- * contributed to Berkeley.
- *
- * 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, Lawrence Berkeley Laboratory.
- *
- * 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.
- *
- * @(#)clock.c 8.1 (Berkeley) 6/11/93
- */
-
-
-
-#include <sys/param.h>
-#include <sys/kernel.h>
-#include <sys/device.h>
-#include <mvme68k/mvme68k/clockreg.h>
-#include <mvme68k/dev/iio.h>
-#include <mvme68k/dev/pccreg.h>
-
-#include <machine/psl.h>
-#include <machine/cpu.h>
-
-#if defined(GPROF)
-#include <sys/gmon.h>
-#endif
-
-struct clocksc {
- struct device sc_dev;
- struct clockreg *sc_creg;
-};
-
-struct clockreg *RTCbase = NULL;
-u_char clock_lvl;
-
-/*
- * autoconf
- */
-
-void clockattach __P((struct device *, struct device *, void *));
-int clockmatch __P((struct device *, void *, void *));
-
-struct cfdriver clockcd = {
- NULL, "clock", clockmatch, clockattach,
- DV_DULL, sizeof(struct clocksc), 0
-};
-
-void clockintr __P((void *));
-
-int
-clockmatch(parent, vcf, args)
- struct device *parent;
- void *vcf, *args;
-{
- struct cfdata *cf = vcf;
-
- return RTCbase == NULL && !badbaddr((caddr_t) IIO_CFLOC_ADDR(cf));
-}
-
-void
-clockattach(parent, self, args)
- struct device *parent, *self;
- void *args;
-{
- iio_print(self->dv_cfdata);
-
- if (RTCbase)
- panic("too many clocks configured");
-
- RTCbase = (struct clockreg *) IIO_CFLOC_ADDR(self->dv_cfdata);
- clock_lvl = IIO_CFLOC_LEVEL(self->dv_cfdata);
- if (clock_lvl != CLOCK_LEVEL)
- panic("wrong interrupt level for clock");
- pccintr_establish(PCCV_TIMER1, clockintr, clock_lvl, NULL);
- clock_lvl = clock_lvl | PCC_IENABLE | PCC_TIMERACK;
-
- printf("\n");
-}
-
-/*
- * clockintr: ack intr and call hardclock
- */
-void
-clockintr(arg)
- void *arg;
-{
- sys_pcc->t1_int = clock_lvl;
- hardclock(arg);
-}
-
-/*
- * Set up real-time clock; we don't have a statistics clock at
- * present.
- */
-cpu_initclocks()
-{
- register struct clockreg *rtc = RTCbase;
-
- if (rtc == NULL)
- panic("clock not configured");
- if (hz != 100) {
- printf("%d Hz clock not available; using 100 Hz\n", hz);
- hz = 100;
- }
- sys_pcc->t1_pload = PCC_TIMER100HZ;
- sys_pcc->t1_cr = PCC_TIMERCLEAR;
- sys_pcc->t1_cr = PCC_TIMERSTART;
- sys_pcc->t1_int = clock_lvl;
-
- stathz = 0;
-}
-
-void
-setstatclockrate(newhz)
- int newhz;
-{
-}
-
-void
-statintr(fp)
- struct clockframe *fp;
-{
-}
-
-/*
- * Return the best possible estimate of the time in the timeval
- * to which tvp points. We do this by returning the current time
- * plus the amount of time since the last clock interrupt (clock.c:clkread).
- *
- * Check that this time is no less than any previously-reported time,
- * which could happen around the time of a clock adjustment. Just for fun,
- * we guarantee that the time will be greater than the value obtained by a
- * previous call.
- */
-
-void microtime(tvp)
- register struct timeval *tvp;
-{
- int s = splhigh();
- static struct timeval lasttime;
-
- *tvp = time;
- tvp->tv_usec;
- while (tvp->tv_usec > 1000000) {
- tvp->tv_sec++;
- tvp->tv_usec -= 1000000;
- }
- if (tvp->tv_sec == lasttime.tv_sec &&
- tvp->tv_usec <= lasttime.tv_usec &&
- (tvp->tv_usec = lasttime.tv_usec + 1) > 1000000) {
- tvp->tv_sec++;
- tvp->tv_usec -= 1000000;
- }
- lasttime = *tvp;
- splx(s);
-}
-
-/*
- * BCD to decimal and decimal to BCD.
- */
-#define FROMBCD(x) (((x) >> 4) * 10 + ((x) & 0xf))
-#define TOBCD(x) (((x) / 10 * 16) + ((x) % 10))
-
-#define SECDAY (24 * 60 * 60)
-#define SECYR (SECDAY * 365)
-#define LEAPYEAR(y) (((y) & 3) == 0)
-
-/*
- * This code is defunct after 2068.
- * Will Unix still be here then??
- */
-const short dayyr[12] =
- { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
-
-static u_long chiptotime(sec, min, hour, day, mon, year)
- register int sec, min, hour, day, mon, year;
-{
- register int days, yr;
-
- sec = FROMBCD(sec);
- min = FROMBCD(min);
- hour = FROMBCD(hour);
- day = FROMBCD(day);
- mon = FROMBCD(mon);
- year = FROMBCD(year) + YEAR0;
-
- /* simple sanity checks */
- if (year < 70 || mon < 1 || mon > 12 || day < 1 || day > 31)
- return (0);
- days = 0;
- for (yr = 70; yr < year; yr++)
- days += LEAPYEAR(yr) ? 366 : 365;
- days += dayyr[mon - 1] + day - 1;
- if (LEAPYEAR(yr) && mon > 2)
- days++;
- /* now have days since Jan 1, 1970; the rest is easy... */
- return (days * SECDAY + hour * 3600 + min * 60 + sec);
-}
-
-struct chiptime {
- int sec;
- int min;
- int hour;
- int wday;
- int day;
- int mon;
- int year;
-};
-
-timetochip(c)
- register struct chiptime *c;
-{
- register int t, t2, t3, now = time.tv_sec;
-
- /* compute the year */
- t2 = now / SECDAY;
- t3 = (t2 + 2) % 7; /* day of week */
- c->wday = TOBCD(t3 + 1);
-
- t = 69;
- while (t2 >= 0) { /* whittle off years */
- t3 = t2;
- t++;
- t2 -= LEAPYEAR(t) ? 366 : 365;
- }
- c->year = t;
-
- /* t3 = month + day; separate */
- t = LEAPYEAR(t);
- for (t2 = 1; t2 < 12; t2++)
- if (t3 < dayyr[t2] + (t && t2 > 1))
- break;
-
- /* t2 is month */
- c->mon = t2;
- c->day = t3 - dayyr[t2 - 1] + 1;
- if (t && t2 > 2)
- c->day--;
-
- /* the rest is easy */
- t = now % SECDAY;
- c->hour = t / 3600;
- t %= 3600;
- c->min = t / 60;
- c->sec = t % 60;
-
- c->sec = TOBCD(c->sec);
- c->min = TOBCD(c->min);
- c->hour = TOBCD(c->hour);
- c->day = TOBCD(c->day);
- c->mon = TOBCD(c->mon);
- c->year = TOBCD(c->year - YEAR0);
-}
-
-
-/*
- * Set up the system's time, given a `reasonable' time value.
- */
-inittodr(base)
- time_t base;
-{
- register struct clockreg *cl = RTCbase;
- int sec, min, hour, day, mon, year;
- int badbase = 0, waszero = base == 0;
-
- if (base < 5 * SECYR) {
- /*
- * If base is 0, assume filesystem time is just unknown
- * in stead of preposterous. Don't bark.
- */
- if (base != 0)
- printf("WARNING: preposterous time in file system\n");
- /* not going to use it anyway, if the chip is readable */
- base = 21*SECYR + 186*SECDAY + SECDAY/2;
- badbase = 1;
- }
- cl->cl_csr |= CLK_READ; /* enable read (stop time) */
- sec = cl->cl_sec;
- min = cl->cl_min;
- hour = cl->cl_hour;
- day = cl->cl_mday;
- mon = cl->cl_month;
- year = cl->cl_year;
- cl->cl_csr &= ~CLK_READ; /* time wears on */
- if ((time.tv_sec = chiptotime(sec, min, hour, day, mon, year)) == 0) {
- printf("WARNING: bad date in battery clock");
- /*
- * Believe the time in the file system for lack of
- * anything better, resetting the clock.
- */
- time.tv_sec = base;
- if (!badbase)
- resettodr();
- } else {
- int deltat = time.tv_sec - base;
-
- if (deltat < 0)
- deltat = -deltat;
- if (waszero || deltat < 2 * SECDAY)
- return;
- printf("WARNING: clock %s %d days",
- time.tv_sec < base ? "lost" : "gained", deltat / SECDAY);
- }
- printf(" -- CHECK AND RESET THE DATE!\n");
-}
-
-
-/*
- * Reset the clock based on the current time.
- * Used when the current clock is preposterous, when the time is changed,
- * and when rebooting. Do nothing if the time is not yet known, e.g.,
- * when crashing during autoconfig.
- */
-resettodr()
-{
- register struct clockreg *cl;
- struct chiptime c;
-
- if (!time.tv_sec || (cl = RTCbase) == NULL)
- return;
- timetochip(&c);
- cl->cl_csr |= CLK_WRITE; /* enable write */
- cl->cl_sec = c.sec;
- cl->cl_min = c.min;
- cl->cl_hour = c.hour;
- cl->cl_wday = c.wday;
- cl->cl_mday = c.day;
- cl->cl_month = c.mon;
- cl->cl_year = c.year;
- cl->cl_csr &= ~CLK_WRITE; /* load them up */
-}
-
diff --git a/sys/arch/mvme68k/mvme68k/clockreg.h b/sys/arch/mvme68k/mvme68k/clockreg.h
deleted file mode 100644
index 19998f8265c..00000000000
--- a/sys/arch/mvme68k/mvme68k/clockreg.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* $NetBSD: clockreg.h,v 1.1.1.1 1995/07/25 23:11:56 chuck Exp $ */
-
-/*
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This software was developed by the Computer Systems Engineering group
- * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
- * contributed to Berkeley.
- *
- * 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, Lawrence Berkeley Laboratory.
- *
- * 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.
- *
- * @(#)clockreg.h 8.1 (Berkeley) 6/11/93
- */
-
-/*
- * Mostek MK48T02 clock.
- */
-struct clockreg {
- volatile u_char cl_csr; /* control register */
- volatile u_char cl_sec; /* seconds (0..59; BCD) */
- volatile u_char cl_min; /* minutes (0..59; BCD) */
- volatile u_char cl_hour; /* hour (0..23; BCD) */
- volatile u_char cl_wday; /* weekday (1..7) */
- volatile u_char cl_mday; /* day in month (1..31; BCD) */
- volatile u_char cl_month; /* month (1..12; BCD) */
- volatile u_char cl_year; /* year (0..99; BCD) */
-};
-
-/* bits in cl_csr */
-#define CLK_WRITE 0x80 /* want to write */
-#define CLK_READ 0x40 /* want to read (freeze clock) */
-
-/*
- * Sun chose the year `68' as their base count, so that
- * cl_year==0 means 1968.
- */
-#define YEAR0 68
-
-
-/*
- * interrupt level for clock
- */
-
-#define CLOCK_LEVEL 5
diff --git a/sys/arch/mvme68k/mvme68k/isr.h b/sys/arch/mvme68k/mvme68k/isr.h
deleted file mode 100644
index 01caf41b0fb..00000000000
--- a/sys/arch/mvme68k/mvme68k/isr.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* $NetBSD: isr.h,v 1.1.1.1 1995/07/25 23:11:58 chuck Exp $ */
-
-/*
- * Copyright (c) 1982, 1993
- * The Regents of the University of California. 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
- * 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.
- *
- * @(#)isr.h 7.1 (Berkeley) 5/8/90
- */
-
-struct isr {
- struct isr *isr_forw;
- struct isr *isr_back;
- int (*isr_intr)();
- int isr_arg;
- int isr_ipl;
-};
-
-#define NISR 6
-#define ISRIPL(x) ((x) - 1)
diff --git a/sys/arch/mvme68k/mvme68k/mainbus.c b/sys/arch/mvme68k/mvme68k/mainbus.c
deleted file mode 100644
index 484e37d9580..00000000000
--- a/sys/arch/mvme68k/mvme68k/mainbus.c
+++ /dev/null
@@ -1,29 +0,0 @@
-void mainbus_attach __P((struct device *, struct device *, void *));
-int mainbus_match __P((struct device *, void *, void *));
-
-struct mainbus_softc {
- struct device sc_dev;
-};
-
-struct cfdriver mainbus_cd = {
- NULL, "mainbus_", mainbus_match, mainbus_attach,
- DV_DULL, sizeof(struct mainbus_softc), 0
-};
-
-int
-mainbus_match(parent, cf, args)
- struct device *parent;
- void *cf;
- void *args;
-{
- return 1;
-}
-
-void
-mainbus_attach(parent, self, args)
- struct device *parent, *self;
- void *args;
-{
- while (config_found(self, NULL, NULL))
- ;
-}
diff --git a/sys/arch/mvme68k/stand/libsa/exec.c b/sys/arch/mvme68k/stand/libsa/exec.c
deleted file mode 100644
index 343f4d1a0c0..00000000000
--- a/sys/arch/mvme68k/stand/libsa/exec.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/* $NetBSD: exec.c,v 1.1.1.1.2.1 1995/10/12 22:47:56 chuck Exp $ */
-
-/*-
- * Copyright (c) 1982, 1986, 1990, 1993
- * The Regents of the University of California. 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
- * 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.
- *
- * @(#)boot.c 8.1 (Berkeley) 6/10/93
- */
-
-#include <sys/param.h>
-#include <a.out.h>
-
-#include "stand.h"
-
-extern int debug;
-
-/*ARGSUSED*/
-int
-exec_mvme(file, loadaddr, boothowto)
- char *file;
- char *loadaddr;
- int boothowto;
-{
- register int io;
- struct exec x;
- int cc, magic;
- void (*entry)();
- register char *cp;
- register int *ip;
-
-#ifdef DEBUG
- printf("exec: file=%s loadaddr=0x%x\n", file, loadaddr);
-#endif
-
- io = open(file, 0);
- if (io < 0)
- return(-1);
-
- /*
- * Read in the exec header, and validate it.
- */
- if (read(io, (char *)&x, sizeof(x)) != sizeof(x))
- goto shread;
- if (N_BADMAG(x)) {
- errno = EFTYPE;
- goto closeout;
- }
-
- cp = loadaddr;
- magic = N_GETMAGIC(x);
- if (magic == ZMAGIC)
- cp += sizeof(x);
- entry = (void (*)())x.a_entry;
-
- /*
- * Leave a copy of the exec header before the text.
- * The kernel may use this to verify that the
- * symbols were loaded by this boot program.
- */
- bcopy(&x, cp - sizeof(x), sizeof(x));
-
- /*
- * Read in the text segment.
- */
- printf("%d", x.a_text);
- if (read(io, cp, x.a_text) != x.a_text)
- goto shread;
- cp += x.a_text;
-
- /*
- * NMAGIC may have a gap between text and data.
- */
- if (magic == NMAGIC) {
- register int mask = N_PAGSIZ(x) - 1;
- while ((int)cp & mask)
- *cp++ = 0;
- }
-
- /*
- * Read in the data segment.
- */
- printf("+%d", x.a_data);
- if (read(io, cp, x.a_data) != x.a_data)
- goto shread;
- cp += x.a_data;
-
- /*
- * Zero out the BSS section.
- * (Kernel doesn't care, but do it anyway.)
- */
- printf("+%d", x.a_bss);
- cc = x.a_bss;
- while ((int)cp & 3) {
- *cp++ = 0;
- --cc;
- }
- ip = (int*)cp;
- cp += cc;
- while ((char*)ip < cp)
- *ip++ = 0;
-
- /*
- * Read in the symbol table and strings.
- * (Always set the symtab size word.)
- */
- *ip++ = x.a_syms;
- cp = (char*) ip;
-
- if (x.a_syms > 0) {
-
- /* Symbol table and string table length word. */
- cc = x.a_syms;
- printf("+[%d", cc);
- cc += sizeof(int); /* strtab length too */
- if (read(io, cp, cc) != cc)
- goto shread;
- cp += x.a_syms;
- ip = (int*)cp; /* points to strtab length */
- cp += sizeof(int);
-
- /* String table. Length word includes itself. */
- cc = *ip;
- printf("+%d]", cc);
- cc -= sizeof(int);
- if (cc <= 0)
- goto shread;
- if (read(io, cp, cc) != cc)
- goto shread;
- cp += cc;
- }
- printf("=0x%x\n", cp - loadaddr);
- close(io);
-
- if (debug) {
- printf("Debug mode - enter c to continue\n");
- asm(" trap #0");
- }
-
- printf("Start @ 0x%x ...\n", (int)entry);
- (*entry)(boothowto);
- panic("exec returned");
-
-shread:
- printf("exec: short read\n");
- errno = EIO;
-closeout:
- close(io);
- return(-1);
-}
diff --git a/sys/arch/mvme68k/stand/libsa/if_lereg.h b/sys/arch/mvme68k/stand/libsa/if_lereg.h
deleted file mode 100644
index 3aee758cabc..00000000000
--- a/sys/arch/mvme68k/stand/libsa/if_lereg.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/* $NetBSD: if_lereg.h,v 1.1.1.1 1995/07/25 23:12:23 chuck Exp $ */
-
-/*-
- * Copyright (c) 1982, 1992, 1993
- * The Regents of the University of California. 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
- * 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.
- *
- * @(#)if_lereg.h 8.2 (Berkeley) 10/30/93
- */
-
-#define LEMTU 1518
-#define LEMINSIZE 60 /* should be 64 if mode DTCR is set */
-#define LERBUF 8
-#define LERBUFLOG2 3
-#define LE_RLEN (LERBUFLOG2 << 13)
-#define LETBUF 1
-#define LETBUFLOG2 0
-#define LE_TLEN (LETBUFLOG2 << 13)
-
-/* Local Area Network Controller for Ethernet (LANCE) registers */
-struct lereg1 {
- volatile u_short ler1_rdp; /* register data port */
- volatile u_short ler1_rap; /* register address port */
-};
-
-/* register addresses */
-#define LE_CSR0 0 /* Control and status register */
-#define LE_CSR1 1 /* low address of init block */
-#define LE_CSR2 2 /* high address of init block */
-#define LE_CSR3 3 /* Bus master and control */
-
-/* Control and status register 0 (csr0) */
-#define LE_C0_ERR 0x8000 /* error summary */
-#define LE_C0_BABL 0x4000 /* transmitter timeout error */
-#define LE_C0_CERR 0x2000 /* collision */
-#define LE_C0_MISS 0x1000 /* missed a packet */
-#define LE_C0_MERR 0x0800 /* memory error */
-#define LE_C0_RINT 0x0400 /* receiver interrupt */
-#define LE_C0_TINT 0x0200 /* transmitter interrupt */
-#define LE_C0_IDON 0x0100 /* initalization done */
-#define LE_C0_INTR 0x0080 /* interrupt condition */
-#define LE_C0_INEA 0x0040 /* interrupt enable */
-#define LE_C0_RXON 0x0020 /* receiver on */
-#define LE_C0_TXON 0x0010 /* transmitter on */
-#define LE_C0_TDMD 0x0008 /* transmit demand */
-#define LE_C0_STOP 0x0004 /* disable all external activity */
-#define LE_C0_STRT 0x0002 /* enable external activity */
-#define LE_C0_INIT 0x0001 /* begin initalization */
-
-#define LE_C0_BITS \
- "\20\20ERR\17BABL\16CERR\15MISS\14MERR\13RINT\
-\12TINT\11IDON\10INTR\07INEA\06RXON\05TXON\04TDMD\03STOP\02STRT\01INIT"
-
-/* Control and status register 3 (csr3) */
-#define LE_C3_BSWP 0x4 /* byte swap */
-#define LE_C3_ACON 0x2 /* ALE control, eh? */
-#define LE_C3_BCON 0x1 /* byte control */
-/*
- * Current size is 13,758 bytes with 8 x 1518 receive buffers and
- * 1 x 1518 transmit buffer.
- */
-struct lereg2 {
- /* initialization block */
- volatile u_short ler2_mode; /* mode */
- volatile u_char ler2_padr[6]; /* physical address */
-#ifdef new_code
- volatile u_short ler2_ladrf[4]; /* logical address filter */
-#else
- volatile u_long ler2_ladrf0; /* logical address filter */
- volatile u_long ler2_ladrf1; /* logical address filter */
-#endif
- volatile u_short ler2_rdra; /* receive descriptor addr */
- volatile u_short ler2_rlen; /* rda high and ring size */
- volatile u_short ler2_tdra; /* transmit descriptor addr */
- volatile u_short ler2_tlen; /* tda high and ring size */
- /* receive message descriptors. bits/hadr are byte order dependent. */
- struct lermd {
- volatile u_short rmd0; /* low address of packet */
- volatile u_char rmd1_bits; /* descriptor bits */
- volatile u_char rmd1_hadr; /* high address of packet */
- volatile short rmd2; /* buffer byte count */
- volatile u_short rmd3; /* message byte count */
- } ler2_rmd[LERBUF];
- /* transmit message descriptors */
- struct letmd {
- volatile u_short tmd0; /* low address of packet */
- volatile u_char tmd1_bits; /* descriptor bits */
- volatile u_char tmd1_hadr; /* high address of packet */
- volatile short tmd2; /* buffer byte count */
- volatile u_short tmd3; /* transmit error bits */
- } ler2_tmd[LETBUF];
- volatile char ler2_rbuf[LERBUF][LEMTU];
- volatile char ler2_tbuf[LETBUF][LEMTU];
-};
-
-/* Initialzation block (mode) */
-#define LE_MODE_PROM 0x8000 /* promiscuous mode */
-/* 0x7f80 reserved, must be zero */
-#define LE_MODE_INTL 0x0040 /* internal loopback */
-#define LE_MODE_DRTY 0x0020 /* disable retry */
-#define LE_MODE_COLL 0x0010 /* force a collision */
-#define LE_MODE_DTCR 0x0008 /* disable transmit CRC */
-#define LE_MODE_LOOP 0x0004 /* loopback mode */
-#define LE_MODE_DTX 0x0002 /* disable transmitter */
-#define LE_MODE_DRX 0x0001 /* disable receiver */
-#define LE_MODE_NORMAL 0 /* none of the above */
-
-
-/* Receive message descriptor 1 (rmd1_bits) */
-#define LE_R1_OWN 0x80 /* LANCE owns the packet */
-#define LE_R1_ERR 0x40 /* error summary */
-#define LE_R1_FRAM 0x20 /* framing error */
-#define LE_R1_OFLO 0x10 /* overflow error */
-#define LE_R1_CRC 0x08 /* CRC error */
-#define LE_R1_BUFF 0x04 /* buffer error */
-#define LE_R1_STP 0x02 /* start of packet */
-#define LE_R1_ENP 0x01 /* end of packet */
-
-#define LE_R1_BITS \
- "\20\10OWN\7ERR\6FRAM\5OFLO\4CRC\3BUFF\2STP\1ENP"
-
-/* Transmit message descriptor 1 (tmd1_bits) */
-#define LE_T1_OWN 0x80 /* LANCE owns the packet */
-#define LE_T1_ERR 0x40 /* error summary */
-#define LE_T1_MORE 0x10 /* multiple collisions */
-#define LE_T1_ONE 0x08 /* single collision */
-#define LE_T1_DEF 0x04 /* defferred transmit */
-#define LE_T1_STP 0x02 /* start of packet */
-#define LE_T1_ENP 0x01 /* end of packet */
-
-#define LE_T1_BITS \
- "\20\10OWN\7ERR\6RES\5MORE\4ONE\3DEF\2STP\1ENP"
-
-/* Transmit message descriptor 3 (tmd3) */
-#define LE_T3_BUFF 0x8000 /* buffer error */
-#define LE_T3_UFLO 0x4000 /* underflow error */
-#define LE_T3_LCOL 0x1000 /* late collision */
-#define LE_T3_LCAR 0x0800 /* loss of carrier */
-#define LE_T3_RTRY 0x0400 /* retry error */
-#define LE_T3_TDR_MASK 0x03ff /* time domain reflectometry counter */
-
-#define LE_XMD2_ONES 0xf000
-
-#define LE_T3_BITS \
- "\20\20BUFF\17UFLO\16RES\15LCOL\14LCAR\13RTRY"
-
-
-#define LE_ADDR_LOW_MASK (0xffff)
-
diff --git a/sys/arch/mvme68k/stand/libsa/machdep.c b/sys/arch/mvme68k/stand/libsa/machdep.c
deleted file mode 100644
index c47d2ecc43e..00000000000
--- a/sys/arch/mvme68k/stand/libsa/machdep.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/* $NetBSD: machdep.c,v 1.1.1.1 1995/07/25 23:12:22 chuck Exp $ */
-
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/exec.h>
-
-#include <sys/reboot.h>
-
-#include "config.h"
-
-/*
- * get_boothowto: boothowto for kernel
- */
-
-static int get_boothowto(cmd_flags)
-
-char *cmd_flags;
-
-{
- int result = 0;
-
- if (cmd_flags == NULL) return(0);
-
- while (*cmd_flags) {
- switch (*cmd_flags) {
- case 's': result |= RB_SINGLE; break;
- case 'a': result |= RB_ASKNAME; break;
- default: break;
- }
- cmd_flags++;
- }
-
- return(result);
-}
-
-/*
- * cmd_parse: parse command line
- * expected format: "b[oot] [kernel_name] [-flags]"
- */
-
-char *cmd_parse(cmd_buf, howto)
-char *cmd_buf;
-int *howto;
-{
- char *cmd_kernel, *cmd_flags;
- u_char *cp;
- *howto = 0;
-
- cp = cmd_buf+1; /* skip 'b' */
- while (*cp && *cp != ' ') cp++; /* skip to end or space */
- while (*cp == ' ') cp++; /* skip spaces */
- if (*cp == '\0') return(NULL); /* no args */
- if (*cp == '-') { /* only flags? */
- *howto = get_boothowto(cp);
- return(NULL);
- }
- cmd_kernel = cp; /* got kernel name */
- while (*cp && *cp != ' ') cp++; /* skip to end or space */
- if (*cp == ' ') *cp++ = 0; /* null terminate kernel */
- while (*cp == ' ') cp++; /* skip spaces */
- if (*cp == '\0') return(cmd_kernel); /* no flags */
- if (*cp != '-') return(cmd_kernel); /* garbage flags */
- cmd_flags = cp; /* save flags */
-
- while (*cp && *cp != ' ') cp++; /* skip to end or space */
- if (*cp == ' ') *cp++ = 0; /* null terminate flags */
-
- *howto = get_boothowto(cmd_flags);
-
- return(cmd_kernel);
-}
-
-
-/*
- * machdep_common_ether: get ethernet address
- */
-
-void machdep_common_ether(ether)
- unsigned char *ether;
-{
- caddr_t addr;
- int *ea = (int *) ETHER_ADDR;
- int e = *ea;
- if (( e & 0x2fffff00 ) == 0x2fffff00)
- panic("ERROR: ethernet address not set!\r\n");
- ether[0] = 0x08;
- ether[1] = 0x00;
- ether[2] = 0x3e;
- e = e >> 8;
- ether[5] = e & 0xff;
- e = e >> 8;
- ether[4] = e & 0xff;
- e = e >> 8;
- ether[3] = e;
-}
-
-/*
- * console i/o
- */
-
-/*
- * hardware
- */
-
-struct zs_hw {
- volatile u_char ctl;
- volatile u_char data;
-};
-
-struct zs_hw *zs = (struct zs_hw *)CONS_ZS_ADDR;
-
-/*
- * putchar: put char to console
- */
-
-void putchar(char c)
-{
- if (c == '\n') putchar('\r');
- zs->ctl = 0;
- while ((zs->ctl & 0x04) == 0) {
- zs->ctl = 0;
- }
- zs->ctl = 8;
- zs->ctl = c;
-}
-
-/*
- * getchar: get char from console
- */
-
-int
-getchar()
-{
- int i;
- while (1) {
- zs->ctl = 0;
- if ((zs->ctl & 0x1) != 0) break;
- for (i = 100 ; i > 0 ; i--)
- ;
- }
- zs->ctl = 8;
- return(zs->ctl);
-}
-
-/*
- * peekchar
- */
-
-peekchar()
-{
- zs->ctl = 0;
- return(zs->ctl & 0x1);
-}
-
diff --git a/sys/arch/mvme68k/stand/libsa/netif.c b/sys/arch/mvme68k/stand/libsa/netif.c
deleted file mode 100644
index e2838521a67..00000000000
--- a/sys/arch/mvme68k/stand/libsa/netif.c
+++ /dev/null
@@ -1,531 +0,0 @@
-/* $NetBSD: netif.c,v 1.1.1.1.2.1 1995/10/12 22:47:57 chuck Exp $ */
-
-/*
- * Copyright (c) 1995 Gordon W. Ross
- * 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. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- * 4. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Gordon W. Ross
- *
- * 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/param.h>
-#include <sys/socket.h>
-#include <string.h>
-#include <time.h>
-
-#include <net/if.h>
-
-#include <netinet/in.h>
-#include <netinet/if_ether.h>
-#include <netinet/in_systm.h>
-
-#include "stand.h"
-#include "net.h"
-#include "netif.h"
-#include "config.h"
-
-static struct netif netif_prom;
-void machdep_common_ether __P((u_char *));
-
-#ifdef NETIF_DEBUG
-int netif_debug;
-#endif
-
-struct iodesc sockets[SOPEN_MAX];
-
-struct iodesc *
-socktodesc(sock)
- int sock;
-{
- if (sock != 0) {
- return(NULL);
- }
- return (sockets);
-}
-
-int
-netif_open(machdep_hint)
- void *machdep_hint;
-{
- struct saioreq *si;
- struct iodesc *io;
- int error;
-
- /* find a free socket */
- io = sockets;
- if (io->io_netif) {
-#ifdef DEBUG
- printf("netif_open: device busy\n");
-#endif
- return (-1);
- }
- bzero(io, sizeof(*io));
-
- if ((netif_prom.devdata = le_init(io)) == NULL) {
- printf("le_init failed\n");
- return(-1);
- }
-
- io->io_netif = &netif_prom;
-
- return(0);
-}
-
-int
-netif_close(fd)
- int fd;
-{
- struct iodesc *io;
- struct netif *ni;
-
- if (fd != 0) {
- errno = EBADF;
- return(-1);
- }
-
- io = sockets;
- ni = io->io_netif;
- if (ni != NULL) {
- le_end(ni);
- ni->devdata = NULL;
- io->io_netif = NULL;
- }
- return(0);
-}
-
-/*
- * Send a packet. The ether header is already there.
- * Return the length sent (or -1 on error).
- */
-int
-netif_put(desc, pkt, len)
- struct iodesc *desc;
- void *pkt;
- size_t len;
-{
-
-#ifdef NETIF_DEBUG
- if (netif_debug) {
- struct ether_header *eh;
-
- printf("netif_put: desc=0x%x pkt=0x%x len=%d\n",
- desc, pkt, len);
- eh = pkt;
- printf("dst: %s ", ether_sprintf(eh->ether_dhost));
- printf("src: %s ", ether_sprintf(eh->ether_shost));
- printf("type: 0x%x\n", eh->ether_type & 0xFFFF);
- }
-#endif
-
- return(le_put(desc, pkt, len));
-}
-
-/*
- * Receive a packet, including the ether header.
- * Return the total length received (or -1 on error).
- */
-int
-netif_get(desc, pkt, maxlen, timo)
- struct iodesc *desc;
- void *pkt;
- size_t maxlen;
- time_t timo;
-{
- struct saioreq *si;
- struct saif *sif;
- char *dmabuf;
- int tick0, tmo_ticks;
- int len;
-
-#ifdef NETIF_DEBUG
- if (netif_debug)
- printf("netif_get: pkt=0x%x, maxlen=%d, tmo=%d\n",
- pkt, maxlen, timo);
-#endif
-
- len = le_get(desc, pkt, maxlen, timo);
-
-#ifdef NETIF_DEBUG
- if (netif_debug) {
- struct ether_header *eh = pkt;
-
- printf("dst: %s ", ether_sprintf(eh->ether_dhost));
- printf("src: %s ", ether_sprintf(eh->ether_shost));
- printf("type: 0x%x\n", eh->ether_type & 0xFFFF);
- }
-#endif
-
- return len;
-}
-
-/* the rest of this file imported from le_poll.c */
-
-/*
- * Copyright (c) 1993 Adam Glass
- * 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 Adam Glass.
- * 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 Adam Glass ``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.
- */
-
-#include "if_lereg.h"
-
-struct {
- struct lereg1 *sc_r1; /* LANCE registers */
- struct lereg2 *sc_r2; /* RAM */
- int next_rmd;
- int next_tmd;
-} le_softc;
-
-int le_debug = 0;
-
-/*
- * init le device. return 0 on failure, 1 if ok.
- */
-
-void *
-le_init(io)
- struct iodesc *io;
-{
- u_long *eram = (u_long *) ERAM_ADDR;
-
- if (le_debug)
- printf("le: le_init called\n");
- machdep_common_ether(io->myea);
- bzero(&le_softc, sizeof(le_softc));
- le_softc.sc_r1 = (struct lereg1 *) LANCE_REG_ADDR;
- le_softc.sc_r2 = (struct lereg2 *) (*eram - (1024*1024));
- le_reset(io->io_netif, io->myea);
-
- return(&le_softc);
-}
-
-/*
- * close device
- * XXX le_softc
- */
-
-void le_end(nif)
-
- struct netif *nif;
-{
- struct lereg1 *ler1 = le_softc.sc_r1;
-
- if (le_debug)
- printf("le: le_end called\n");
- ler1->ler1_rap = LE_CSR0;
- ler1->ler1_rdp = LE_C0_STOP;
-}
-
-
-/*
- * reset device
- * XXX le_softc
- */
-
-void le_reset(nif, myea)
- struct netif *nif;
- u_char *myea;
-{
- struct lereg1 *ler1 = le_softc.sc_r1;
- struct lereg2 *ler2 = le_softc.sc_r2;
- unsigned int a;
- int timo = 100000, stat, i;
-
- if (le_debug)
- printf("le: le_reset called\n");
- ler1->ler1_rap = LE_CSR0;
- ler1->ler1_rdp = LE_C0_STOP; /* do nothing until we are finished */
-
- bzero(ler2, sizeof(*ler2));
-
- ler2->ler2_mode = LE_MODE_NORMAL;
- ler2->ler2_padr[0] = myea[1];
- ler2->ler2_padr[1] = myea[0];
- ler2->ler2_padr[2] = myea[3];
- ler2->ler2_padr[3] = myea[2];
- ler2->ler2_padr[4] = myea[5];
- ler2->ler2_padr[5] = myea[4];
-
-
- ler2->ler2_ladrf0 = 0;
- ler2->ler2_ladrf1 = 0;
-
- a = (u_int)ler2->ler2_rmd;
- ler2->ler2_rlen = LE_RLEN | (a >> 16);
- ler2->ler2_rdra = a & LE_ADDR_LOW_MASK;
-
- a = (u_int)ler2->ler2_tmd;
- ler2->ler2_tlen = LE_TLEN | (a >> 16);
- ler2->ler2_tdra = a & LE_ADDR_LOW_MASK;
-
- ler1->ler1_rap = LE_CSR1;
- a = (u_int)ler2;
- ler1->ler1_rdp = a & LE_ADDR_LOW_MASK;
- ler1->ler1_rap = LE_CSR2;
- ler1->ler1_rdp = a >> 16;
-
- for (i = 0; i < LERBUF; i++) {
- a = (u_int)&ler2->ler2_rbuf[i];
- ler2->ler2_rmd[i].rmd0 = a & LE_ADDR_LOW_MASK;
- ler2->ler2_rmd[i].rmd1_bits = LE_R1_OWN;
- ler2->ler2_rmd[i].rmd1_hadr = a >> 16;
- ler2->ler2_rmd[i].rmd2 = -LEMTU;
- ler2->ler2_rmd[i].rmd3 = 0;
- }
- for (i = 0; i < LETBUF; i++) {
- a = (u_int)&ler2->ler2_tbuf[i];
- ler2->ler2_tmd[i].tmd0 = a & LE_ADDR_LOW_MASK;
- ler2->ler2_tmd[i].tmd1_bits = 0;
- ler2->ler2_tmd[i].tmd1_hadr = a >> 16;
- ler2->ler2_tmd[i].tmd2 = 0;
- ler2->ler2_tmd[i].tmd3 = 0;
- }
-
- ler1->ler1_rap = LE_CSR3;
- ler1->ler1_rdp = LE_C3_BSWP;
-
- ler1->ler1_rap = LE_CSR0;
- ler1->ler1_rdp = LE_C0_INIT;
- do {
- if (--timo == 0) {
- printf("le: init timeout, stat = 0x%x\n", stat);
- break;
- }
- stat = ler1->ler1_rdp;
- } while ((stat & LE_C0_IDON) == 0);
-
- ler1->ler1_rdp = LE_C0_IDON;
- le_softc.next_rmd = 0;
- le_softc.next_tmd = 0;
- ler1->ler1_rap = LE_CSR0;
- ler1->ler1_rdp = LE_C0_STRT;
-}
-
-/*
- * le_error
- * XXX le_softc
- */
-
-void le_error(nif, str, vler1)
- struct netif *nif;
- char *str;
- volatile void *vler1;
-{
- volatile struct lereg1 *ler1 = vler1;
- /* ler1->ler1_rap = LE_CSRO done in caller */
- if (ler1->ler1_rdp & LE_C0_BABL)
- panic("le: been babbling, found by '%s'\n", str);
- if (ler1->ler1_rdp & LE_C0_CERR) {
- ler1->ler1_rdp = LE_C0_CERR;
- }
- if (ler1->ler1_rdp & LE_C0_MISS) {
- ler1->ler1_rdp = LE_C0_MISS;
- }
- if (ler1->ler1_rdp & LE_C0_MERR) {
- printf("le: memory error in '%s'\n", str);
- panic("memory error");
- }
-}
-
-/*
- * put a packet
- * XXX le_softc
- */
-
-int le_put(desc, pkt, len)
- struct iodesc *desc;
- void *pkt;
- int len;
-{
- volatile struct lereg1 *ler1 = le_softc.sc_r1;
- volatile struct lereg2 *ler2 = le_softc.sc_r2;
- volatile struct letmd *tmd;
- int timo = 100000, stat, i;
- unsigned int a;
-
- ler1->ler1_rap = LE_CSR0;
- if (ler1->ler1_rdp & LE_C0_ERR)
- le_error(desc->io_netif, "le_put(way before xmit)", ler1);
- tmd = &ler2->ler2_tmd[le_softc.next_tmd];
- while(tmd->tmd1_bits & LE_T1_OWN) {
- printf("le: output buffer busy\n");
- }
- bcopy(pkt, ler2->ler2_tbuf[le_softc.next_tmd], len);
- if (len < 64)
- tmd->tmd2 = -64;
- else
- tmd->tmd2 = -len;
- tmd->tmd3 = 0;
- if (ler1->ler1_rdp & LE_C0_ERR)
- le_error(desc->io_netif, "le_put(before xmit)", ler1);
- tmd->tmd1_bits = LE_T1_STP | LE_T1_ENP | LE_T1_OWN;
- a = (u_int)&ler2->ler2_tbuf[le_softc.next_tmd];
- tmd->tmd0 = a & LE_ADDR_LOW_MASK;
- tmd->tmd1_hadr = a >> 16;
- ler1->ler1_rdp = LE_C0_TDMD;
- if (ler1->ler1_rdp & LE_C0_ERR)
- le_error(desc->io_netif, "le_put(after xmit)", ler1);
- do {
- if (--timo == 0) {
- printf("le: transmit timeout, stat = 0x%x\n", stat);
- if (ler1->ler1_rdp & LE_C0_ERR)
- le_error(desc->io_netif, "le_put(timeout)", ler1);
- break;
- }
- stat = ler1->ler1_rdp;
- } while ((stat & LE_C0_TINT) == 0);
- ler1->ler1_rdp = LE_C0_TINT;
- if (ler1->ler1_rdp & LE_C0_ERR) {
- if ((ler1->ler1_rdp & (LE_C0_BABL|LE_C0_CERR|LE_C0_MISS|LE_C0_MERR)) !=
- LE_C0_CERR)
- printf("le_put: xmit error, buf %d\n", le_softc.next_tmd);
- le_error(desc->io_netif, "le_put(xmit error)", ler1);
- }
- le_softc.next_tmd = 0;
-/* (le_softc.next_tmd == (LETBUF - 1)) ? 0 : le_softc.next_tmd + 1;*/
- if (tmd->tmd1_bits & LE_T1_ERR) {
- printf("le: transmit error, error = 0x%x\n", tmd->tmd3);
- return -1;
- }
- if (le_debug) {
- printf("le: le_put() successful: sent %d\n", len);
- printf("le: le_put(): tmd1_bits: %x tmd3: %x\n",
- (unsigned int) tmd->tmd1_bits,
- (unsigned int) tmd->tmd3);
- }
- return len;
-}
-
-
-/*
- * le_get
- */
-
-int le_get(desc, pkt, len, timeout)
- struct iodesc *desc;
- void *pkt;
- int len;
- time_t timeout;
-{
- time_t t;
- int cc;
-
- t = getsecs();
- cc = 0;
- while (((getsecs() - t) < timeout) && !cc) {
- cc = le_poll(desc, pkt, len);
- }
- return cc;
-}
-
-
-/*
- * le_poll
- * XXX softc
- */
-
-int le_poll(desc, pkt, len)
- struct iodesc *desc;
- void *pkt;
- int len;
-{
- struct lereg1 *ler1 = le_softc.sc_r1;
- struct lereg2 *ler2 = le_softc.sc_r2;
- unsigned int a;
- int length;
- struct lermd *rmd;
-
-
- ler1->ler1_rap = LE_CSR0;
- if ((ler1->ler1_rdp & LE_C0_RINT) != 0)
- ler1->ler1_rdp = LE_C0_RINT;
- rmd = &ler2->ler2_rmd[le_softc.next_rmd];
- if (rmd->rmd1_bits & LE_R1_OWN) {
- return(0);
- }
- if (ler1->ler1_rdp & LE_C0_ERR)
- le_error(desc->io_netif, "le_poll", ler1);
- if (rmd->rmd1_bits & LE_R1_ERR) {
- printf("le_poll: rmd status 0x%x\n", rmd->rmd1_bits);
- length = 0;
- goto cleanup;
- }
- if ((rmd->rmd1_bits & (LE_R1_STP|LE_R1_ENP)) != (LE_R1_STP|LE_R1_ENP))
- panic("le_poll: chained packet\n");
-
- length = rmd->rmd3;
- if (length >= LEMTU) {
- length = 0;
- panic("csr0 when bad things happen: %x\n", ler1->ler1_rdp);
- goto cleanup;
- }
- if (!length) goto cleanup;
- length -= 4;
- if (length > 0) {
-
- /*
- * if buffer is smaller than the packet truncate it.
- * (is this wise?)
- */
- if (length > len)
- length = len;
-
- bcopy((void *)&ler2->ler2_rbuf[le_softc.next_rmd], pkt, length);
- }
-
- cleanup:
- a = (u_int)&ler2->ler2_rbuf[le_softc.next_rmd];
- rmd->rmd0 = a & LE_ADDR_LOW_MASK;
- rmd->rmd1_hadr = a >> 16;
- rmd->rmd2 = -LEMTU;
- le_softc.next_rmd =
- (le_softc.next_rmd == (LERBUF - 1)) ? 0 : (le_softc.next_rmd + 1);
- rmd->rmd1_bits = LE_R1_OWN;
- return length;
-}
diff --git a/sys/arch/mvme68k/stand/libsa/netif.h b/sys/arch/mvme68k/stand/libsa/netif.h
deleted file mode 100644
index 680eed00f63..00000000000
--- a/sys/arch/mvme68k/stand/libsa/netif.h
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#include "iodesc.h"
-
-struct netif {
- void *devdata;
-};
-
-ssize_t netif_get __P((struct iodesc *, void *, size_t, time_t));
-ssize_t netif_put __P((struct iodesc *, void *, size_t));
-
-int netif_open __P((void *));
-int netif_close __P((int));
-
-struct iodesc *socktodesc __P((int));
-
-void le_end __P((struct netif *));
-void le_error __P((struct netif *, char *, volatile void *));
-int le_get __P((struct iodesc *, void *, int, time_t));
-void *le_init __P((struct iodesc *));
-int le_poll __P((struct iodesc *, void *, int));
-int le_put __P((struct iodesc *, void *, int));
-void le_reset __P((struct netif *, u_char *));
diff --git a/sys/arch/mvme68k/stand/sboot/console.c b/sys/arch/mvme68k/stand/sboot/console.c
deleted file mode 100644
index 19f01dcada8..00000000000
--- a/sys/arch/mvme68k/stand/sboot/console.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- *
- * Copyright (c) 1995 Charles D. Cranor and Seth Widoff
- * 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 Charles D. Cranor
- * and Seth Widoff.
- * 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.
- */
-/*
- * console i/o
- */
-
-#include "sboot.h"
-
-/*
- * hardware
- */
-
-struct zs_hw {
- volatile u_char ctl;
- volatile u_char data;
-};
-
-struct zs_hw *zs = (struct zs_hw *)CONS_ZS_ADDR;
-
-/*
- * consinit: init console
- */
-
-consinit()
-
-{
- register int mark = time();
- register int rr1;
- while (1) {
- if (time() > mark + 5) break;
- zs->ctl = 1; rr1 = zs->ctl;
- zs->ctl = 0;
- if ((rr1 & 0x1) == 1 && (zs->ctl & 0x4) == 4) break; /* zs_drain! */
- }
- zs->ctl = 9; zs->ctl = 0x00; /* clear interrupt */
- zs->ctl = 4; zs->ctl = 0x44; /* 16x clk, 1 stop bit */
- zs->ctl = 5; zs->ctl = 0xea; /* DTR on, 8 bit xmit, xmit on, RTS on */
- zs->ctl = 3; zs->ctl = 0xc1; /* 8 bit recv, auto cd_cts, recv on */
- zs->ctl = 1; zs->ctl = 0x00; /* no intrs */
- zs->ctl = 2; zs->ctl = 0x00; /* no vector */
- zs->ctl = 10; zs->ctl = 0x00; /* */
- zs->ctl = 11; zs->ctl = 0x50; /* clocking options */
- zs->ctl = 12; zs->ctl = 0x0e; /* 9600 baud, part 1 */
- zs->ctl = 13; zs->ctl = 0x00; /* 9600 baud, part 2 */
- zs->ctl = 14; zs->ctl = 0x03; /* more clocking options */
- zs->ctl = 15; zs->ctl = 0x00; /* clear intrs */
-}
-
-/*
- * putchar: put char to console
- */
-
-void putchar(char c)
-{
- if (c == '\n') putchar('\r'); /* avoid the need for \r\n in printf */
- zs->ctl = 0;
- while ((zs->ctl & 0x04) == 0) {
- zs->ctl = 0;
- }
- zs->ctl = 8;
- zs->ctl = c;
-}
-
-/*
- * cngetc: get 1 char from console
- */
-
-char cngetc ()
-{
- zs->ctl = 0;
- while ((zs->ctl & 0x1) == 0) {
- zs->ctl = 0;
- }
- zs->ctl = 8;
- return zs->ctl;
-}
-
-/*
- * puts: put string to console
- */
-
-void puts ( char * str )
-{
- while ( *str != '\0' ) {
- putchar(*str);
- str++;
- }
-}
-
-/*
- * ngets: get string from console
- */
-
-void ngets ( char * str, int size )
-{
- int i = 0;
- while ( (i < size - 1) && (str[i] = cngetc()) != '\r') {
- if ( str[i] == '\b' || str[i] == 0x7F ) {
- if ( i == 0) continue;
- i--;
- puts("\b \b");
- continue;
- }
- putchar(str[i]);
- i++;
- }
- puts("\n");
- str[i] = '\0';
-}
-
diff --git a/sys/arch/mvme68k/stand/sboot/le_poll.c b/sys/arch/mvme68k/stand/sboot/le_poll.c
deleted file mode 100644
index a958b746a36..00000000000
--- a/sys/arch/mvme68k/stand/sboot/le_poll.c
+++ /dev/null
@@ -1,320 +0,0 @@
-/* $NetBSD: le_poll.c,v 1.1.1.1 1995/07/25 23:12:31 chuck Exp $ */
-
-/*
- * Copyright (c) 1993 Adam Glass
- * 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 Adam Glass.
- * 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 Adam Glass ``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.
- */
-
-#include "sboot.h"
-#include "if_lereg.h"
-
-struct {
- struct lereg1 *sc_r1; /* LANCE registers */
- struct lereg2 *sc_r2; /* RAM */
- int next_rmd;
- int next_tmd;
-} le_softc;
-
-void le_error(str, ler1)
- char *str;
- struct lereg1 *ler1;
-{
- /* ler1->ler1_rap = LE_CSRO done in caller */
- if (ler1->ler1_rdp & LE_C0_BABL) {
- printf("le0: been babbling, found by '%s'\n", str);
- callrom();
- }
- if (ler1->ler1_rdp & LE_C0_CERR) {
- ler1->ler1_rdp = LE_C0_CERR;
- }
- if (ler1->ler1_rdp & LE_C0_MISS) {
- ler1->ler1_rdp = LE_C0_MISS;
- }
- if (ler1->ler1_rdp & LE_C0_MERR) {
- printf("le0: memory error in '%s'\n", str);
- callrom();
- }
-
-}
-
-void le_reset(myea)
- u_char *myea;
-{
- struct lereg1 *ler1 = le_softc.sc_r1;
- struct lereg2 *ler2 = le_softc.sc_r2;
- unsigned int a;
- int timo = 100000, stat, i;
-
- ler1->ler1_rap = LE_CSR0;
- ler1->ler1_rdp = LE_C0_STOP; /* do nothing until we are finished */
-
- bzero(ler2, sizeof(*ler2));
-
- ler2->ler2_mode = LE_MODE_NORMAL;
- ler2->ler2_padr[0] = myea[1];
- ler2->ler2_padr[1] = myea[0];
- ler2->ler2_padr[2] = myea[3];
- ler2->ler2_padr[3] = myea[2];
- ler2->ler2_padr[4] = myea[5];
- ler2->ler2_padr[5] = myea[4];
-
-
- ler2->ler2_ladrf0 = 0;
- ler2->ler2_ladrf1 = 0;
-
- a = (u_int)ler2->ler2_rmd;
- ler2->ler2_rlen = LE_RLEN | (a >> 16);
- ler2->ler2_rdra = a & LE_ADDR_LOW_MASK;
-
- a = (u_int)ler2->ler2_tmd;
- ler2->ler2_tlen = LE_TLEN | (a >> 16);
- ler2->ler2_tdra = a & LE_ADDR_LOW_MASK;
-
- ler1->ler1_rap = LE_CSR1;
- a = (u_int)ler2;
- ler1->ler1_rdp = a & LE_ADDR_LOW_MASK;
- ler1->ler1_rap = LE_CSR2;
- ler1->ler1_rdp = a >> 16;
-
- for (i = 0; i < LERBUF; i++) {
- a = (u_int)&ler2->ler2_rbuf[i];
- ler2->ler2_rmd[i].rmd0 = a & LE_ADDR_LOW_MASK;
- ler2->ler2_rmd[i].rmd1_bits = LE_R1_OWN;
- ler2->ler2_rmd[i].rmd1_hadr = a >> 16;
- ler2->ler2_rmd[i].rmd2 = -LEMTU;
- ler2->ler2_rmd[i].rmd3 = 0;
- }
- for (i = 0; i < LETBUF; i++) {
- a = (u_int)&ler2->ler2_tbuf[i];
- ler2->ler2_tmd[i].tmd0 = a & LE_ADDR_LOW_MASK;
- ler2->ler2_tmd[i].tmd1_bits = 0;
- ler2->ler2_tmd[i].tmd1_hadr = a >> 16;
- ler2->ler2_tmd[i].tmd2 = 0;
- ler2->ler2_tmd[i].tmd3 = 0;
- }
-
- ler1->ler1_rap = LE_CSR3;
- ler1->ler1_rdp = LE_C3_BSWP;
-
- ler1->ler1_rap = LE_CSR0;
- ler1->ler1_rdp = LE_C0_INIT;
- do {
- if (--timo == 0) {
- printf("le0: init timeout, stat = 0x%x\n", stat);
- break;
- }
- stat = ler1->ler1_rdp;
- } while ((stat & LE_C0_IDON) == 0);
-
- ler1->ler1_rdp = LE_C0_IDON;
- le_softc.next_rmd = 0;
- le_softc.next_tmd = 0;
- ler1->ler1_rap = LE_CSR0;
- ler1->ler1_rdp = LE_C0_STRT;
-}
-
-int le_poll(pkt, len)
- void *pkt;
- int len;
-{
- struct lereg1 *ler1 = le_softc.sc_r1;
- struct lereg2 *ler2 = le_softc.sc_r2;
- unsigned int a;
- int length;
- struct lermd *rmd;
-
- ler1->ler1_rap = LE_CSR0;
- if ((ler1->ler1_rdp & LE_C0_RINT) != 0)
- ler1->ler1_rdp = LE_C0_RINT;
- rmd = &ler2->ler2_rmd[le_softc.next_rmd];
- if (rmd->rmd1_bits & LE_R1_OWN) {
- return(0);
- }
- if (ler1->ler1_rdp & LE_C0_ERR)
- le_error("le_poll", ler1);
- if (rmd->rmd1_bits & LE_R1_ERR) {
- printf("le0_poll: rmd status 0x%x\n", rmd->rmd1_bits);
- length = 0;
- goto cleanup;
- }
- if ((rmd->rmd1_bits & (LE_R1_STP|LE_R1_ENP)) != (LE_R1_STP|LE_R1_ENP)) {
- printf("le_poll: chained packet\n");
- callrom();
- }
-
- length = rmd->rmd3;
- if (length >= LEMTU) {
- length = 0;
- printf("csr0 when bad things happen: %x\n", ler1->ler1_rdp);
- callrom();
- goto cleanup;
- }
- if (!length) goto cleanup;
- length -= 4;
- if (length > 0)
- bcopy((char *)&ler2->ler2_rbuf[le_softc.next_rmd], pkt, length);
-
- cleanup:
- a = (u_int)&ler2->ler2_rbuf[le_softc.next_rmd];
- rmd->rmd0 = a & LE_ADDR_LOW_MASK;
- rmd->rmd1_hadr = a >> 16;
- rmd->rmd2 = -LEMTU;
- le_softc.next_rmd =
- (le_softc.next_rmd == (LERBUF - 1)) ? 0 : (le_softc.next_rmd + 1);
- rmd->rmd1_bits = LE_R1_OWN;
- return length;
-}
-
-int le_put(pkt, len)
- u_char *pkt;
- size_t len;
-{
- struct lereg1 *ler1 = le_softc.sc_r1;
- struct lereg2 *ler2 = le_softc.sc_r2;
- struct letmd *tmd;
- int timo = 100000, stat, i;
- unsigned int a;
-
- ler1->ler1_rap = LE_CSR0;
- if (ler1->ler1_rdp & LE_C0_ERR)
- le_error("le_put(way before xmit)", ler1);
- tmd = &ler2->ler2_tmd[le_softc.next_tmd];
- while(tmd->tmd1_bits & LE_T1_OWN) {
- printf("le0: output buffer busy\n");
- }
- bcopy(pkt, (char *)ler2->ler2_tbuf[le_softc.next_tmd], len);
- if (len < 64)
- tmd->tmd2 = -64;
- else
- tmd->tmd2 = -len;
- tmd->tmd3 = 0;
- if (ler1->ler1_rdp & LE_C0_ERR)
- le_error("le_put(before xmit)", ler1);
- tmd->tmd1_bits = LE_T1_STP | LE_T1_ENP | LE_T1_OWN;
- a = (u_int)&ler2->ler2_tbuf[le_softc.next_tmd];
- tmd->tmd0 = a & LE_ADDR_LOW_MASK;
- tmd->tmd1_hadr = a >> 16;
- ler1->ler1_rdp = LE_C0_TDMD;
- if (ler1->ler1_rdp & LE_C0_ERR)
- le_error("le_put(after xmit)", ler1);
- do {
- if (--timo == 0) {
- printf("le0: transmit timeout, stat = 0x%x\n",
- stat);
- if (ler1->ler1_rdp & LE_C0_ERR)
- le_error("le_put(timeout)", ler1);
- break;
- }
- stat = ler1->ler1_rdp;
- } while ((stat & LE_C0_TINT) == 0);
- ler1->ler1_rdp = LE_C0_TINT;
- if (ler1->ler1_rdp & LE_C0_ERR) {
- if ((ler1->ler1_rdp & (LE_C0_BABL|LE_C0_CERR|LE_C0_MISS|LE_C0_MERR)) !=
- LE_C0_CERR)
- printf("le_put: xmit error, buf %d\n", le_softc.next_tmd);
- le_error("le_put(xmit error)", ler1);
- }
- le_softc.next_tmd = 0;
-/* (le_softc.next_tmd == (LETBUF - 1)) ? 0 : le_softc.next_tmd + 1;*/
- if (tmd->tmd1_bits & LE_T1_ERR) {
- printf("le0: transmit error, error = 0x%x\n",
- tmd->tmd3);
- return -1;
- }
- return len;
-}
-
-int le_get(pkt, len, timeout)
- u_char *pkt;
- size_t len;
- u_long timeout;
-{
- int cc;
- int now, then;
- int stopat = time() + timeout;
- then = 0;
-
- cc = 0;
- while ((now = time()) < stopat && !cc) {
- cc = le_poll(pkt, len);
- if (then != now) {
-#ifdef LE_DEBUG
- printf("%d \r", stopat - now);
-#endif
- then = now;
- }
- if (cc && (pkt[0] != myea[0] || pkt[1] != myea[1] ||
- pkt[2] != myea[2] || pkt[3] != myea[3] ||
- pkt[4] != myea[4] || pkt[5] != myea[5])) {
- cc = 0; /* ignore broadcast / multicast */
-#ifdef LE_DEBUG
- printf("reject (%d sec left)\n", stopat - now);
-#endif
- }
- }
-#ifdef LE_DEBUG
- printf("\n");
-#endif
- return cc;
-}
-
-void le_init()
-{
- caddr_t addr;
- int *ea = (int *) LANCE_ADDR;
- u_long *eram = (u_long *) ERAM_ADDR;
- u_long e = *ea;
- if (( e & 0x2fffff00 ) == 0x2fffff00) {
- printf("ERROR: ethernet address not set! Use LSAD.\n");
- callrom();
- }
- myea[0] = 0x08;
- myea[1] = 0x00;
- myea[2] = 0x3e;
- e = e >> 8;
- myea[5] = e & 0xff;
- e = e >> 8;
- myea[4] = e & 0xff;
- e = e >> 8;
- myea[3] = e;
- printf("le0: ethernet address: %x:%x:%x:%x:%x:%x\n",
- myea[0], myea[1], myea[2], myea[3], myea[4], myea[5]);
- bzero(&le_softc, sizeof(le_softc));
- le_softc.sc_r1 = (struct lereg1 *) LANCE_REG_ADDR;
- le_softc.sc_r2 = (struct lereg2 *)(*eram - (1024*1024));
- le_reset(myea);
-}
-
-void le_end()
-{
- struct lereg1 *ler1 = le_softc.sc_r1;
-
- ler1->ler1_rap = LE_CSR0;
- ler1->ler1_rdp = LE_C0_STOP;
-}
diff --git a/sys/arch/mvme68k/stand/sboot/libc_sa.c b/sys/arch/mvme68k/stand/sboot/libc_sa.c
deleted file mode 100644
index 5a178ad2930..00000000000
--- a/sys/arch/mvme68k/stand/sboot/libc_sa.c
+++ /dev/null
@@ -1,348 +0,0 @@
-/* $NetBSD: libc_sa.c,v 1.1.1.1 1995/07/25 23:12:33 chuck Exp $ */
-
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * 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.
- */
-
-#include "sboot.h"
-
-/*
- * sizeof(word) MUST BE A POWER OF TWO
- * SO THAT wmask BELOW IS ALL ONES
- */
-typedef int word; /* "word" used for optimal copy speed */
-
-#define wsize sizeof(word)
-#define wmask (wsize - 1)
-
-/*
- * Copy a block of memory, handling overlap.
- * This is the routine that actually implements
- * (the portable versions of) bcopy, memcpy, and memmove.
- */
-void
-bcopy(src0, dst0, length)
- void *dst0;
- const void *src0;
- register size_t length;
-{
- register char *dst = dst0;
- register const char *src = src0;
- register size_t t;
-
- if (length == 0 || dst == src) /* nothing to do */
- goto done;
-
- /*
- * Macros: loop-t-times; and loop-t-times, t>0
- */
-#define TLOOP(s) if (t) TLOOP1(s)
-#define TLOOP1(s) do { s; } while (--t)
-
- if ((unsigned long)dst < (unsigned long)src) {
- /*
- * Copy forward.
- */
- t = (long)src; /* only need low bits */
- if ((t | (long)dst) & wmask) {
- /*
- * Try to align operands. This cannot be done
- * unless the low bits match.
- */
- if ((t ^ (long)dst) & wmask || length < wsize)
- t = length;
- else
- t = wsize - (t & wmask);
- length -= t;
- TLOOP1(*dst++ = *src++);
- }
- /*
- * Copy whole words, then mop up any trailing bytes.
- */
- t = length / wsize;
- TLOOP(*(word *)dst = *(word *)src; src += wsize; dst += wsize);
- t = length & wmask;
- TLOOP(*dst++ = *src++);
- } else {
- /*
- * Copy backwards. Otherwise essentially the same.
- * Alignment works as before, except that it takes
- * (t&wmask) bytes to align, not wsize-(t&wmask).
- */
- src += length;
- dst += length;
- t = (long)src;
- if ((t | (long)dst) & wmask) {
- if ((t ^ (long)dst) & wmask || length <= wsize)
- t = length;
- else
- t &= wmask;
- length -= t;
- TLOOP1(*--dst = *--src);
- }
- t = length / wsize;
- TLOOP(src -= wsize; dst -= wsize; *(word *)dst = *(word *)src);
- t = length & wmask;
- TLOOP(*--dst = *--src);
- }
-done:
- return;
-}
-
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * 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.
- */
-
-void *
-bzero(dst, n)
- void *dst;
- register size_t n;
-{
-
- if (n != 0) {
- register char *d = dst;
-
- do
- *d++ = 0;
- while (--n != 0);
- }
- return (dst);
-}
-/* $NetBSD: libc_sa.c,v 1.1.1.1 1995/07/25 23:12:33 chuck Exp $ */
-
-/*-
- * Copyright (c) 1991 The Regents of the University of California.
- * 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
- * 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.
- *
- * @(#)printf.c 5.6 (Berkeley) 5/25/91
- */
-
-/*
- * Scaled down version of printf(3).
- *
- * One additional format:
- *
- * The format %b is supported to decode error registers.
- * Its usage is:
- *
- * printf("reg=%b\n", regval, "<base><arg>*");
- *
- * where <base> is the output base expressed as a control character, e.g.
- * \10 gives octal; \20 gives hex. Each arg is a sequence of characters,
- * the first of which gives the bit number to be inspected (origin 1), and
- * the next characters (up to a control character, i.e. a character <= 32),
- * give the name of the register. Thus:
- *
- * printf("reg=%b\n", 3, "\10\2BITTWO\1BITONE\n");
- *
- * would produce output:
- *
- * reg=3<BITTWO,BITONE>
- */
-
-/*
- * Note that stdarg.h and the ANSI style va_start macro is used for both
- * ANSI and traditional C compilers.
- */
-#define _KERNEL
-#include <machine/stdarg.h>
-#undef _KERNEL
-
-static void
-kprintn(ul, base)
- unsigned long ul;
- int base;
-{
- /* hold a long in base 8 */
- char *p, buf[(sizeof(long) * 8 / 3) + 1];
-
- p = buf;
- do {
- *p++ = "0123456789abcdef"[ul % base];
- } while (ul /= base);
- do {
- putchar(*--p);
- } while (p > buf);
-}
-
-void
-#if __STDC__
-printf(const char *fmt, ...)
-#else
-printf(fmt /* , va_alist */)
- char *fmt;
-#endif
-{
- register char *p;
- register int ch, n;
- unsigned long ul;
- int lflag, set;
- va_list ap;
-
- va_start(ap, fmt);
- for (;;) {
- while ((ch = *fmt++) != '%') {
- if (ch == '\0')
- return;
- putchar(ch);
- }
- lflag = 0;
-reswitch: switch (ch = *fmt++) {
- case 'l':
- lflag = 1;
- goto reswitch;
- case 'b':
- ul = va_arg(ap, int);
- p = va_arg(ap, char *);
- kprintn(ul, *p++);
-
- if (!ul)
- break;
-
- for (set = 0; n = *p++;) {
- if (ul & (1 << (n - 1))) {
- putchar(set ? ',' : '<');
- for (; (n = *p) > ' '; ++p)
- putchar(n);
- set = 1;
- } else
- for (; *p > ' '; ++p);
- }
- if (set)
- putchar('>');
- break;
- case 'c':
- ch = va_arg(ap, int);
- putchar(ch & 0x7f);
- break;
- case 's':
- p = va_arg(ap, char *);
- while (ch = *p++)
- putchar(ch);
- break;
- case 'd':
- ul = lflag ?
- va_arg(ap, long) : va_arg(ap, int);
- if ((long)ul < 0) {
- putchar('-');
- ul = -(long)ul;
- }
- kprintn(ul, 10);
- break;
- case 'o':
- ul = lflag ?
- va_arg(ap, u_long) : va_arg(ap, u_int);
- kprintn(ul, 8);
- break;
- case 'u':
- ul = lflag ?
- va_arg(ap, u_long) : va_arg(ap, u_int);
- kprintn(ul, 10);
- break;
- case 'x':
- ul = lflag ?
- va_arg(ap, u_long) : va_arg(ap, u_int);
- kprintn(ul, 16);
- break;
- default:
- putchar('%');
- if (lflag)
- putchar('l');
- putchar(ch);
- }
- }
- va_end(ap);
-}
-
diff --git a/sys/arch/mvme68k/stand/sboot/oc_cksum.s b/sys/arch/mvme68k/stand/sboot/oc_cksum.s
deleted file mode 100644
index 3718a0c4868..00000000000
--- a/sys/arch/mvme68k/stand/sboot/oc_cksum.s
+++ /dev/null
@@ -1,187 +0,0 @@
-| $NetBSD: oc_cksum.s,v 1.1.1.1 1995/07/25 23:12:31 chuck Exp $
-
-| Copyright (c) 1988 Regents of the University of California.
-| 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
-| 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.
-|
-| @(#)oc_cksum.s 7.2 (Berkeley) 11/3/90
-|
-|
-| oc_cksum: ones complement 16 bit checksum for MC68020.
-|
-| oc_cksum (buffer, count, strtval)
-|
-| Do a 16 bit one's complement sum of 'count' bytes from 'buffer'.
-| 'strtval' is the starting value of the sum (usually zero).
-|
-| It simplifies life in in_cksum if strtval can be >= 2^16.
-| This routine will work as long as strtval is < 2^31.
-|
-| Performance
-| -----------
-| This routine is intended for MC 68020s but should also work
-| for 68030s. It (deliberately) doesn't worry about the alignment
-| of the buffer so will only work on a 68010 if the buffer is
-| aligned on an even address. (Also, a routine written to use
-| 68010 "loop mode" would almost certainly be faster than this
-| code on a 68010).
-|
-| We don't worry about alignment because this routine is frequently
-| called with small counts: 20 bytes for IP header checksums and 40
-| bytes for TCP ack checksums. For these small counts, testing for
-| bad alignment adds ~10% to the per-call cost. Since, by the nature
-| of the kernel's allocator, the data we're called with is almost
-| always longword aligned, there is no benefit to this added cost
-| and we're better off letting the loop take a big performance hit
-| in the rare cases where we're handed an unaligned buffer.
-|
-| Loop unrolling constants of 2, 4, 8, 16, 32 and 64 times were
-| tested on random data on four different types of processors (see
-| list below -- 64 was the largest unrolling because anything more
-| overflows the 68020 Icache). On all the processors, the
-| throughput asymptote was located between 8 and 16 (closer to 8).
-| However, 16 was substantially better than 8 for small counts.
-| (It's clear why this happens for a count of 40: unroll-8 pays a
-| loop branch cost and unroll-16 doesn't. But the tests also showed
-| that 16 was better than 8 for a count of 20. It's not obvious to
-| me why.) So, since 16 was good for both large and small counts,
-| the loop below is unrolled 16 times.
-|
-| The processors tested and their average time to checksum 1024 bytes
-| of random data were:
-| Sun 3/50 (15MHz) 190 us/KB
-| Sun 3/180 (16.6MHz) 175 us/KB
-| Sun 3/60 (20MHz) 134 us/KB
-| Sun 3/280 (25MHz) 95 us/KB
-|
-| The cost of calling this routine was typically 10% of the per-
-| kilobyte cost. E.g., checksumming zero bytes on a 3/60 cost 9us
-| and each additional byte cost 125ns. With the high fixed cost,
-| it would clearly be a gain to "inline" this routine -- the
-| subroutine call adds 400% overhead to an IP header checksum.
-| However, in absolute terms, inlining would only gain 10us per
-| packet -- a 1% effect for a 1ms ethernet packet. This is not
-| enough gain to be worth the effort.
-
-#include <m68k/asm.h>
-
- .text
-
- .text; .even; .globl _oc_cksum; _oc_cksum:
- movl sp@(4),a0 | get buffer ptr
- movl sp@(8),d1 | get byte count
- movl sp@(12),d0 | get starting value
- movl d2,sp@- | free a reg
-
- | test for possible 1, 2 or 3 bytes of excess at end
- | of buffer. The usual case is no excess (the usual
- | case is header checksums) so we give that the faster
- | 'not taken' leg of the compare. (We do the excess
- | first because we're about the trash the low order
- | bits of the count in d1.)
-
- btst #0,d1
- jne L5 | if one or three bytes excess
- btst #1,d1
- jne L7 | if two bytes excess
-L1:
- movl d1,d2
- lsrl #6,d1 | make cnt into # of 64 byte chunks
- andl #0x3c,d2 | then find fractions of a chunk
- negl d2
- andb #0xf,cc | clear X
- jmp pc@(L3-.-2:b,d2)
-L2:
- movl a0@+,d2
- addxl d2,d0
- movl a0@+,d2
- addxl d2,d0
- movl a0@+,d2
- addxl d2,d0
- movl a0@+,d2
- addxl d2,d0
- movl a0@+,d2
- addxl d2,d0
- movl a0@+,d2
- addxl d2,d0
- movl a0@+,d2
- addxl d2,d0
- movl a0@+,d2
- addxl d2,d0
- movl a0@+,d2
- addxl d2,d0
- movl a0@+,d2
- addxl d2,d0
- movl a0@+,d2
- addxl d2,d0
- movl a0@+,d2
- addxl d2,d0
- movl a0@+,d2
- addxl d2,d0
- movl a0@+,d2
- addxl d2,d0
- movl a0@+,d2
- addxl d2,d0
- movl a0@+,d2
- addxl d2,d0
-L3:
- dbra d1,L2 | (NB- dbra doesn't affect X)
-
- movl d0,d1 | fold 32 bit sum to 16 bits
- swap d1 | (NB- swap doesn't affect X)
- addxw d1,d0
- jcc L4
- addw #1,d0
-L4:
- andl #0xffff,d0
- movl sp@+,d2
- rts
-
-L5: | deal with 1 or 3 excess bytes at the end of the buffer.
- btst #1,d1
- jeq L6 | if 1 excess
-
- | 3 bytes excess
- clrl d2
- movw a0@(-3,d1:l),d2 | add in last full word then drop
- addl d2,d0 | through to pick up last byte
-
-L6: | 1 byte excess
- clrl d2
- movb a0@(-1,d1:l),d2
- lsll #8,d2
- addl d2,d0
- jra L1
-
-L7: | 2 bytes excess
- clrl d2
- movw a0@(-2,d1:l),d2
- addl d2,d0
- jra L1
diff --git a/sys/arch/mvme68k/stand/sboot/start.s b/sys/arch/mvme68k/stand/sboot/start.s
deleted file mode 100644
index d878f94ea23..00000000000
--- a/sys/arch/mvme68k/stand/sboot/start.s
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *
- * Copyright (c) 1995 Charles D. Cranor
- * 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 Charles D. Cranor.
- * 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.
- */
-/*
- * start: at address 0x4000, load at 0xa000 (so put stack at 0x9ff0)
- * note this file is named "AAstart" so that it gets linked FIRST
- */
-
-.text
-.globl start
-start:
- movb #0,_reboot
- jra Ldoit
-restart:
- movb #1,_reboot | fall through
-
-Ldoit:
- movl #0x00006ff0,sp
- jsr _sboot
-