diff options
Diffstat (limited to 'sys/arch')
-rw-r--r-- | sys/arch/mvme68k/README | 152 | ||||
-rw-r--r-- | sys/arch/mvme68k/conf/VME147 | 51 | ||||
-rw-r--r-- | sys/arch/mvme68k/dev/iio.c | 114 | ||||
-rw-r--r-- | sys/arch/mvme68k/dev/iio.h | 18 | ||||
-rw-r--r-- | sys/arch/mvme68k/mvme68k/clock.c | 367 | ||||
-rw-r--r-- | sys/arch/mvme68k/mvme68k/clockreg.h | 76 | ||||
-rw-r--r-- | sys/arch/mvme68k/mvme68k/isr.h | 47 | ||||
-rw-r--r-- | sys/arch/mvme68k/mvme68k/mainbus.c | 29 | ||||
-rw-r--r-- | sys/arch/mvme68k/stand/libsa/exec.c | 177 | ||||
-rw-r--r-- | sys/arch/mvme68k/stand/libsa/if_lereg.h | 176 | ||||
-rw-r--r-- | sys/arch/mvme68k/stand/libsa/machdep.c | 154 | ||||
-rw-r--r-- | sys/arch/mvme68k/stand/libsa/netif.c | 531 | ||||
-rw-r--r-- | sys/arch/mvme68k/stand/libsa/netif.h | 22 | ||||
-rw-r--r-- | sys/arch/mvme68k/stand/sboot/console.c | 139 | ||||
-rw-r--r-- | sys/arch/mvme68k/stand/sboot/le_poll.c | 320 | ||||
-rw-r--r-- | sys/arch/mvme68k/stand/sboot/libc_sa.c | 348 | ||||
-rw-r--r-- | sys/arch/mvme68k/stand/sboot/oc_cksum.s | 187 | ||||
-rw-r--r-- | sys/arch/mvme68k/stand/sboot/start.s | 47 |
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 - |