Adding more arches require more structuring and cleanup. More to come...
authorpefo <pefo@openbsd.org>
Sun, 23 Mar 1997 11:34:25 +0000 (11:34 +0000)
committerpefo <pefo@openbsd.org>
Sun, 23 Mar 1997 11:34:25 +0000 (11:34 +0000)
20 files changed:
sys/arch/arc/algor/algor.h
sys/arch/arc/algor/algorbus.c
sys/arch/arc/arc/arcbios.c
sys/arch/arc/arc/clock_mc.c
sys/arch/arc/arc/conf.c
sys/arch/arc/arc/cpu.c
sys/arch/arc/arc/cpu_exec.c
sys/arch/arc/arc/locore.S
sys/arch/arc/arc/machdep.c
sys/arch/arc/arc/mem.c
sys/arch/arc/arc/sys_machdep.c
sys/arch/arc/arc/vm_machdep.c
sys/arch/arc/conf/GENERIC
sys/arch/arc/conf/files.arc
sys/arch/arc/dev/com_lbus.c
sys/arch/arc/dev/lpt_lbus.c
sys/arch/arc/include/cpu.h
sys/arch/arc/pci/pbcpcibus.c
sys/arch/arc/pica/com_pica.c [deleted file]
sys/arch/arc/pica/lpt_pica.c [deleted file]

index bfe02f6..c1c68d5 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: algor.h,v 1.1 1997/03/12 19:16:33 pefo Exp $ */
+/*     $OpenBSD: algor.h,v 1.2 1997/03/23 11:34:25 pefo Exp $ */
 
 /*
  * Copyright (c) 1996 Per Fogelstrom
@@ -62,8 +62,9 @@
 #define        P4032_GPIO              0xbff40000      /* General purpose I/O */
 #define        P4032_GPIO_IACK         0xbff50000      /* General purpose I/O Iack */
 #define        P4032_FPY               0xbff807c0      /* Floppy controller */
-#define        P4032_COM1              0xbff80fe0
-#define        P4032_COM2              0xbff80be0
+#define        P4032_COM1              0xbff80fe0      /* Serial port com1 */
+#define        P4032_COM2              0xbff80be0      /* Serial port com2 */
+#define        P4032_CENTR             0xbff80de0      /* Centronics paralell port */
 #define        P4032_IMR               0xbff90000      /* Int mask reg (wr) */
 #define        P4032_IRR               0xbff90000      /* Int request reg (rd) */
 #define        P4032_EIRR              0xbff90004      /* Error int request reg (rd) */
index b6fc840..d4da970 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: algorbus.c,v 1.1 1997/03/12 19:16:35 pefo Exp $ */
+/*     $OpenBSD: algorbus.c,v 1.2 1997/03/23 11:34:26 pefo Exp $ */
 
 /*
  * Copyright (c) 1996 Per Fogelstrom
@@ -111,9 +111,11 @@ struct algor_dev algor_4032_cpu[] = {
     {{ "dallas_rtc",    0, 0, },
        P4032_IM_RTC,  IPL_CLOCK, 0xc000, algor_intrnull, (void *)P4032_CLOCK, },
     {{ "com",           1, 0, },
-       P4032_IM_COM1, IPL_TTY,   0x00c0, algor_intrnull, (void *)P4032_COM1, },
+       P4032_IM_COM1, IPL_TTY,   0x00c0, algor_intrnull, (void *)P4032_COM1,  },
     {{ "com",           2, 0, },
-       P4032_IM_COM2, IPL_TTY,   0x0300, algor_intrnull, (void *)P4032_COM2, },
+       P4032_IM_COM2, IPL_TTY,   0x0300, algor_intrnull, (void *)P4032_COM2,  },
+    {{ "lpt",           3, 0, },
+       P4032_IM_CENTR,IPL_TTY,   0x0c00, algor_intrnull, (void *)P4032_CENTR, },
     {{ NULL,            -1, NULL, },
        0,              0x0000, NULL,           (void *)NULL, },
 };
@@ -381,6 +383,7 @@ algor_iointr(mask, cf)
                if(pend & int_table[i].int_mask)
                        (*int_table[i].int_hand)(int_table[i].param);
        }
+       outb(P4032_ICR, pend & P4032_IM_CENTR); /* Ack any centronics int */
        return(~0);  /* Dont reenable */
 }
 
index 2badfd0..17a7557 100644 (file)
@@ -1,6 +1,7 @@
-/*     $OpenBSD: arcbios.c,v 1.5 1997/03/12 19:16:36 pefo Exp $        */
+/*     $OpenBSD: arcbios.c,v 1.6 1997/03/23 11:34:26 pefo Exp $        */
 /*-
  * Copyright (c) 1996 M. Warner Losh.  All rights reserved.
+ * Copyright (c) 1996 Per Fogelstrom.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
index c22338f..e9ceed3 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: clock_mc.c,v 1.5 1997/03/12 19:16:39 pefo Exp $       */
+/*     $OpenBSD: clock_mc.c,v 1.6 1997/03/23 11:34:27 pefo Exp $       */
 /*     $NetBSD: clock_mc.c,v 1.2 1995/06/28 04:30:30 cgd Exp $ */
 
 /*
@@ -79,7 +79,6 @@ struct mcclockdata {
        void    (*mc_write) __P((struct clock_softc *csc, u_int reg,
                    u_int datum));
        u_int   (*mc_read) __P((struct clock_softc *csc, u_int reg));
-       void    *mc_addr;
 };
 
 #define        mc146818_write(sc, reg, datum)                                  \
@@ -87,19 +86,19 @@ struct mcclockdata {
 #define        mc146818_read(sc, reg)                                          \
            (*((struct mcclockdata *)sc->sc_data)->mc_read)(sc, reg)
 
-/* Acer pica clock read code */
+/* Acer Pica clock access code */
 static void    mc_write_pica __P((struct clock_softc *csc, u_int reg,
                    u_int datum));
 static u_int   mc_read_pica __P((struct clock_softc *csc, u_int reg));
 static struct mcclockdata mcclockdata_pica = { mc_write_pica, mc_read_pica };
 
-/* Deskstation clock read code */
+/* Deskstation clock access code */
 static void    mc_write_tyne __P((struct clock_softc *csc, u_int reg,
                    u_int datum));
 static u_int   mc_read_tyne __P((struct clock_softc *csc, u_int reg));
 static struct mcclockdata mcclockdata_tyne = { mc_write_tyne, mc_read_tyne };
 
-/* Algorithmics P4032 clock read code */
+/* Algorithmics P4032 clock access code */
 static void    mc_write_p4032 __P((struct clock_softc *csc, u_int reg,
                    u_int datum));
 static u_int   mc_read_p4032 __P((struct clock_softc *csc, u_int reg));
@@ -124,13 +123,8 @@ mcclock_attach(parent, self, aux)
         switch (cputype) {
 
         case ACER_PICA_61:
-               /* 
-                * XXX should really allocate a new one and copy, or
-                * something.  unlikely we'll have more than one...
-                */
                csc->sc_init = mcclock_init_pica;
                csc->sc_data = &mcclockdata_pica;
-               mcclockdata_tyne.mc_addr = BUS_CVTADDR(ca);
                mc146818_write(csc, MC_REGB, MC_REGB_BINARY | MC_REGB_24HR);
                break;
 
@@ -228,6 +222,7 @@ mcclock_set(csc, ct)
 
        s = splclock();
        MC146818_GETTOD(csc, &regs);
+printf("%d-%d-%d, %d:%d:%d\n", regs[MC_YEAR], regs[MC_MONTH], regs[MC_DOM], regs[MC_HOUR], regs[MC_MIN], regs[MC_SEC]);
 
        regs[MC_SEC] = ct->sec;
        regs[MC_MIN] = ct->min;
@@ -241,6 +236,8 @@ mcclock_set(csc, ct)
                regs[MC_YEAR] = ct->year;
 
        MC146818_PUTTOD(csc, &regs);
+       MC146818_GETTOD(csc, &regs);
+printf("%d-%d-%d, %d:%d:%d\n", regs[MC_YEAR], regs[MC_MONTH], regs[MC_DOM], regs[MC_HOUR], regs[MC_MIN], regs[MC_SEC]);
        splx(s);
 }
 
index 4fad2e7..f9a9902 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: conf.c,v 1.12 1997/03/12 19:16:40 pefo Exp $ */
+/*     $OpenBSD: conf.c,v 1.13 1997/03/23 11:34:27 pefo Exp $ */
 
 /*
  * Copyright (c) 1992, 1993
@@ -36,7 +36,7 @@
  * SUCH DAMAGE.
  *
  *     from: @(#)conf.c        8.2 (Berkeley) 11/14/93
- *      $Id: conf.c,v 1.12 1997/03/12 19:16:40 pefo Exp $
+ *      $Id: conf.c,v 1.13 1997/03/23 11:34:27 pefo Exp $
  */
 
 #include <sys/param.h>
@@ -175,7 +175,7 @@ struct cdevsw       cdevsw[] =
        cdev_bpftun_init(NBPFILTER,bpf),/* 12: berkeley packet filter */
        cdev_disk_init(NFDC,fd),        /* 13: Floppy disk */
        cdev_pc_init(NPC,pc),           /* 14: builtin pc style console dev */
-       cdev_mouse_init(1,pms),         /* 15: builtin PS2 style mouse */
+       cdev_mouse_init(NPC,pms),       /* 15: builtin PS2 style mouse */
        cdev_lpt_init(NLPT,lpt),        /* 16: Parallel printer interface */
        cdev_tty_init(NCOM,com),        /* 17: 16C450 serial interface */
        cdev_disk_init(NWDC,wd),        /* 18: ST506/ESDI/IDE disk */
index 3fb3646..1e5ae44 100644 (file)
@@ -1,30 +1,35 @@
-/*     $OpenBSD: cpu.c,v 1.5 1997/03/12 19:16:41 pefo Exp $    */
+/*     $OpenBSD: cpu.c,v 1.6 1997/03/23 11:34:28 pefo Exp $ */
 
 /*
- * Copyright (c) 1994, 1995 Carnegie-Mellon University.
- * All rights reserved.
- *
- * Author: Per Fogelstrom
- * 
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- * 
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 
- * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND 
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ * Copyright (c) 1997 Per Fogelstrom
  * 
- * Carnegie Mellon requests users of this software to return to
+ * 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 under OpenBSD by
+ *     Per Fogelstrom.
+ * 4. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
  *
- *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
- *  School of Computer Science
- *  Carnegie Mellon University
- *  Pittsburgh PA 15213-3890
+ * 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.
  *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
  */
 
 #include <sys/param.h>
index 5a57459..0b12677 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: cpu_exec.c,v 1.4 1995/04/25 19:16:46 mellon Exp $      */
+/*     $OpenBSD: cpu_exec.c,v 1.3 1997/03/23 11:34:28 pefo Exp $       */
 
 /*
  * Copyright (c) 1992, 1993
index 6d4ea2c..aba3e0f 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: locore.S,v 1.9 1997/03/12 19:16:42 pefo Exp $ */
+/*     $OpenBSD: locore.S,v 1.10 1997/03/23 11:34:29 pefo Exp $        */
 /*
  * Copyright (c) 1992, 1993
  *     The Regents of the University of California.  All rights reserved.
@@ -50,7 +50,7 @@
  *     v 1.1 89/07/10 14:27:41 nelson Exp  SPRITE (DECWRL)
  *
  *     from: @(#)locore.s      8.5 (Berkeley) 1/4/94
- *     $Id: locore.S,v 1.9 1997/03/12 19:16:42 pefo Exp $
+ *     $Id: locore.S,v 1.10 1997/03/23 11:34:29 pefo Exp $
  */
 
 /*
@@ -1372,8 +1372,7 @@ NNON_LEAF(MachUserIntr, STAND_FRAME_SIZE, ra)
        .mask   0x80000000, (STAND_RA_OFFSET - STAND_FRAME_SIZE)
 /*
  * Save the relevant user registers into the u.u_pcb struct.
- * We don't need to save s0 - s8 because
- * the compiler does it for us.
+ * We don't need to save s0 - s8 because the compiler does it for us.
  */
        sw      AT, UADDR+U_PCB_REGS+(AST * 4)
        sw      v0, UADDR+U_PCB_REGS+(V0 * 4)
index 4615d24..dd29ad4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: machdep.c,v 1.22 1997/03/17 08:11:12 pefo Exp $       */
+/*     $OpenBSD: machdep.c,v 1.23 1997/03/23 11:34:30 pefo Exp $       */
 /*
  * Copyright (c) 1988 University of Utah.
  * Copyright (c) 1992, 1993
@@ -38,7 +38,7 @@
  * SUCH DAMAGE.
  *
  *     from: @(#)machdep.c     8.3 (Berkeley) 1/12/94
- *      $Id: machdep.c,v 1.22 1997/03/17 08:11:12 pefo Exp $
+ *      $Id: machdep.c,v 1.23 1997/03/23 11:34:30 pefo Exp $
  */
 
 /* from: Utah Hdr: machdep.c 1.63 91/04/24 */
 #include <arc/dti/desktech.h>
 #include <arc/algor/algor.h>
 
-#if 0
-#include <asc.h>
-
-#if NASC > 0
-#include <arc/dev/ascreg.h>
-#endif
-#endif
-
 extern struct consdev *cn_tab;
 extern char kernel_start[];
 
@@ -134,7 +126,9 @@ int cputype;                /* Mother board type */
 int    num_tlbentries = 48;    /* Size of the CPU tlb */
 int    ncpu = 1;               /* At least one cpu in the system */
 int    CONADDR;                /* Well, ain't it just plain stupid... */
-struct arc_bus_space arc_bus;
+struct arc_bus_space arc_bus;  /* Bus tag for bus.h macros */
+char   **environment;          /* On some arches, pointer to environment */
+char   eth_hw_addr[6];         /* HW ether addr not stored elsewhere */
 
 struct mem_descriptor mem_layout[MAXMEMSEGS];
 
@@ -150,6 +144,9 @@ int (*Mach_splstatclock)() = splhigh;
 static void tlb_init_pica();
 static void tlb_init_tyne();
 static int get_simm_size(int *fadr, int max);
+static char *getenv(char *env);
+static void get_eth_hw_addr(char *);
+static int atoi(char *s, int b);
 
 
 /*
@@ -167,15 +164,15 @@ struct    proc nullproc;          /* for use by swtch_exit() */
  * Reset mapping and set up mapping to hardware and init "wired" reg.
  * Return the first page address following the system.
  */
-mips_init(argc, argv, code)
+mips_init(argc, argv, envv)
        int argc;
        char *argv[];
-       u_int code;
+       char *envv[];   /* Not on all arches... */
 {
-       register char *cp;
-       register int i;
-       register unsigned firstaddr;
-       register caddr_t sysend;
+       char *cp;
+       int i;
+       unsigned firstaddr;
+       caddr_t sysend;
        caddr_t start;
        struct tlb tlb;
        extern char edata[], end[];
@@ -186,6 +183,8 @@ mips_init(argc, argv, code)
        sysend = (caddr_t)mips_round_page(end);
        bzero(edata, sysend - edata);
 
+       environment = &argv[1];
+
        /* Initialize the CPU type */
        bios_ident();
 
@@ -199,6 +198,7 @@ mips_init(argc, argv, code)
        arc_bus.isa_io_sparse2 = 0;
        arc_bus.isa_io_sparse4 = 0;
        arc_bus.isa_io_sparse8 = 0;
+
        switch (cputype) {
        case ACER_PICA_61:      /* ALI PICA 61 and MAGNUM is almost the */
        case MAGNUM:            /* Same kind of hardware. NEC goes here too */
@@ -259,15 +259,21 @@ mips_init(argc, argv, code)
                i = get_simm_size((int *)0, 128*1024*1024);
                mem_layout[1].mem_size = i - (int)(CACHED_TO_PHYS(sysend));
                physmem = i;
-#if 0
-               mem_layout[2].mem_start = 0x800000;
-               mem_layout[2].mem_size = 0x1000000;
-               physmem += 8192 * 1024;
-#endif
+/*XXX Ouch!!! */
+               mem_layout[2].mem_start = i;
+               mem_layout[2].mem_size = get_simm_size((int *)(i), 0);
+               physmem += mem_layout[2].mem_size;
+               mem_layout[3].mem_start = i+i/2;
+               mem_layout[3].mem_size = get_simm_size((int *)(i+i/2), 0);
+               physmem += mem_layout[3].mem_size;
+/*XXX*/
+               environment = envv;
+               argv[0] = getenv("bootdev");
+
 
                break;
 
-       default:
+       default:        /* This is probably the best we can do... */
                bios_putstring("kernel not configured for this system\n");
                boot(RB_HALT | RB_NOSYNC);
        }
@@ -284,34 +290,32 @@ mips_init(argc, argv, code)
 #ifdef KADB
        boothowto |= RB_KDB;
 #endif
-       if (argc > 1) {
-               for (i = 1; i < argc; i++) {
-                       if(strncasecmp("osloadoptions=",argv[i],14) == 0) {
-                               for (cp = argv[i]+14; *cp; cp++) {
-                                       switch (*cp) {
-                                       case 'a': /* autoboot */
-                                               boothowto &= ~RB_SINGLE;
-                                               break;
-
-                                       case 'd': /* use compiled in default root */
-                                               boothowto |= RB_DFLTROOT;
-                                               break;
-
-                                       case 'm': /* mini root present in memory */
-                                               boothowto |= RB_MINIROOT;
-                                               break;
-
-                                       case 'n': /* ask for names */
-                                               boothowto |= RB_ASKNAME;
-                                               break;
-
-                                       case 'N': /* don't ask for names */
-                                               boothowto &= ~RB_ASKNAME;
-                                               break;
-                                       }
-
-                               }
+       get_eth_hw_addr(getenv("ethaddr"));
+       cp = getenv("osloadoptions");
+       if(cp) {
+               while(*cp) {
+                       switch (*cp++) {
+                       case 'a': /* autoboot */
+                               boothowto &= ~RB_SINGLE;
+                               break;
+
+                       case 'd': /* use compiled in default root */
+                               boothowto |= RB_DFLTROOT;
+                               break;
+
+                       case 'm': /* mini root present in memory */
+                               boothowto |= RB_MINIROOT;
+                               break;
+
+                       case 'n': /* ask for names */
+                               boothowto |= RB_ASKNAME;
+                               break;
+
+                       case 'N': /* don't ask for names */
+                               boothowto &= ~RB_ASKNAME;
+                               break;
                        }
+
                }
        }
 
@@ -574,6 +578,7 @@ tlb_init_tyne()
 
 /*
  * Simple routine to figure out SIMM module size.
+ * This code is a real hack and can surely be improved on... :-)
  */
 static int
 get_simm_size(fadr, max)
@@ -582,29 +587,94 @@ get_simm_size(fadr, max)
 {
        int msave;
        int msize;
-
+       int ssize;
+       static int a1 = 0, a2 = 0;
+       static int s1 = 0, s2 = 0;
+
+       if(!max) {
+               if(a1 == (int)fadr)
+                       return(s1);
+               else if(a2 == (int)fadr)
+                       return(s2);
+               else
+                       return(0);
+       }
        fadr = (int *)PHYS_TO_UNCACHED(CACHED_TO_PHYS((int)fadr));
 
-       msize = 1024*1024;
+       msize = max - 0x400000;
+       ssize = msize - 0x400000;
 
-       while(max >= msize) {
-               msave = fadr[0];
-               fadr[0] = 0xC0DEB00F;
-               if(fadr[msize/4] == 0xC0DEB00F) {
-                       fadr[0] = msave;
+       /* Find bank size of last module */
+       while(ssize >= 0) {
+               msave = fadr[ssize / 4];
+               fadr[ssize / 4] = 0xC0DEB00F;
+               if(fadr[msize /4 ] == 0xC0DEB00F) {
+                       fadr[ssize / 4] = msave;
                        if(fadr[msize/4] == msave) {
                                break;  /* Wrap around */
                        }
                }
+               fadr[ssize / 4] = msave;
+               ssize -= 0x400000;
+       }
+       msize = msize - ssize;
+       if(msize == max)
+               return(msize);  /* well it never wrapped... */
+
+       msave = fadr[0];
+       fadr[0] = 0xC0DEB00F;
+       if(fadr[msize / 4] == 0xC0DEB00F) {
                fadr[0] = msave;
-               msize += msize;
+               if(fadr[msize / 4] == msave)
+                       return(msize);  /* First module wrap = size */
        }
-       if(msize <= max) {
-               return(msize);
+
+       /* Ooops! Two not equal modules. Find size of first + second */
+       s1 = s2 = msize;
+       ssize = 0;
+       while(ssize < max) {
+               msave = fadr[ssize / 4];
+               fadr[ssize / 4] = 0xC0DEB00F;
+               if(fadr[msize /4 ] == 0xC0DEB00F) {
+                       fadr[ssize / 4] = msave;
+                       if(fadr[msize/4] == msave) {
+                               break;  /* Found end of module 1 */
+                       }
+               }
+               fadr[ssize / 4] = msave;
+               ssize += s2;
+               msize += s2;
        }
-       else {
-               return(-1);
+
+       /* Is second bank dual sided? */
+       fadr[(ssize+ssize/2)/4] = ~fadr[ssize];
+       if(fadr[(ssize+ssize/2)/4] != fadr[ssize]) {
+               a2 = ssize+ssize/2;
        }
+       a1 = ssize;
+
+       return(ssize);
+}
+
+/*
+ * Return a pointer to the given environment variable.
+ */
+static char *
+getenv(envname)
+       char *envname;
+{
+       char **env = environment;
+       int i;
+
+       i = strlen(envname);
+
+       while(*env) {
+               if(strncasecmp(envname, *env, i) == 0 && (*env)[i] == '=') {
+                       return(&(*env)[i+1]);
+               }
+               env++;
+       }
+       return(NULL);
 }
 
 /*
@@ -1170,16 +1240,32 @@ initcpu()
                break;
        }
 }
+/*
+ * Convert "xx:xx:xx:xx:xx:xx" string to ethernet hardware address.
+ */
+static void
+get_eth_hw_addr(s)
+       char *s;
+{
+       int i;
+       if(s != NULL) {
+               for(i = 0; i < 6; i++) {
+                       eth_hw_addr[i] = atoi(s, 16);
+                       s += 3;         /* Don't get to fancy here :-) */
+               }
+       }
+}
 
 /*
  * Convert an ASCII string into an integer.
  */
-int
-atoi(s)
+static int
+atoi(s, b)
        char *s;
+       int   b;
 {
        int c;
-       unsigned base = 10, d;
+       unsigned base = b, d;
        int neg = 0, val = 0;
 
        if (s == 0 || (c = *s++) == 0)
index eac1c3a..d03d98b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mem.c,v 1.1.1.1 1996/06/24 09:07:21 pefo Exp $        */
+/*     $OpenBSD: mem.c,v 1.2 1997/03/23 11:34:30 pefo Exp $    */
 /*     $NetBSD: mem.c,v 1.6 1995/04/10 11:55:03 mycroft Exp $  */
 
 /*
@@ -120,7 +120,7 @@ mmrw(dev, uio, flags)
                        if (v < CACHED_MEMORY_ADDR)
                                return (EFAULT);
                        if (v + c > PHYS_TO_CACHED(avail_end +
-                                                       sizeof (struct msgbuf)) &&
+                                               sizeof (struct msgbuf)) &&
                            (v < KSEG2_ADDR ||
                            !kernacc((caddr_t)v, c,
                            uio->uio_rw == UIO_READ ? B_READ : B_WRITE)))
index 3524f02..f3700f1 100644 (file)
@@ -1,5 +1,4 @@
-/*     $OpenBSD: sys_machdep.c,v 1.1.1.1 1996/06/24 09:07:21 pefo Exp $        */
-/*     $NetBSD: sys_machdep.c,v 1.6 1994/10/26 21:10:42 cgd Exp $      */
+/*     $OpenBSD: sys_machdep.c,v 1.2 1997/03/23 11:34:31 pefo Exp $    */
 
 /*
  * Copyright (c) 1992, 1993
index 4fc85e4..de2a2aa 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: vm_machdep.c,v 1.3 1996/12/09 00:13:49 imp Exp $      */
+/*     $OpenBSD: vm_machdep.c,v 1.4 1997/03/23 11:34:31 pefo Exp $     */
 /*
  * Copyright (c) 1988 University of Utah.
  * Copyright (c) 1992, 1993
@@ -39,7 +39,7 @@
  * from: Utah Hdr: vm_machdep.c 1.21 91/04/06
  *
  *     from: @(#)vm_machdep.c  8.3 (Berkeley) 1/4/94
- *      $Id: vm_machdep.c,v 1.3 1996/12/09 00:13:49 imp Exp $
+ *      $Id: vm_machdep.c,v 1.4 1997/03/23 11:34:31 pefo Exp $
  */
 
 #include <sys/param.h>
@@ -55,9 +55,6 @@
 #include <vm/vm.h>
 #include <vm/vm_kern.h>
 #include <vm/vm_page.h>
-#if 0
-#include <vm/vm_object.h>
-#endif
 
 #include <machine/pte.h>
 #include <machine/cpu.h>
index 1101d7b..1695789 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: GENERIC,v 1.12 1997/03/12 19:16:48 pefo Exp $
+#      $OpenBSD: GENERIC,v 1.13 1997/03/23 11:34:32 pefo Exp $
 #
 #      Generic configuration file for MIPS R4x00 ARC Systems
 #
@@ -99,6 +99,7 @@ scsibus*      at asc?
 clock0         at algor?
 com0           at algor?
 com1           at algor?
+lpt0           at algor?
 
 #### PCI Bus
 
index 8f67b9d..f76e00a 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: files.arc,v 1.12 1997/03/12 19:16:49 pefo Exp $
+#      $OpenBSD: files.arc,v 1.13 1997/03/23 11:34:32 pefo Exp $
 #
 # maxpartitions must be first item in files.${ARCH}
 #
@@ -109,7 +109,7 @@ attach      clock at pica with clock_pica
 attach clock at isa with clock_isa
 attach clock at algor with clock_algor
 file   arch/arc/arc/clock.c    clock & (clock_isa | clock_pica | clock_algor) needs-flag
-file   arch/arc/arc/clock_mc.c clock & (clock_isa | clock_pica) needs-flag
+file   arch/arc/arc/clock_mc.c clock & (clock_isa | clock_pica | clock_algor) needs-flag
 
 #      Console driver on PC-style graphics
 device pc: tty
@@ -122,12 +122,12 @@ file      arch/arc/dev/pccons.c           pc & (pc_pica | pc_isa) needs-flag
 # BusLogic BT-445C VLB SCSI Controller. Special on TYNE local bus.
 device  btl: scsi
 attach  btl at isa
-file    arch/arc/dti/btl.c                    btl needs-count
+file    arch/arc/dti/btl.c              btl needs-count
 
 # 8250/16[45]50-based "com" ports
 attach com at pica with com_pica
 attach com at algor with com_algor
-file   arch/arc/pica/com_pica.c        com_pica
+file   arch/arc/dev/com_lbus.c         com & (com_pica | com_algor)
 
 
 # National Semiconductor DS8390/WD83C690-based boards
@@ -140,9 +140,9 @@ file    dev/isa/if_ed.c                 ed & (ed_isa | ed_pcmcia) needs-flag
 
 # PC parallel ports (XXX what chip?)
 attach lpt at pica with lpt_pica
-file   arch/arc/pica/lpt_pica.c        lpt_pica
+attach lpt at algor with lpt_algor
+file   arch/arc/dev/lpt_lbus.c         lpt & (lpt_pica | lpt_algor)
 
-#
 
 #
 #      PCI Bus support
index 171c940..e837b65 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: com_lbus.c,v 1.1 1997/03/23 10:14:58 pefo Exp $       */
+/*     $OpenBSD: com_lbus.c,v 1.2 1997/03/23 11:34:33 pefo Exp $       */
 
 /*
  * Copyright (c) 1993, 1994 Charles Hannum.
@@ -77,7 +77,11 @@ int  com_localbus_probe __P((struct device *, void *, void *));
 void   com_localbus_attach __P((struct device *, struct device *, void *));
 
 
-struct cfattach com_localbus_ca = {
+struct cfattach com_pica_ca = {
+       sizeof(struct com_softc), com_localbus_probe, com_localbus_attach
+};
+
+struct cfattach com_algor_ca = {
        sizeof(struct com_softc), com_localbus_probe, com_localbus_attach
 };
 
index c8ea86c..51c82aa 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: lpt_lbus.c,v 1.1 1997/03/23 10:14:58 pefo Exp $       */
+/*     $OpenBSD: lpt_lbus.c,v 1.2 1997/03/23 11:34:34 pefo Exp $       */
 
 /*
  * Copyright (c) 1993, 1994 Charles Hannum.
 int lpt_localbus_probe __P((struct device *, void *, void *));
 void lpt_localbus_attach __P((struct device *, struct device *, void *));
 
-struct cfattach lpt_localbus_ca = {
+struct cfattach lpt_pica_ca = {
+       sizeof(struct lpt_softc), lpt_localbus_probe, lpt_localbus_attach
+};
+
+struct cfattach lpt_algor_ca = {
        sizeof(struct lpt_softc), lpt_localbus_probe, lpt_localbus_attach
 };
 
index c81694c..9109b6c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: cpu.h,v 1.5 1997/03/12 19:16:56 pefo Exp $    */
+/*     $OpenBSD: cpu.h,v 1.6 1997/03/23 11:34:34 pefo Exp $    */
 
 /*-
  * Copyright (c) 1992, 1993
 #define        PHYS_TO_UNCACHED(x)     ((unsigned)(x) | UNCACHED_MEMORY_ADDR)
 #define VA_TO_CINDEX(x)        ((unsigned)(x) & 0xffffff | CACHED_MEMORY_ADDR)
 
-#if 0
-#define CODE_START             0x80080000
-#endif
-
 #ifdef _KERNEL
 /*
  * The bits in the cause register.
index 0bc374b..61a48bc 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: pbcpcibus.c,v 1.1 1997/03/12 19:17:00 pefo Exp $ */
+/*     $OpenBSD: pbcpcibus.c,v 1.2 1997/03/23 11:34:35 pefo Exp $ */
 
 /*
  * Copyright (c) 1997 Per Fogelstrom
@@ -57,6 +57,7 @@
 
 extern vm_map_t phys_map;
 extern int cputype;
+extern char eth_hw_addr[];     /* Hardware ethernet address stored elsewhere */
 
 int     pbcpcibrmatch __P((struct device *, void *, void *));
 void    pbcpcibrattach __P((struct device *, struct device *, void *));
@@ -327,12 +328,7 @@ pbc_ether_hw_addr(cp)
        u_int8_t *cp;
 {
        if(cputype == ALGOR_P4032) {
-               cp[0] = 0x00;
-               cp[1] = 0x40;
-               cp[2] = 0xbc;
-               cp[3] = 0x03;
-               cp[4] = 0x00;
-               cp[5] = 0x33;
+               bcopy(eth_hw_addr, cp, 6);
                return(0);
        }
        return(-1);
diff --git a/sys/arch/arc/pica/com_pica.c b/sys/arch/arc/pica/com_pica.c
deleted file mode 100644 (file)
index 044c1ad..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-/*     $OpenBSD: com_pica.c,v 1.2 1997/03/12 19:17:03 pefo Exp $       */
-
-/*
- * Copyright (c) 1993, 1994 Charles Hannum.
- * Copyright (c) 1990 William F. Jolitz, TeleMuse
- * 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 software is a component of "386BSD" developed by 
- *     William F. Jolitz, TeleMuse.
- * 4. Neither the name of the developer nor the name "386BSD"
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS A COMPONENT OF 386BSD DEVELOPED BY WILLIAM F. JOLITZ 
- * AND IS INTENDED FOR RESEARCH AND EDUCATIONAL PURPOSES ONLY. THIS 
- * SOFTWARE SHOULD NOT BE CONSIDERED TO BE A COMMERCIAL PRODUCT. 
- * THE DEVELOPER URGES THAT USERS WHO REQUIRE A COMMERCIAL PRODUCT 
- * NOT MAKE USE OF THIS WORK.
- *
- * FOR USERS WHO WISH TO UNDERSTAND THE 386BSD SYSTEM DEVELOPED
- * BY WILLIAM F. JOLITZ, WE RECOMMEND THE USER STUDY WRITTEN 
- * REFERENCES SUCH AS THE  "PORTING UNIX TO THE 386" SERIES 
- * (BEGINNING JANUARY 1991 "DR. DOBBS JOURNAL", USA AND BEGINNING 
- * JUNE 1991 "UNIX MAGAZIN", GERMANY) BY WILLIAM F. JOLITZ AND 
- * LYNNE GREER JOLITZ, AS WELL AS OTHER BOOKS ON UNIX AND THE 
- * ON-LINE 386BSD USER MANUAL BEFORE USE. A BOOK DISCUSSING THE INTERNALS 
- * OF 386BSD ENTITLED "386BSD FROM THE INSIDE OUT" WILL BE AVAILABLE LATE 1992.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPER ``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 DEVELOPER 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.
- */
-
-/*
- * Device Driver for AT parallel printer port
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/device.h>
-#include <sys/tty.h>
-
-#include <machine/autoconf.h>
-#include <machine/bus.h>
-#include <machine/intr.h>
-
-#include <dev/isa/isavar.h>    /* XXX for isa_chipset_tag_t in com_softc */
-
-#include <dev/ic/comreg.h>
-#include <dev/ic/comvar.h>
-#include <dev/ic/ns16550reg.h>
-
-/* Macros to clear/set/test flags. */
-#define        SET(t, f)       (t) |= (f)
-#define        CLR(t, f)       (t) &= ~(f)
-#define        ISSET(t, f)     ((t) & (f))
-
-int    com_pica_probe __P((struct device *, void *, void *));
-void   com_pica_attach __P((struct device *, struct device *, void *));
-
-struct cfattach com_pica_ca = {
-       sizeof(struct com_softc), com_pica_probe, com_pica_attach
-};
-
-struct cfattach com_algor_ca = {
-       sizeof(struct com_softc), com_pica_probe, com_pica_attach
-};
-
-int
-com_pica_probe(parent, match, aux)
-       struct device *parent;
-       void *match, *aux;
-{
-       bus_space_tag_t iot;
-       bus_space_handle_t ioh;
-       int iobase, needioh;
-       int rv = 1;
-       struct confargs *ca = aux;
-
-       if(!BUS_MATCHNAME(ca, "com"))
-               return(0);
-       iobase = (long)BUS_CVTADDR(ca);
-       iot = &arc_bus;
-       needioh = 1;
-
-       /* if it's in use as console, it's there. */
-       if (iobase == comconsaddr && !comconsattached)
-               goto out;
-
-       if (needioh && bus_space_map(iot, iobase, COM_NPORTS, 0, &ioh)) {
-               rv = 0;
-               goto out;
-       }
-       rv = comprobe1(iot, ioh, iobase);
-       if (needioh)
-               bus_space_unmap(iot, ioh, COM_NPORTS);
-
-out:
-       return (rv);
-}
-
-void
-com_pica_attach(parent, self, aux)
-       struct device *parent, *self;
-       void *aux;
-{
-       struct com_softc *sc = (void *)self;
-       int iobase;
-       bus_space_tag_t iot;
-       bus_space_handle_t ioh;
-       struct confargs *ca = aux;
-
-       sc->sc_hwflags = 0;
-       sc->sc_swflags = 0;
-       sc->sc_iobase = iobase = (bus_addr_t)BUS_CVTADDR(ca);
-       sc->sc_ioh = ioh = (bus_space_handle_t)iobase;
-       sc->sc_iot = iot = &arc_bus;
-
-       if (iobase == comconsaddr) {
-               comconsattached = 1;
-
-               /* 
-                * Need to reset baud rate, etc. of next print so reset
-                * comconsinit.  Also make sure console is always "hardwired".
-                */
-               delay(1000);                    /* wait for output to finish */
-               comconsinit = 0;
-               SET(sc->sc_hwflags, COM_HW_CONSOLE);
-               SET(sc->sc_swflags, COM_SW_SOFTCAR);
-       }
-
-
-       /* look for a NS 16550AF UART with FIFOs */
-       bus_space_write_1(iot, ioh, com_fifo,
-           FIFO_ENABLE | FIFO_RCV_RST | FIFO_XMT_RST | FIFO_TRIGGER_14);
-       delay(100);
-       if (ISSET(bus_space_read_1(iot, ioh, com_iir), IIR_FIFO_MASK) ==
-           IIR_FIFO_MASK)
-               if (ISSET(bus_space_read_1(iot, ioh, com_fifo),
-                   FIFO_TRIGGER_14) == FIFO_TRIGGER_14) {
-                       SET(sc->sc_hwflags, COM_HW_FIFO);
-                       printf(": ns16550a, working fifo\n");
-               } else
-                       printf(": ns16550, broken fifo\n");
-       else
-               printf(": ns8250 or ns16450, no fifo\n");
-       bus_space_write_1(iot, ioh, com_fifo, 0);
-
-       /* disable interrupts */
-       bus_space_write_1(iot, ioh, com_ier, 0);
-       bus_space_write_1(iot, ioh, com_mcr, 0);
-
-       BUS_INTR_ESTABLISH(ca, comintr, (void *)(long)sc);
-
-#ifdef KGDB
-       if (kgdb_dev == makedev(commajor, unit)) {
-               if (ISSET(sc->sc_hwflags, COM_HW_CONSOLE))
-                       kgdb_dev = -1;  /* can't debug over console port */
-               else {
-                       cominit(iot, ioh, kgdb_rate);
-                       if (kgdb_debug_init) {
-                               /*
-                                * Print prefix of device name,
-                                * let kgdb_connect print the rest.
-                                */
-                               printf("%s: ", sc->sc_dev.dv_xname);
-                               kgdb_connect(1);
-                       } else
-                               printf("%s: kgdb enabled\n",
-                                   sc->sc_dev.dv_xname);
-               }
-       }
-#endif
-
-       /* XXX maybe move up some? */
-       if (ISSET(sc->sc_hwflags, COM_HW_CONSOLE))
-               printf("%s: console\n", sc->sc_dev.dv_xname);
-}
diff --git a/sys/arch/arc/pica/lpt_pica.c b/sys/arch/arc/pica/lpt_pica.c
deleted file mode 100644 (file)
index e8edff1..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/*     $OpenBSD: lpt_pica.c,v 1.2 1996/11/30 00:53:39 niklas Exp $     */
-
-/*
- * Copyright (c) 1993, 1994 Charles Hannum.
- * Copyright (c) 1990 William F. Jolitz, TeleMuse
- * 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 software is a component of "386BSD" developed by 
- *     William F. Jolitz, TeleMuse.
- * 4. Neither the name of the developer nor the name "386BSD"
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS A COMPONENT OF 386BSD DEVELOPED BY WILLIAM F. JOLITZ 
- * AND IS INTENDED FOR RESEARCH AND EDUCATIONAL PURPOSES ONLY. THIS 
- * SOFTWARE SHOULD NOT BE CONSIDERED TO BE A COMMERCIAL PRODUCT. 
- * THE DEVELOPER URGES THAT USERS WHO REQUIRE A COMMERCIAL PRODUCT 
- * NOT MAKE USE OF THIS WORK.
- *
- * FOR USERS WHO WISH TO UNDERSTAND THE 386BSD SYSTEM DEVELOPED
- * BY WILLIAM F. JOLITZ, WE RECOMMEND THE USER STUDY WRITTEN 
- * REFERENCES SUCH AS THE  "PORTING UNIX TO THE 386" SERIES 
- * (BEGINNING JANUARY 1991 "DR. DOBBS JOURNAL", USA AND BEGINNING 
- * JUNE 1991 "UNIX MAGAZIN", GERMANY) BY WILLIAM F. JOLITZ AND 
- * LYNNE GREER JOLITZ, AS WELL AS OTHER BOOKS ON UNIX AND THE 
- * ON-LINE 386BSD USER MANUAL BEFORE USE. A BOOK DISCUSSING THE INTERNALS 
- * OF 386BSD ENTITLED "386BSD FROM THE INSIDE OUT" WILL BE AVAILABLE LATE 1992.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPER ``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 DEVELOPER 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.
- */
-
-/*
- * Device Driver for AT parallel printer port
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/device.h>
-
-#include <machine/autoconf.h>
-#include <machine/bus.h>
-#include <machine/intr.h>
-
-#include <dev/ic/lptreg.h>
-#include <dev/ic/lptvar.h>
-
-int lpt_pica_probe __P((struct device *, void *, void *));
-void lpt_pica_attach __P((struct device *, struct device *, void *));
-
-struct cfattach lpt_pica_ca = {
-       sizeof(struct lpt_softc), lpt_pica_probe, lpt_pica_attach
-};
-
-int
-lpt_pica_probe(parent, match, aux)
-       struct device *parent;
-       void *match, *aux;
-{
-       struct confargs *ca = aux;
-       bus_space_tag_t iot;
-       bus_space_handle_t ioh;
-       bus_addr_t base;
-       u_int8_t mask, data;
-       int i;
-
-#ifdef DEBUG
-#define        ABORT                                                                \
-       do {                                                                 \
-               printf("lpt_pica_probe: mask %x data %x failed\n", mask,     \
-                   data);                                                   \
-               return 0;                                                    \
-       } while (0)
-#else
-#define        ABORT   return 0
-#endif
-
-       if(!BUS_MATCHNAME(ca, "lpt"))
-                return(0);
-
-       iot = 0;
-       base = (bus_addr_t)BUS_CVTADDR(ca);
-       ioh = (bus_space_handle_t)base;
-
-       mask = 0xff;
-
-       data = 0x55;                            /* Alternating zeros */
-       if (!lpt_port_test(iot, ioh, base, lpt_data, data, mask))
-               ABORT;
-
-       data = 0xaa;                            /* Alternating ones */
-       if (!lpt_port_test(iot, ioh, base, lpt_data, data, mask))
-               ABORT;
-
-       for (i = 0; i < CHAR_BIT; i++) {        /* Walking zero */
-               data = ~(1 << i);
-               if (!lpt_port_test(iot, ioh, base, lpt_data, data, mask))
-                       ABORT;
-       }
-
-       for (i = 0; i < CHAR_BIT; i++) {        /* Walking one */
-               data = (1 << i);
-               if (!lpt_port_test(iot, ioh, base, lpt_data, data, mask))
-                       ABORT;
-       }
-
-       bus_space_write_1(iot, ioh, lpt_data, 0);
-       bus_space_write_1(iot, ioh, lpt_control, 0);
-
-       return 1;
-}
-
-void
-lpt_pica_attach(parent, self, aux)
-       struct device *parent, *self;
-       void *aux;
-{
-       struct lpt_softc *sc = (void *)self;
-       struct confargs *ca = aux;
-       bus_space_tag_t iot;
-       bus_space_handle_t ioh;
-
-       printf("\n");
-
-       sc->sc_state = 0;
-       iot = sc->sc_iot = 0;
-       sc->sc_ioh = (bus_space_handle_t)BUS_CVTADDR(ca);
-
-       bus_space_write_1(iot, ioh, lpt_control, LPC_NINIT);
-
-       BUS_INTR_ESTABLISH(ca, lptintr, sc);
-}