Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 May 2007 01:59:43 GMT
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 120140 for review
Message-ID:  <200705210159.l4L1xhT1048237@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=120140

Change 120140 by marcel@marcel_cluster on 2007/05/21 01:59:00

	First round of cleanups.

Affected files ...

.. //depot/projects/e500/share/sendmail/Makefile#3 edit
.. //depot/projects/e500/sys/conf/NOTES#3 edit
.. //depot/projects/e500/sys/dev/md/md.c#3 edit
.. //depot/projects/e500/sys/dev/mii/miidevs#3 edit
.. //depot/projects/e500/sys/dev/scc/scc_bfe.h#3 edit
.. //depot/projects/e500/sys/dev/scc/scc_bfe_ebus.c#3 edit
.. //depot/projects/e500/sys/dev/scc/scc_bfe_macio.c#3 edit
.. //depot/projects/e500/sys/dev/scc/scc_bfe_sbus.c#3 edit
.. //depot/projects/e500/sys/dev/scc/scc_core.c#3 edit
.. //depot/projects/e500/sys/dev/scc/scc_dev_sab82532.c#3 edit
.. //depot/projects/e500/sys/dev/scc/scc_dev_z8530.c#3 edit
.. //depot/projects/e500/sys/dev/scc/scc_if.m#3 edit
.. //depot/projects/e500/sys/dev/uart/uart_cpu_alpha.c#2 delete
.. //depot/projects/e500/sys/powerpc/aim/clock.c#2 edit
.. //depot/projects/e500/sys/powerpc/aim/copyinout.c#2 edit
.. //depot/projects/e500/sys/powerpc/aim/interrupt.c#2 edit
.. //depot/projects/e500/sys/powerpc/aim/locore.S#2 edit
.. //depot/projects/e500/sys/powerpc/aim/machdep.c#2 edit
.. //depot/projects/e500/sys/powerpc/aim/mem.c#2 edit
.. //depot/projects/e500/sys/powerpc/aim/nexus.c#2 edit
.. //depot/projects/e500/sys/powerpc/aim/ofw_machdep.c#2 edit
.. //depot/projects/e500/sys/powerpc/aim/trap.c#2 edit
.. //depot/projects/e500/sys/powerpc/aim/trap_subr.S#2 edit
.. //depot/projects/e500/sys/powerpc/aim/uio_machdep.c#2 edit
.. //depot/projects/e500/sys/powerpc/aim/vm_machdep.c#2 edit
.. //depot/projects/e500/sys/powerpc/include/gdb_machdep.h#3 edit
.. //depot/projects/e500/sys/powerpc/include/vmparam.h#3 edit

Differences ...

==== //depot/projects/e500/share/sendmail/Makefile#3 (text+ko) ====

@@ -4,8 +4,8 @@
 
 SENDMAIL_DIR=${.CURDIR}/../../contrib/sendmail
 CFDIR=	cf
-CFDIRS!=	(cd ${SENDMAIL_DIR}; find -L ${CFDIR} \( -name .svn -prune \) -o -type d -print)
-CFFILES!=	(cd ${SENDMAIL_DIR}; find -L ${CFDIR} \( -name .svn -prune \) -o -type f -print)
+CFDIRS!=	(cd ${SENDMAIL_DIR}; find -L ${CFDIR} \( -name CVS -prune \) -o -type d -print)
+CFFILES!=	(cd ${SENDMAIL_DIR}; find -L ${CFDIR} \( -name CVS -prune \) -o -type f -print)
 
 DDIR=	${DESTDIR}/usr/share/sendmail
 

==== //depot/projects/e500/sys/conf/NOTES#3 (text+ko) ====

@@ -1739,11 +1739,6 @@
 # communications controllers.
 device		scc
 
-# Serial Communications Controller
-# Supports the Siemens SAB 82532 and Zilog Z8530 multi-channel
-# communications controllers.
-device		scc
-
 # PCI Universal Communications driver
 # Supports various multi port PCI I/O cards.
 device		puc

==== //depot/projects/e500/sys/dev/md/md.c#3 (text+ko) ====

@@ -1179,7 +1179,7 @@
 	sc->start = mdstart_preload;
 #ifdef MD_ROOT
 	if (sc->unit == 0)
-		rootdevnames[0] = "cd9660:/dev/md0";
+		rootdevnames[0] = "ufs:/dev/md0";
 #endif
 	mdinit(sc);
 }
@@ -1215,7 +1215,6 @@
 		ptr = *(u_char **)c;
 		c = preload_search_info(mod, MODINFO_SIZE);
 		len = *(size_t *)c;
-		ptr = pmap_mapdev((uintptr_t)ptr, len);
 		printf("%s%d: Preloaded image <%s> %d bytes at %p\n",
 		    MD_NAME, mdunits, name, len, ptr);
 		sx_xlock(&md_sx);

==== //depot/projects/e500/sys/dev/mii/miidevs#3 (text+ko) ====

@@ -207,20 +207,6 @@
 model MARVELL E1111		0x000c Marvell 88E1111 Gigabit PHY
 model MARVELL E1116		0x0021 Marvell 88E1116 Gigabit PHY
 model MARVELL E1118		0x0022 Marvell 88E1118 Gigabit PHY
-model MARVELL E1000_3		0x0003 Marvell 88E1000 Gigabit PHY
-model xxMARVELL E1011		0x0002 Marvell 88E1011 Gigabit PHY
-model xxMARVELL E1000_3		0x0003 Marvell 88E1000 Gigabit PHY
-model xxMARVELL E1000_5		0x0005 Marvell 88E1000 Gigabit PHY
-model xxMARVELL E1111		0x000c Marvell 88E1111 Gigabit PHY
-model MARVELL E1000S		0x0004 Marvell 88E1000S Gigabit PHY
-model MARVELL E1000_5		0x0005 Marvell 88E1000 Gigabit PHY
-model MARVELL E1000_6		0x0006 Marvell 88E1000 Gigabit PHY
-model MARVELL E3082		0x0008 Marvell 88E3082 10/100 Fast Ethernet PHY
-model MARVELL E1112		0x0009 Marvell 88E1112 Gigabit PHY
-model MARVELL E1149		0x000b Marvell 88E1149 Gigabit PHY
-model MARVELL E1111		0x000c Marvell 88E1111 Gigabit PHY
-model MARVELL E1116		0x0021 Marvell 88E1116 Gigabit PHY
-model MARVELL E1118		0x0022 Marvell 88E1118 Gigabit PHY
 model xxMARVELL E1000		0x0005 Marvell 88E1000 Gigabit PHY
 model xxMARVELL E1011		0x0002 Marvell 88E1011 Gigabit PHY
 model xxMARVELL E1000_3		0x0003 Marvell 88E1000 Gigabit PHY

==== //depot/projects/e500/sys/dev/scc/scc_bfe.h#3 (text) ====

@@ -76,7 +76,7 @@
 	int		m_probed:1;
 	int		m_sysdev:1;
 
-	driver_intr_t	*ih;
+	driver_filter_t	*ih;
 	serdev_intr_t	*ih_src[SCC_ISRCCNT];
 	void		*ih_arg;
 };
@@ -140,7 +140,7 @@
 
 int scc_bfe_attach(device_t dev);
 int scc_bfe_detach(device_t dev);
-int scc_bfe_probe(device_t dev, u_int, u_int);
+int scc_bfe_probe(device_t dev, u_int regshft, u_int rclk, u_int rid);
 
 struct resource *scc_bus_alloc_resource(device_t, device_t, int, int *,
     u_long, u_long, u_long, u_int);
@@ -148,7 +148,7 @@
 int scc_bus_read_ivar(device_t, device_t, int, uintptr_t *);
 int scc_bus_release_resource(device_t, device_t, int, int, struct resource *);
 int scc_bus_setup_intr(device_t, device_t, struct resource *, int,
-    void (*)(void *), void *, void **);
+    driver_filter_t *, void (*)(void *), void *, void **);
 int scc_bus_teardown_intr(device_t, device_t, struct resource *, void *);
 
 #endif /* _DEV_SCC_BFE_H_ */

==== //depot/projects/e500/sys/dev/scc/scc_bfe_ebus.c#3 (text) ====

@@ -59,7 +59,7 @@
 	if (!strcmp(nm, "se") || !strcmp(cmpt, "sab82532")) {
 		device_set_desc(dev, "Siemens SAB 82532 dual channel SCC");
 		sc->sc_class = &scc_sab82532_class;
-		return (scc_bfe_probe(dev, EBUS_REGSHFT, EBUS_RCLK));
+		return (scc_bfe_probe(dev, EBUS_REGSHFT, EBUS_RCLK, 0));
 	}
 	return (ENXIO);
 }

==== //depot/projects/e500/sys/dev/scc/scc_bfe_macio.c#3 (text) ====

@@ -56,7 +56,7 @@
 	if (!strcmp(nm, "escc")) {
 		device_set_desc(dev, "Zilog Z8530 dual channel SCC");
 		sc->sc_class = &scc_z8530_class;
-		return (scc_bfe_probe(dev, MACIO_REGSHFT, MACIO_RCLK));
+		return (scc_bfe_probe(dev, MACIO_REGSHFT, MACIO_RCLK, 0));
 	}
 	return (ENXIO);
 }

==== //depot/projects/e500/sys/dev/scc/scc_bfe_sbus.c#3 (text) ====

@@ -56,7 +56,7 @@
 	if (!strcmp(nm, "zs")) {
 		device_set_desc(dev, "Zilog Z8530 dual channel SCC");
 		sc->sc_class = &scc_z8530_class;
-		return (scc_bfe_probe(dev, SBUS_REGSHFT, SBUS_RCLK));
+		return (scc_bfe_probe(dev, SBUS_REGSHFT, SBUS_RCLK, 0));
 	}
 	return (ENXIO);
 }

==== //depot/projects/e500/sys/dev/scc/scc_core.c#3 (text) ====

@@ -27,8 +27,6 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD: src/sys/dev/scc/scc_core.c,v 1.10 2007/03/28 18:05:17 marcel Exp $");
 
-#define __RMAN_RESOURCE_VISIBLE
-
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/bus.h>
@@ -52,7 +50,7 @@
 
 MALLOC_DEFINE(M_SCC, "SCC", "SCC driver");
 
-static void
+static int
 scc_bfe_intr(void *arg)
 {
 	struct scc_softc *sc = arg;
@@ -90,7 +88,9 @@
 			else
 				SCC_ICLEAR(sc, ch);
 		}
+		return (FILTER_HANDLED);
 	}
+	return (FILTER_STRAY);
 }
 
 int
@@ -225,12 +225,12 @@
 		if (ch->ch_ires == NULL)
 			continue;
 		error = bus_setup_intr(dev, ch->ch_ires,
-		    INTR_TYPE_TTY | INTR_FAST, scc_bfe_intr, sc,
+		    INTR_TYPE_TTY, scc_bfe_intr, NULL, sc,
 		    &ch->ch_icookie);
 		if (error) {
 			error = bus_setup_intr(dev, ch->ch_ires,
-			    INTR_TYPE_TTY | INTR_MPSAFE, scc_bfe_intr, sc,
-			    &ch->ch_icookie);
+			    INTR_TYPE_TTY | INTR_MPSAFE, NULL,
+			    (driver_intr_t *)scc_bfe_intr, sc, &ch->ch_icookie);
 		} else
 			sc->sc_fastintr = 1;
 
@@ -338,7 +338,7 @@
 }
 
 int
-scc_bfe_probe(device_t dev, u_int regshft, u_int rclk)
+scc_bfe_probe(device_t dev, u_int regshft, u_int rclk, u_int rid)
 {
 	struct scc_softc *sc;
 	struct scc_class *cl;
@@ -367,12 +367,12 @@
 	 * I/O space. Any SCC that needs multiple windows will consequently
 	 * not be supported by this driver as-is.
 	 */
-	sc->sc_rrid = 0;
+	sc->sc_rrid = rid;
 	sc->sc_rtype = SYS_RES_MEMORY;
 	sc->sc_rres = bus_alloc_resource(dev, sc->sc_rtype, &sc->sc_rrid,
 	    0, ~0, cl->cl_channels * size, RF_ACTIVE);
 	if (sc->sc_rres == NULL) {
-		sc->sc_rrid = 0;
+		sc->sc_rrid = rid;
 		sc->sc_rtype = SYS_RES_IOPORT;
 		sc->sc_rres = bus_alloc_resource(dev, sc->sc_rtype,
 		    &sc->sc_rrid, 0, ~0, cl->cl_channels * size, RF_ACTIVE);
@@ -504,7 +504,7 @@
 
 int
 scc_bus_setup_intr(device_t dev, device_t child, struct resource *r, int flags,
-    void (*ihand)(void *), void *arg, void **cookiep)
+    driver_filter_t *filt, void (*ihand)(void *), void *arg, void **cookiep)
 {
 	struct scc_chan *ch;
 	struct scc_mode *m;
@@ -515,14 +515,14 @@
 		return (EINVAL);
 
 	/* Interrupt handlers must be FAST or MPSAFE. */
-	if ((flags & (INTR_FAST|INTR_MPSAFE)) == 0)
+	if (filt == NULL && !(flags & INTR_MPSAFE))
 		return (EINVAL);
 
 	sc = device_get_softc(dev);
 	if (sc->sc_polled)
 		return (ENXIO);
 
-	if (sc->sc_fastintr && !(flags & INTR_FAST)) {
+	if (sc->sc_fastintr && filt == NULL) {
 		sc->sc_fastintr = 0;
 		for (c = 0; c < sc->sc_class->cl_channels; c++) {
 			ch = &sc->sc_chan[c];
@@ -530,15 +530,15 @@
 				continue;
 			bus_teardown_intr(dev, ch->ch_ires, ch->ch_icookie);
 			bus_setup_intr(dev, ch->ch_ires,
-			    INTR_TYPE_TTY | INTR_MPSAFE, scc_bfe_intr, sc,
-			    &ch->ch_icookie);
+			    INTR_TYPE_TTY | INTR_MPSAFE, NULL,
+			    (driver_intr_t *)scc_bfe_intr, sc, &ch->ch_icookie);
 		}
 	}
 
 	m = device_get_ivars(child);
 	m->m_hasintr = 1;
-	m->m_fastintr = (flags & INTR_FAST) ? 1 : 0;
-	m->ih = ihand;
+	m->m_fastintr = (filt != NULL) ? 1 : 0;
+	m->ih = (filt != NULL) ? filt : (driver_filter_t *)ihand;
 	m->ih_arg = arg;
 
 	i = 0, isrc = SER_INT_OVERRUN;

==== //depot/projects/e500/sys/dev/scc/scc_dev_sab82532.c#3 (text) ====

@@ -27,8 +27,6 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD: src/sys/dev/scc/scc_dev_sab82532.c,v 1.2 2006/04/01 04:51:56 marcel Exp $");
 
-#define __RMAN_RESOURCE_VISIBLE
-
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/bus.h>

==== //depot/projects/e500/sys/dev/scc/scc_dev_z8530.c#3 (text) ====

@@ -27,8 +27,6 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD: src/sys/dev/scc/scc_dev_z8530.c,v 1.3 2006/07/26 03:10:01 marcel Exp $");
 
-#define __RMAN_RESOURCE_VISIBLE
-
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/bus.h>

==== //depot/projects/e500/sys/dev/scc/scc_if.m#3 (text) ====

@@ -25,10 +25,6 @@
 #
 # $FreeBSD: src/sys/dev/scc/scc_if.m,v 1.2 2007/03/28 18:05:17 marcel Exp $
 
-CODE {
-#define __RMAN_RESOURCE_VISIBLE
-}
-
 #include <sys/param.h>
 #include <sys/bus.h>
 #include <machine/bus.h>

==== //depot/projects/e500/sys/powerpc/aim/clock.c#2 (text+ko) ====

@@ -56,13 +56,14 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/clock.c,v 1.20 2005/02/04 01:41:38 grehan Exp $");
+__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/clock.c,v 1.27 2006/10/05 06:04:44 grehan Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
 #include <sys/sysctl.h>
 #include <sys/bus.h>
+#include <sys/clock.h>
 #include <sys/timetc.h>
 #include <sys/interrupt.h>
 
@@ -82,17 +83,6 @@
 static long		ticks_per_intr;
 static volatile u_long	lasttb;
 
-static int sysctl_machdep_adjkerntz(SYSCTL_HANDLER_ARGS);
-
-int	wall_cmos_clock;	/* wall CMOS clock assumed if != 0 */
-SYSCTL_INT(_machdep, CPU_WALLCLOCK, wall_cmos_clock,
-	CTLFLAG_RW, &wall_cmos_clock, 0, "");
-
-int	adjkerntz;		/* local offset from GMT in seconds */
-SYSCTL_PROC(_machdep, CPU_ADJKERNTZ, adjkerntz, CTLTYPE_INT|CTLFLAG_RW,
-	&adjkerntz, 0, sysctl_machdep_adjkerntz, "I", "");
-
-#define	SECDAY		86400
 #define	DIFF19041970	2082844800
 
 static int		clockinitted = 0;
@@ -107,17 +97,6 @@
 	"decrementer"		/* name */
 };
 
-static int
-sysctl_machdep_adjkerntz(SYSCTL_HANDLER_ARGS)
-{
-	int error;
-
-	error = sysctl_handle_int(oidp, oidp->oid_arg1, oidp->oid_arg2, req);
-	if (!error && req->newptr)
-		resettodr();
-	return (error);
-}
-
 void
 inittodr(time_t base)
 {
@@ -183,7 +162,7 @@
 }
 
 void
-decr_intr(struct clockframe *frame)
+decr_intr(struct trapframe *frame)
 {
 	u_long		tb;
 	long		tick;
@@ -225,10 +204,10 @@
 	 */
 #if 0
 	while (--nticks > 0) {
-		hardclock(frame);
+		hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame));
 	}
 #endif
-	hardclock(frame);
+	hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame));
 }
 
 void

==== //depot/projects/e500/sys/powerpc/aim/copyinout.c#2 (text+ko) ====

@@ -54,7 +54,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/copyinout.c,v 1.11 2005/01/07 02:29:20 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/copyinout.c,v 1.15 2006/10/18 19:56:20 grehan Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -322,17 +322,23 @@
 	return ((int32_t)fuword(addr));
 }
 
-intptr_t
-casuptr(intptr_t *addr, intptr_t old, intptr_t new)
+uint32_t
+casuword32(volatile uint32_t *base, uint32_t oldval, uint32_t newval)
+{
+	return (casuword((volatile u_long *)base, oldval, newval));
+}
+
+u_long
+casuword(volatile u_long *addr, u_long old, u_long new)
 {
 	struct thread *td;
 	pmap_t pm;
 	faultbuf env;
-	intptr_t *p, val;
+	u_long *p, val;
 
 	td = PCPU_GET(curthread);
 	pm = &td->td_proc->p_vmspace->vm_pmap;
-	p = (intptr_t *)((u_int)USER_ADDR + ((u_int)addr & ~SEGMENT_MASK));
+	p = (u_long *)((u_int)USER_ADDR + ((u_int)addr & ~SEGMENT_MASK));
 
 	set_user_sr(pm->pm_sr[(u_int)addr >> ADDR_SR_SHFT]);
 
@@ -342,7 +348,7 @@
 	}
 
 	val = *p;
-	(void) atomic_cmpset_32(p, old, new);
+	(void) atomic_cmpset_32((volatile uint32_t *)p, old, new);
 
 	td->td_pcb->pcb_onfault = NULL;
 

==== //depot/projects/e500/sys/powerpc/aim/interrupt.c#2 (text+ko) ====

@@ -24,7 +24,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/powerpc/powerpc/interrupt.c,v 1.4 2005/01/07 02:29:20 imp Exp $
+ * $FreeBSD: src/sys/powerpc/powerpc/interrupt.c,v 1.5 2005/12/22 22:16:08 jhb Exp $
  */
 
 /*
@@ -72,7 +72,7 @@
 	powerpc_extintr_handler = new_extint;
 }
 
-extern void	decr_intr(struct clockframe *);
+extern void	decr_intr(struct trapframe *);
 extern void	trap(struct trapframe *);
 
 /*
@@ -84,7 +84,6 @@
 powerpc_interrupt(struct trapframe *framep)
 {
         struct thread *td;
-	struct clockframe ckframe;
 
 	td = curthread;
 
@@ -97,9 +96,7 @@
 
 	case EXC_DECR:
 		atomic_add_int(&td->td_intr_nesting_level, 1);
-		ckframe.srr0 = framep->srr0;
-		ckframe.srr1 = framep->srr1;
-		decr_intr(&ckframe);
+		decr_intr(framep);
 		atomic_subtract_int(&td->td_intr_nesting_level, 1);	
 		break;
 

==== //depot/projects/e500/sys/powerpc/aim/locore.S#2 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/powerpc/powerpc/locore.S,v 1.21.2.1 2005/11/11 05:21:08 grehan Exp $ */
+/* $FreeBSD: src/sys/powerpc/powerpc/locore.S,v 1.22 2005/10/30 21:29:59 grehan Exp $ */
 /* $NetBSD: locore.S,v 1.24 2000/05/31 05:09:17 thorpej Exp $ */
 
 /*-

==== //depot/projects/e500/sys/powerpc/aim/machdep.c#2 (text+ko) ====

@@ -55,7 +55,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/machdep.c,v 1.89.2.1 2005/08/08 07:02:12 grehan Exp $");
+__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/machdep.c,v 1.101 2007/05/18 07:10:47 jeff Exp $");
 
 #include "opt_compat.h"
 #include "opt_ddb.h"
@@ -104,12 +104,12 @@
 #include <vm/vm_pager.h>
 
 #include <machine/bat.h>
-#include <machine/clock.h>
 #include <machine/cpu.h>
 #include <machine/elf.h>
 #include <machine/fpu.h>
 #include <machine/md_var.h>
 #include <machine/metadata.h>
+#include <machine/mmuvar.h>
 #include <machine/pcb.h>
 #include <machine/powerpc.h>
 #include <machine/reg.h>
@@ -136,9 +136,6 @@
 char		machine[] = "powerpc";
 SYSCTL_STRING(_hw, HW_MACHINE, machine, CTLFLAG_RD, machine, 0, "");
 
-static char	model[128];
-SYSCTL_STRING(_hw, HW_MODEL, model, CTLFLAG_RD, model, 0, "");
-
 static int cacheline_size = CACHELINESIZE;
 SYSCTL_INT(_machdep, CPU_CACHELINE, cacheline_size,
 	   CTLFLAG_RD, &cacheline_size, 0, "");
@@ -169,6 +166,14 @@
 
 struct kva_md_info kmi;
 
+void setPQL2(int *const size, int *const ways);
+
+void
+setPQL2(int *const size, int *const ways)
+{
+	return;
+}
+
 static void
 powerpc_ofw_shutdown(void *junk, int howto)
 {
@@ -218,8 +223,8 @@
 
 	vm_ksubmap_init(&kmi);
 
-	printf("avail memory = %ld (%ld MB)\n", ptoa(cnt.v_free_count),
-	    ptoa(cnt.v_free_count) / 1048576);
+	printf("avail memory = %ld (%ld MB)\n", ptoa(VMCNT_GET(free_count)),
+	    ptoa(VMCNT_GET(free_count)) / 1048576);
 
 	/*
 	 * Set up buffers, so they can be used to read disk labels.
@@ -287,7 +292,7 @@
 	/*
 	 * Start initializing proc0 and thread0.
 	 */
-	proc_linkup(&proc0, &ksegrp0, &thread0);
+	proc_linkup(&proc0, &thread0);
 	thread0.td_frame = &frame0;
 
 	/*
@@ -317,6 +322,8 @@
 
 	kdb_init();
 
+	kobj_machdep_init();
+
 	/*
 	 * XXX: Initialize the interrupt tables.
 	 *      Disable translation in case the vector area
@@ -329,7 +336,7 @@
 	bcopy(&dsitrap,  (void *)EXC_DSI,  (size_t)&dsisize);
 	bcopy(&trapcode, (void *)EXC_ISI,  (size_t)&trapsize);
 	bcopy(&trapcode, (void *)EXC_EXI,  (size_t)&trapsize);
-	bcopy(&trapcode, (void *)EXC_ALI,  (size_t)&trapsize);
+	bcopy(&alitrap,  (void *)EXC_ALI,  (size_t)&alisize);
 	bcopy(&trapcode, (void *)EXC_PGM,  (size_t)&trapsize);
 	bcopy(&trapcode, (void *)EXC_FPU,  (size_t)&trapsize);
 	bcopy(&trapcode, (void *)EXC_DECR, (size_t)&trapsize);
@@ -358,6 +365,7 @@
 	/*
 	 * Initialise virtual memory.
 	 */
+	pmap_mmu_install(MMU_TYPE_OEA, 0);		/* XXX temporary */
 	pmap_bootstrap(startkernel, endkernel);
 
 	/*
@@ -432,7 +440,7 @@
 }
 
 void
-sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code)
+sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
 {
 	struct trapframe *tf;
 	struct sigframe *sfp;
@@ -441,10 +449,14 @@
 	struct thread *td;
 	struct proc *p;
 	int oonstack, rndfsize;
+	int sig;
+	int code;
 
 	td = curthread;
 	p = td->td_proc;
 	PROC_LOCK_ASSERT(p, MA_OWNED);
+	sig = ksi->ksi_signo;
+	code = ksi->ksi_code;
 	psp = p->p_sigacts;
 	mtx_assert(&psp->ps_mtx, MA_OWNED);
 	tf = td->td_frame;
@@ -472,7 +484,7 @@
 	 */
 	if ((td->td_pflags & TDP_ALTSTACK) != 0 && !oonstack &&
 	    SIGISMEMBER(psp->ps_sigonstack, sig)) {
-		sfp = (struct sigframe *)((caddr_t)td->td_sigstk.ss_sp +
+		sfp = (struct sigframe *)(td->td_sigstk.ss_sp +
 		   td->td_sigstk.ss_size - rndfsize);
 	} else {
 		sfp = (struct sigframe *)(tf->fixreg[1] - rndfsize);
@@ -512,12 +524,15 @@
 		/*
 		 * Fill siginfo structure.
 		 */
+		sf.sf_si = ksi->ksi_info;
 		sf.sf_si.si_signo = sig;
-		sf.sf_si.si_code = code;
-		sf.sf_si.si_addr = (void *)tf->srr0;
+		sf.sf_si.si_addr = (void *) ((tf->exc == EXC_DSI) ? 
+		                             tf->dar : tf->srr0);
 	} else {
 		/* Old FreeBSD-style arguments. */
 		tf->fixreg[FIRSTARG+1] = code;
+		tf->fixreg[FIRSTARG+3] = (tf->exc == EXC_DSI) ? 
+		                             tf->dar : tf->srr0;
 	}
 	mtx_unlock(&psp->ps_mtx);
 	PROC_UNLOCK(p);
@@ -527,7 +542,7 @@
 	/*
 	 * copy the frame out to userland.
 	 */
-	if (copyout((caddr_t)&sf, (caddr_t)sfp, sizeof(sf)) != 0) {
+	if (copyout(&sf, sfp, sizeof(*sfp)) != 0) {
 		/*
 		 * Process has trashed its stack. Kill it.
 		 */
@@ -543,25 +558,6 @@
 	mtx_lock(&psp->ps_mtx);
 }
 
-/*
- * Build siginfo_t for SA thread
- */
-void
-cpu_thread_siginfo(int sig, u_long code, siginfo_t *si)
-{
-	struct proc *p;
-	struct thread *td;
-
-	td = curthread;
-	p = td->td_proc;
-	PROC_LOCK_ASSERT(p, MA_OWNED);
-
-	bzero(si, sizeof(*si));
-	si->si_signo = sig;
-	si->si_code = code;
-	/* XXXKSE fill other fields */
-}
-
 int
 sigreturn(struct thread *td, struct sigreturn_args *uap)
 {

==== //depot/projects/e500/sys/powerpc/aim/mem.c#2 (text+ko) ====

@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/mem.c,v 1.1 2004/08/16 13:07:40 ssouhlal Exp $");
+__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/mem.c,v 1.2 2006/07/26 17:12:54 marcel Exp $");
 
 /*
  * Memory special file
@@ -59,7 +59,6 @@
 #include <sys/uio.h>
 
 #include <machine/md_var.h>
-#include <machine/ofw_machdep.h>
 #include <machine/vmparam.h>
 
 #include <vm/vm.h>

==== //depot/projects/e500/sys/powerpc/aim/nexus.c#2 (text+ko) ====

@@ -52,7 +52,7 @@
  *
  * 	from: FreeBSD: src/sys/i386/i386/nexus.c,v 1.43 2001/02/09
  *
- * $FreeBSD: src/sys/powerpc/powerpc/nexus.c,v 1.12 2005/01/07 02:29:20 imp Exp $
+ * $FreeBSD: src/sys/powerpc/powerpc/nexus.c,v 1.14 2007/04/20 03:24:59 grehan Exp $
  */
 #include "opt_psim.h"
 
@@ -74,6 +74,7 @@
 
 #include <sys/rman.h>
 
+#include "ofw_bus_if.h"
 #include "pic_if.h"
 
 /*
@@ -112,7 +113,7 @@
 static int	nexus_read_ivar(device_t, device_t, int, uintptr_t *);
 static int	nexus_write_ivar(device_t, device_t, int, uintptr_t);
 static int	nexus_setup_intr(device_t, device_t, struct resource *, int,
-		    driver_intr_t *, void *, void **);
+		    driver_filter_t *, driver_intr_t *, void *, void **);
 static int	nexus_teardown_intr(device_t, device_t, struct resource *,
 		    void *);
 static struct	resource *nexus_alloc_resource(device_t, device_t, int, int *,
@@ -124,6 +125,11 @@
 static int	nexus_release_resource(device_t, device_t, int, int,
 		    struct resource *);
 
+static phandle_t	 nexus_ofw_get_node(device_t, device_t);
+static const char	*nexus_ofw_get_name(device_t, device_t);
+static const char	*nexus_ofw_get_type(device_t, device_t);
+static const char	*nexus_ofw_get_compat(device_t, device_t);
+
 /*
  * Local routines
  */
@@ -151,6 +157,12 @@
 	DEVMETHOD(bus_deactivate_resource,	nexus_deactivate_resource),
 	DEVMETHOD(bus_release_resource,	nexus_release_resource),
 
+	/* OFW bus interface */
+	DEVMETHOD(ofw_bus_get_node, nexus_ofw_get_node),
+	DEVMETHOD(ofw_bus_get_name, nexus_ofw_get_name),
+	DEVMETHOD(ofw_bus_get_type, nexus_ofw_get_type),
+	DEVMETHOD(ofw_bus_get_compat, nexus_ofw_get_compat),
+
 	{ 0, 0 }
 };
 
@@ -290,7 +302,7 @@
 
 static int
 nexus_setup_intr(device_t dev, device_t child, struct resource *res, int flags,
-    driver_intr_t *intr, void *arg, void **cookiep)
+    driver_filter_t *filter, driver_intr_t *intr, void *arg, void **cookiep)
 {
 	struct	nexus_softc *sc;
 
@@ -299,8 +311,8 @@
 	if (device_get_state(sc->sc_pic) != DS_ATTACHED)
 		panic("nexus_setup_intr: no pic attached\n");
 
-	return (PIC_SETUP_INTR(sc->sc_pic, child, res, flags, intr, arg,
-	    cookiep));
+	return (PIC_SETUP_INTR(sc->sc_pic, child, res, flags, filter, intr, 
+	    arg, cookiep));
 }
 
 static int
@@ -416,3 +428,47 @@
 
 	return (0);
 }
+
+static const char *
+nexus_ofw_get_name(device_t bus, device_t dev)
+{
+	struct nexus_devinfo *dinfo;
+
+	if ((dinfo = device_get_ivars(dev)) == NULL)
+		return (NULL);
+	
+	return (dinfo->ndi_name);
+}
+
+static phandle_t
+nexus_ofw_get_node(device_t bus, device_t dev)
+{
+	struct nexus_devinfo *dinfo;
+
+	if ((dinfo = device_get_ivars(dev)) == NULL)
+		return (0);
+	
+	return (dinfo->ndi_node);
+}
+
+static const char *
+nexus_ofw_get_type(device_t bus, device_t dev)
+{
+	struct nexus_devinfo *dinfo;
+
+	if ((dinfo = device_get_ivars(dev)) == NULL)
+		return (NULL);
+	
+	return (dinfo->ndi_device_type);
+}
+
+static const char *
+nexus_ofw_get_compat(device_t bus, device_t dev)
+{
+	struct nexus_devinfo *dinfo;
+
+	if ((dinfo = device_get_ivars(dev)) == NULL)
+		return (NULL);
+	
+	return (dinfo->ndi_compatible);
+}

==== //depot/projects/e500/sys/powerpc/aim/ofw_machdep.c#2 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/ofw_machdep.c,v 1.13.2.1 2005/11/11 05:21:08 grehan Exp $");
+__FBSDID("$FreeBSD: src/sys/powerpc/powerpc/ofw_machdep.c,v 1.17 2006/12/13 06:11:22 marcel Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -46,11 +46,14 @@
 #include <net/ethernet.h>
 
 #include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_pci.h>
 
 #include <vm/vm.h>
 #include <vm/vm_param.h>
 #include <vm/vm_page.h>
 
+#include <machine/bus.h>
+#include <machine/md_var.h>
 #include <machine/powerpc.h>
 #include <machine/ofw_machdep.h>
 #include <powerpc/ofw/ofw_pci.h>
@@ -62,7 +65,6 @@
 extern register_t ofmsr[5];
 extern struct   pcpu __pcpu[MAXCPU];
 extern struct	pmap ofw_pmap;
-extern int	pmap_bootstrapped;
 static int	(*ofwcall)(void *);
 
 /*
@@ -285,6 +287,141 @@
 	OF_getprop(node, "local-mac-address", addr, ETHER_ADDR_LEN);
 }
 
+/*
+ * Return a bus handle and bus tag that corresponds to the register
+ * numbered regno for the device referenced by the package handle
+ * dev. This function is intended to be used by console drivers in
+ * early boot only. It works by mapping the address of the device's
+ * register in the address space of its parent and recursively walk
+ * the device tree upward this way.
+ */
+static void
+OF_get_addr_props(phandle_t node, uint32_t *addrp, uint32_t *sizep, int *pcip)
+{
+	char name[16];
+	uint32_t addr, size;
+	int pci, res;
+
+	res = OF_getprop(node, "#address-cells", &addr, sizeof(addr));
+	if (res == -1)
+		addr = 2;
+	res = OF_getprop(node, "#size-cells", &size, sizeof(size));
+	if (res == -1)
+		size = 1;
+	pci = 0;
+	if (addr == 3 && size == 2) {
+		res = OF_getprop(node, "name", name, sizeof(name));
+		if (res != -1) {
+			name[sizeof(name) - 1] = '\0';
+			pci = (strcmp(name, "pci") == 0) ? 1 : 0;
+		}
+	}
+	if (addrp != NULL)
+		*addrp = addr;
+	if (sizep != NULL)
+		*sizep = size;
+	if (pcip != NULL)
+		*pcip = pci;
+}
+
+int
+OF_decode_addr(phandle_t dev, int regno, bus_space_tag_t *tag,
+    bus_space_handle_t *handle)
+{
+	uint32_t cell[32];
+	bus_addr_t addr, raddr, baddr;
+	bus_size_t size, rsize;
+	uint32_t c, nbridge, naddr, nsize;
+	phandle_t bridge, parent;
+	u_int spc, rspc;
+	int pci, pcib, res;
+
+	/* Sanity checking. */
+	if (dev == 0)
+		return (EINVAL);
+	bridge = OF_parent(dev);
+	if (bridge == 0)
+		return (EINVAL);
+	if (regno < 0)
+		return (EINVAL);
+	if (tag == NULL || handle == NULL)
+		return (EINVAL);
+
+	/* Get the requested register. */
+	OF_get_addr_props(bridge, &naddr, &nsize, &pci);
+	res = OF_getprop(dev, (pci) ? "assigned-addresses" : "reg",
+	    cell, sizeof(cell));
+	if (res == -1)
+		return (ENXIO);
+	if (res % sizeof(cell[0]))
+		return (ENXIO);
+	res /= sizeof(cell[0]);
+	regno *= naddr + nsize;
+	if (regno + naddr + nsize > res)
+		return (EINVAL);
+	spc = (pci) ? cell[regno] & OFW_PCI_PHYS_HI_SPACEMASK : ~0;
+	addr = 0;
+	for (c = 0; c < naddr; c++)
+		addr = ((uint64_t)addr << 32) | cell[regno++];
+	size = 0;
+	for (c = 0; c < nsize; c++)
+		size = ((uint64_t)size << 32) | cell[regno++];
+
+	/*
+	 * Map the address range in the bridge's decoding window as given
+	 * by the "ranges" property. If a node doesn't have such property
+	 * then no mapping is done.
+	 */
+	parent = OF_parent(bridge);
+	while (parent != 0) {
+		OF_get_addr_props(parent, &nbridge, NULL, &pcib);
+		res = OF_getprop(bridge, "ranges", cell, sizeof(cell));
+		if (res == -1)
+			goto next;
+		if (res % sizeof(cell[0]))
+			return (ENXIO);
+		res /= sizeof(cell[0]);
+		regno = 0;
+		while (regno < res) {
+			rspc = (pci)
+			    ? cell[regno] & OFW_PCI_PHYS_HI_SPACEMASK
+			    : ~0;
+			if (rspc != spc) {
+				regno += naddr + nbridge + nsize;
+				continue;
+			}
+			raddr = 0;
+			for (c = 0; c < naddr; c++)
+				raddr = ((uint64_t)raddr << 32) | cell[regno++];
+			rspc = (pcib)
+			    ? cell[regno] & OFW_PCI_PHYS_HI_SPACEMASK
+			    : ~0;
+			baddr = 0;
+			for (c = 0; c < nbridge; c++)
+				baddr = ((uint64_t)baddr << 32) | cell[regno++];
+			rsize = 0;
+			for (c = 0; c < nsize; c++)
+				rsize = ((uint64_t)rsize << 32) | cell[regno++];
+			if (addr < raddr || addr >= raddr + rsize)
+				continue;
+			addr = addr - raddr + baddr;
+			if (rspc != ~0)
+				spc = rspc;
+		}
+
+	next:
+		bridge = parent;
+		parent = OF_parent(bridge);
+		OF_get_addr_props(bridge, &naddr, &nsize, &pci);
+	}
+
+	/* Default to memory mapped I/O. */
+	*tag = PPC_BUS_SPACE_MEM;
+	if (spc == OFW_PCI_PHYS_HI_SPACE_IO)
+		*tag = PPC_BUS_SPACE_IO;

>>> TRUNCATED FOR MAIL (1000 lines) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200705210159.l4L1xhT1048237>