Port-powerpc archive

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

Re: Changing ibm4xx device tree.



Simon Burge wrote:
>> [ what hangs of what discussion ]
> Pretty much agree with all you say here.

If it is reasonable that plb is a root device,
how about a patch attached with this mail?
  - source diff
  - powerpc/include/ibm4xx/ibm405gpr.h
  - powerpc/ibm4xx/ibm405gpr.c
  - powerpc/ibm4xx/ibm4xx.h


Anyway, I want to do something better about the following matters:

1. flexible configure about cpu(machine)-dependent devices.
2. don't want to insert per-cpu include-file declarations
   in ibm4xx/dev/plb.c and ibm4xx/dev/opb.c, and so on.

   Is it practical that there are many #include directives
   for all supported cpu in plb.c, opb.c, and so on.
   Such as:

   #include <powerpc/ibm4xx/ibm405gp.h>
   #include <powerpc/ibm4xx/ibm405gpr.h>
   #include <powerpc/ibm4xx/ibm405cr.h>
   #include <powerpc/ibm4xx/ibm405ep.h>
   #include <powerpc/ibm4xx/ibm440gp.h>
   #include <powerpc/ibm4xx/ibm440gx.h>
   #include <powerpc/ibm4xx/ibm440gr.h>
      :

-- 
Kind Regards,
--- shige
Shigeyuki Fukushima <shige@{FreeBSD,jp.FreeBSD,NetBSD}.org>
/* $NetBSD$ */

/*
 * Copyright (c) 2006 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed
 * to The NetBSD Foundation, Inc.
 * by Shigeyuki Fukushima.
 *
 * 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 NetBSD
 *      Foundation, Inc. and its contributors.
 * 4. Neither the name of The NetBSD Foundation 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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 <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD$");

#include <sys/param.h>

#include <machine/cpu.h>

#include <powerpc/ibm4xx/ibm405gpr.h>
#include <powerpc/ibm4xx/ibm4xx.h>
#include <powerpc/ibm4xx/dev/plbvar.h>
#include <powerpc/ibm4xx/dev/opbvar.h>

struct opb_dev ibm405gpr_opb_devices[] = {
        { "com",     0, UART0_BASE, {  0, -1, -1, -1, -1, -1, -1, -1 }, NULL },
        { "com",     1, UART1_BASE, {  1, -1, -1, -1, -1, -1, -1, -1 }, NULL },
        { "emac",    0, EMAC0_BASE, {  9, 10, 11, 12, 13, 14, 15, -1 }, NULL },
        { "opbgpio", 0, GPIO0_BASE, { -1, -1, -1, -1, -1, -1, -1, -1 }, NULL },
        { "gpiic",   0, IIC0_BASE,  {  2, -1, -1, -1, -1, -1, -1, -1 }, NULL },
        { "wdog",    0, -1,         { -1, -1, -1, -1, -1, -1, -1, -1 }, NULL },
        { NULL }
};

struct opb_bus_space ibm405gpr_opb_bus_space = {
        UART0_BASE,
        UART0_BASE + 0xffff,
};

struct plb_dev ibm405gpr_plb_devices[] = {
        { "cpu",   0,  -1, NULL },
        { "ecc",   0,  16, NULL },
        { "opb",   0,  -1, &ibm405gpr_opb_devices },
        { "pchb",  0,  -1, NULL },
        { NULL }
};

struct ibm4xx_cpudev ibm405gpr_cpu = {
        "IBM PPC405GPr",
        PVR_405GPR,
        &ibm405gpr_plb_devices,
};

struct opb_bus_space *
opb_get_bus_space_cpu(void)
{

        return &ibm405gpr_opb_bus_space;
}
/* $NetBSD$ */

/*
 * Copyright (c) 2006 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed
 * to The NetBSD Foundation, Inc.
 * by Shigeyuki Fukushima.
 *
 * 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 NetBSD
 *      Foundation, Inc. and its contributors.
 * 4. Neither the name of The NetBSD Foundation 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
 */

#ifndef _POWERPC_IBM4XX_IBM4XX_H_
#define _POWERPC_IBM4XX_IBM4XX_H_

struct ibm4xx_cpudev {
        const char              *name;          /* CPU name */
        int                     pvr;            /* Processor Version Number */
        void                    *arg;           /* root devices args */
};

#endif  /* _POWERPC_IBM4XX_IBM4XX_H_ */
/* $NetBSD$ */

/*
 * Copyright 2001 Wasabi Systems, Inc.
 * All rights reserved.
 *
 * Written by Simon Burge and Eduardo Horvath for Wasabi Systems, Inc.
 *
 * 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 for the NetBSD Project by
 *      Wasabi Systems, Inc.
 * 4. The name of Wasabi Systems, Inc. may not be used to endorse
 *    or promote products derived from this software without specific prior
 *    written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``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 WASABI SYSTEMS, INC
 * 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.
 */

#ifndef _POWERPC_IBM4XX_IBM405GP_H_
#define _POWERPC_IBM4XX_IBM405GP_H_

#ifdef _KERNEL

/*
 * Memory and PCI addresses
 */



/*
 * On-chip Peripheral Device Addresses
 */

#define UART0_BASE              0xef600300
#define UART1_BASE              0xef600400
#define IIC0_BASE               0xef600500
#define OPBA0_BASE              0xef600600
#define GPIO0_BASE              0xef600700
#define EMAC0_BASE              0xef600800


#ifndef _LOCORE

#include <powerpc/ibm4xx/ibm4xx.h>
extern struct ibm4xx_cpudev ibm405gpr_cpu;

#endif  /* !_LOCORE */

#endif  /* _KERNEL */

#endif  /* !_POWERPC_IBM4XX_IBM405GP_H_ */
? powerpc/ibm4xx/ibm405gpr.c
? powerpc/ibm4xx/ibm4xx.h
? powerpc/include/ibm4xx/ibm405gpr.h
Index: powerpc/ibm4xx/dev/opb.c
===================================================================
RCS file: /cvsroot/src/sys/arch/powerpc/ibm4xx/dev/opb.c,v
retrieving revision 1.23
diff -u -r1.23 opb.c
--- powerpc/ibm4xx/dev/opb.c    13 Mar 2006 15:31:11 -0000      1.23
+++ powerpc/ibm4xx/dev/opb.c    5 May 2006 17:00:27 -0000
@@ -78,45 +78,7 @@
 #include <powerpc/spr.h>
 #include <powerpc/ibm4xx/dev/opbvar.h>
 #include <powerpc/ibm4xx/dev/plbvar.h>
-#include <powerpc/ibm4xx/ibm405gp.h>
 
-/*
- * The devices on the On-chip Peripheral Bus to the 405GP CPU.
- */
-const struct opb_dev {
-       int pvr;
-       const char *name;
-       bus_addr_t addr;
-       int instance;
-       int irq;
-} opb_devs [] = {
-       /* IBM405GP */
-       { IBM405GP,     "com",  IBM405GP_UART0_BASE,     0, 0 },
-       { IBM405GP,     "com",  IBM405GP_UART1_BASE,     1, 1 },
-       { IBM405GP,     "emac", IBM405GP_EMAC0_BASE,     0, 9 }, /* XXX: really 
irq 9..15 */
-       { IBM405GP,     "opbgpio",      IBM405GP_GPIO0_BASE,    0, -1 },
-       { IBM405GP,     "gpiic",IBM405GP_IIC0_BASE,     0,  2 },
-       { IBM405GP,     "wdog", -1,                     0, -1 },
-
-       /* IBM405GPR */
-       { IBM405GPR,    "com",  IBM405GP_UART0_BASE,     0, 0 },
-       { IBM405GPR,    "com",  IBM405GP_UART1_BASE,     1, 1 },
-       { IBM405GPR,    "emac", IBM405GP_EMAC0_BASE,     0, 9 }, /* XXX: really 
irq 9..15 */
-       { IBM405GPR,    "opbgpio",      IBM405GP_GPIO0_BASE,    0, -1 },
-       { IBM405GPR,    "gpiic",IBM405GP_IIC0_BASE,     0, 2 },
-       { IBM405GPR,    "wdog", -1,                     0, -1 },
-       { 0,             NULL }
-};
-
-const struct opb_limit {
-       int pvr;
-       bus_addr_t base;
-       bus_addr_t limit;
-} opb_limits[] = {
-       { IBM405GP,     IBM405GP_UART0_BASE,    IBM405GP_UART0_BASE + 0xfff },
-       { IBM405GPR,    IBM405GP_UART0_BASE,    IBM405GP_UART0_BASE + 0xfff },
-       { 0,            0,                      0 }
-};
 
 static int     opb_match(struct device *, struct cfdata *, void *);
 static void    opb_attach(struct device *, struct device *, void *);
@@ -128,8 +90,7 @@
     opb_match, opb_attach, NULL, NULL);
 
 static struct powerpc_bus_space opb_tag = {
-       _BUS_SPACE_BIG_ENDIAN|_BUS_SPACE_MEM_TYPE,
-       0x0, IBM405GP_UART0_BASE, 0x1000
+       _BUS_SPACE_BIG_ENDIAN|_BUS_SPACE_MEM_TYPE, 0x0
 };
 static char ex_storage[EXTENT_FIXED_STORAGE_SIZE(8)]
     __attribute__((aligned(8)));
@@ -170,27 +131,27 @@
 opb_attach(struct device *parent, struct device *self, void *aux)
 {
        struct plb_attach_args *paa = aux;
+       struct opb_dev *opb_devs = (struct opb_dev *)(paa->arg);
        struct opb_attach_args oaa;
        bus_space_tag_t tag;
-       int i, pvr;
 
        printf("\n");
-       pvr = mfpvr() >> 16;
 
        tag = opb_get_bus_space_tag();
 
-       for (i = 0; opb_devs[i].name != NULL; i++) {
-               if (opb_devs[i].pvr != pvr)
-                       continue;
-               oaa.opb_name = opb_devs[i].name;
-               oaa.opb_addr = opb_devs[i].addr;
-               oaa.opb_instance = opb_devs[i].instance;
-               oaa.opb_irq = opb_devs[i].irq;
+       while (opb_devs && opb_devs->name != NULL) {
+               oaa.opb_name = opb_devs->name;
+               oaa.opb_addr = opb_devs->addr;
+               oaa.opb_instance = opb_devs->instance;
+               oaa.opb_irq = opb_devs->irq[0];
+               oaa.opb_arg = opb_devs->arg;
                oaa.opb_bt = tag;
                oaa.opb_dmat = paa->plb_dmat;
 
                (void) config_found_sm_loc(self, "opb", NULL, &oaa, opb_print,
                                           opb_submatch);
+
+               opb_devs++;
        }
 }
 
@@ -213,18 +174,14 @@
 bus_space_tag_t
 opb_get_bus_space_tag(void)
 {
-       int i, pvr;
 
        if (!opb_tag_init_done) {
-               pvr = mfpvr() >> 16;
+               struct opb_bus_space *obs;
 
-               for (i = 0; opb_limits[i].pvr && opb_limits[i].pvr != pvr; i++)
-                       ;
-               if (opb_limits[i].pvr == 0)
-                       panic("opb_get_bus_space_tag: no limits for this CPU!");
+               obs = opb_get_bus_space_cpu();
 
-               opb_tag.pbs_base = opb_limits[i].base;
-               opb_tag.pbs_limit = opb_limits[i].limit;
+               opb_tag.pbs_base = obs->bs_base;
+               opb_tag.pbs_limit = obs->bs_limit;
 
                if (bus_space_init(&opb_tag, "opbtag",
                    ex_storage, sizeof(ex_storage)))
Index: powerpc/ibm4xx/dev/opbvar.h
===================================================================
RCS file: /cvsroot/src/sys/arch/powerpc/ibm4xx/dev/opbvar.h,v
retrieving revision 1.4
diff -u -r1.4 opbvar.h
--- powerpc/ibm4xx/dev/opbvar.h 21 Feb 2006 04:25:29 -0000      1.4
+++ powerpc/ibm4xx/dev/opbvar.h 5 May 2006 17:00:27 -0000
@@ -35,16 +35,38 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#ifndef _POWERPC_IBM4XX_DEV_OPBVAR_H_
+#define _POWERPC_IBM4XX_DEV_OPBVAR_H_
+
 #include <machine/bus.h>
 
+struct opb_dev {
+       const char      *name;
+       int             instance;
+       bus_addr_t      addr;
+       int             irq[8];
+       void            *arg;
+};
+
+struct opb_bus_space {
+       bus_addr_t      bs_base;
+       bus_addr_t      bs_limit;
+};
+
 struct opb_attach_args {
-       const char *opb_name;
-       int opb_instance;
-       u_long opb_addr;
-       int opb_irq;
-       bus_space_tag_t opb_bt;         /* Bus space tag */
-       bus_dma_tag_t opb_dmat;         /* DMA tag */
+       const char      *opb_name;
+       int             opb_instance;
+       u_long          opb_addr;
+       int             opb_irq;
+       bus_space_tag_t opb_bt;         /* Bus space tag */
+       bus_dma_tag_t   opb_dmat;       /* DMA tag */
+       void            *opb_arg;
 };
 
 /* For use before opb_attach() is called */
 extern bus_space_tag_t opb_get_bus_space_tag(void);
+
+/* Implemented at per-cpu module */
+extern struct opb_bus_space *opb_get_bus_space_cpu(void);
+
+#endif /* _POWERPC_IBM4XX_DEV_OPBVAR_H_ */
Index: powerpc/ibm4xx/dev/plb.c
===================================================================
RCS file: /cvsroot/src/sys/arch/powerpc/ibm4xx/dev/plb.c,v
retrieving revision 1.14
diff -u -r1.14 plb.c
--- powerpc/ibm4xx/dev/plb.c    11 Dec 2005 12:18:42 -0000      1.14
+++ powerpc/ibm4xx/dev/plb.c    5 May 2006 17:00:27 -0000
@@ -80,18 +80,7 @@
 #include <machine/bus.h>
 
 #include <powerpc/ibm4xx/dev/plbvar.h>
-#include <powerpc/ibm4xx/ibm405gp.h>
 
-/*
- * The devices that attach to the processor local bus on the 405GP CPU.
- */
-const struct plb_dev plb_devs [] = {
-       { "cpu", },
-       { "ecc", },
-       { "opb", },
-       { "pchb", },
-       { NULL }
-};
 
 static int     plb_match(struct device *, struct cfdata *, void *);
 static void    plb_attach(struct device *, struct device *, void *);
@@ -129,7 +118,7 @@
 plb_match(struct device *parent, struct cfdata *cf, void *aux)
 {
 
-       return (1);
+       return 1;
 }
 
 /*
@@ -140,22 +129,14 @@
 {
        struct plb_attach_args paa;
        struct plb_dev *local_plb_devs = aux;
-       int i;
 
        printf("\n");
 
-       for (i = 0; plb_devs[i].plb_name != NULL; i++) {
-               paa.plb_name = plb_devs[i].plb_name;
-               paa.plb_dmat = &ibm4xx_default_bus_dma_tag;
-               paa.plb_irq = PLBCF_IRQ_DEFAULT;
-
-               (void) config_found_ia(self, "plb", &paa, plb_print);
-       }
-
        while (local_plb_devs && local_plb_devs->plb_name != NULL) {
                paa.plb_name = local_plb_devs->plb_name;
                paa.plb_dmat = &ibm4xx_default_bus_dma_tag;
                paa.plb_irq = PLBCF_IRQ_DEFAULT;
+               paa.arg = local_plb_devs->arg;
 
                (void) config_found_ia(self, "plb", &paa, plb_print);
                local_plb_devs++;
@@ -172,5 +153,5 @@
        if (paa->plb_irq != PLBCF_IRQ_DEFAULT)
                aprint_normal(" irq %d", paa->plb_irq);
 
-       return (UNCONF);
+       return UNCONF;
 }
Index: powerpc/ibm4xx/dev/plbvar.h
===================================================================
RCS file: /cvsroot/src/sys/arch/powerpc/ibm4xx/dev/plbvar.h,v
retrieving revision 1.4
diff -u -r1.4 plbvar.h
--- powerpc/ibm4xx/dev/plbvar.h 11 Dec 2005 12:18:42 -0000      1.4
+++ powerpc/ibm4xx/dev/plbvar.h 5 May 2006 17:00:27 -0000
@@ -35,14 +35,23 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#ifndef _POWERPC_IBM4XX_DEV_PLBVAR_H_
+#define _POWERPC_IBM4XX_DEV_PLBVAR_H_
+
 #include <machine/bus.h>
 
 struct plb_dev {
-        const char *plb_name;
+        const char     *plb_name;
+       int             instance;
+       int             irq;
+       void            *arg;
 };
 
 struct plb_attach_args {
-       const char *plb_name;
-       bus_dma_tag_t plb_dmat; /* DMA tag */
-       int plb_irq;
+       const char      *plb_name;
+       bus_dma_tag_t   plb_dmat;       /* DMA tag */
+       int             plb_irq;
+       void            *arg;
 };
+
+#endif /* _POWERPC_IBM4XX_DEV_PLBVAR_H_ */
Index: evbppc/conf/files.obs405
===================================================================
RCS file: /cvsroot/src/sys/arch/evbppc/conf/files.obs405,v
retrieving revision 1.15
diff -u -r1.15 files.obs405
--- evbppc/conf/files.obs405    13 Mar 2006 16:20:58 -0000      1.15
+++ evbppc/conf/files.obs405    5 May 2006 17:00:27 -0000
@@ -2,8 +2,8 @@
 #
 # obs405-specific configuration info
 
+file   arch/powerpc/ibm4xx/ibm405gpr.c
 file   arch/powerpc/ibm4xx/ibm4xx_autoconf.c
-file   arch/powerpc/ibm4xx/ibm4xxgpx_autoconf.c
 file   arch/powerpc/ibm4xx/ibm40x_machdep.c
 file   arch/powerpc/ibm4xx/ibm4xx_machdep.c
 file   arch/powerpc/ibm4xx/intr.c
Index: evbppc/obs405/obs266_autoconf.c
===================================================================
RCS file: /cvsroot/src/sys/arch/evbppc/obs405/obs266_autoconf.c,v
retrieving revision 1.2
diff -u -r1.2 obs266_autoconf.c
--- evbppc/obs405/obs266_autoconf.c     11 Dec 2005 12:17:12 -0000      1.2
+++ evbppc/obs405/obs266_autoconf.c     5 May 2006 17:00:27 -0000
@@ -40,6 +40,37 @@
 
 #include <machine/obs266.h>
 
+#include <powerpc/ibm4xx/ibm405gpr.h>
+#include <powerpc/ibm4xx/dcr405gp.h>
+
+
+/*
+ * Determine device configuration for a machine.
+ */
+void
+cpu_configure(void)
+{
+
+       intr_init();
+       calc_delayconst();
+
+       /* Make sure that timers run at CPU frequency */
+       mtdcr(DCR_CPC0_CR1, mfdcr(DCR_CPC0_CR1) & ~CPC0_CR1_CETE);
+
+       if (config_rootfound("plb", ibm405gpr_cpu.arg) == NULL)
+               panic("configure: mainbus not configured");
+
+       printf("biomask %x netmask %x ttymask %x\n", (u_short)imask[IPL_BIO],
+               (u_short)imask[IPL_NET], (u_short)imask[IPL_TTY]);
+
+       (void)spl0();
+
+       /*
+        * Now allow hardware interrupts.
+        */
+       __asm volatile ("wrteei 1");
+}
+
 void device_register(struct device *dev, void *aux)
 {
 


Home | Main Index | Thread Index | Old Index