Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 1 Jul 2003 11:40:24 -0700 (PDT)
From:      John Baldwin <jhb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 33938 for review
Message-ID:  <200307011840.h61IeO0E089309@repoman.freebsd.org>

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

Change 33938 by jhb@jhb_laptop on 2003/07/01 11:39:50

	IFC @33935.

Affected files ...

.. //depot/projects/smpng/sys/alpha/alpha/busdma_machdep.c#18 integrate
.. //depot/projects/smpng/sys/alpha/alpha/machdep.c#58 integrate
.. //depot/projects/smpng/sys/alpha/alpha/pmap.c#47 integrate
.. //depot/projects/smpng/sys/alpha/alpha/support.s#7 integrate
.. //depot/projects/smpng/sys/alpha/include/bus.h#11 integrate
.. //depot/projects/smpng/sys/alpha/isa/isa_dma.c#4 integrate
.. //depot/projects/smpng/sys/alpha/mcbus/mcpcia.c#17 integrate
.. //depot/projects/smpng/sys/amd64/amd64/busdma_machdep.c#3 integrate
.. //depot/projects/smpng/sys/amd64/amd64/machdep.c#9 integrate
.. //depot/projects/smpng/sys/amd64/amd64/pmap.c#5 integrate
.. //depot/projects/smpng/sys/amd64/conf/GENERIC#6 integrate
.. //depot/projects/smpng/sys/amd64/include/bus_dma.h#5 integrate
.. //depot/projects/smpng/sys/boot/common/loader.8#24 integrate
.. //depot/projects/smpng/sys/boot/ficl/Makefile#6 integrate
.. //depot/projects/smpng/sys/boot/forth/loader.conf#19 integrate
.. //depot/projects/smpng/sys/boot/i386/btx/lib/Makefile#5 integrate
.. //depot/projects/smpng/sys/boot/i386/kgzldr/Makefile#9 integrate
.. //depot/projects/smpng/sys/boot/pc98/btx/lib/Makefile#4 integrate
.. //depot/projects/smpng/sys/boot/pc98/kgzldr/Makefile#7 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_ioctl.c#28 integrate
.. //depot/projects/smpng/sys/conf/NOTES#47 integrate
.. //depot/projects/smpng/sys/conf/files#80 integrate
.. //depot/projects/smpng/sys/conf/files.powerpc#14 integrate
.. //depot/projects/smpng/sys/conf/files.sparc64#29 integrate
.. //depot/projects/smpng/sys/conf/options.i386#28 integrate
.. //depot/projects/smpng/sys/conf/options.pc98#29 integrate
.. //depot/projects/smpng/sys/conf/options.sparc64#7 integrate
.. //depot/projects/smpng/sys/dev/aac/aac.c#27 integrate
.. //depot/projects/smpng/sys/dev/aac/aac_pci.c#22 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi_ec.c#17 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi_pci.c#4 integrate
.. //depot/projects/smpng/sys/dev/advansys/adv_eisa.c#4 integrate
.. //depot/projects/smpng/sys/dev/advansys/adv_isa.c#4 integrate
.. //depot/projects/smpng/sys/dev/advansys/adv_pci.c#4 integrate
.. //depot/projects/smpng/sys/dev/advansys/advansys.c#7 integrate
.. //depot/projects/smpng/sys/dev/advansys/adw_pci.c#4 integrate
.. //depot/projects/smpng/sys/dev/advansys/adwcam.c#7 integrate
.. //depot/projects/smpng/sys/dev/aha/aha.c#9 integrate
.. //depot/projects/smpng/sys/dev/aha/aha_isa.c#4 integrate
.. //depot/projects/smpng/sys/dev/aha/aha_mca.c#4 integrate
.. //depot/projects/smpng/sys/dev/ahb/ahb.c#8 integrate
.. //depot/projects/smpng/sys/dev/aic7xxx/ahc_eisa.c#8 integrate
.. //depot/projects/smpng/sys/dev/aic7xxx/ahc_pci.c#10 integrate
.. //depot/projects/smpng/sys/dev/aic7xxx/ahd_pci.c#8 integrate
.. //depot/projects/smpng/sys/dev/aic7xxx/aic79xx.c#15 integrate
.. //depot/projects/smpng/sys/dev/aic7xxx/aic79xx.h#12 integrate
.. //depot/projects/smpng/sys/dev/aic7xxx/aic79xx.seq#10 integrate
.. //depot/projects/smpng/sys/dev/aic7xxx/aic79xx_inline.h#10 integrate
.. //depot/projects/smpng/sys/dev/aic7xxx/aic79xx_osm.h#9 integrate
.. //depot/projects/smpng/sys/dev/aic7xxx/aic79xx_pci.c#12 integrate
.. //depot/projects/smpng/sys/dev/aic7xxx/aic7xxx_osm.h#10 integrate
.. //depot/projects/smpng/sys/dev/amd/amd.c#6 integrate
.. //depot/projects/smpng/sys/dev/amr/amr_pci.c#10 integrate
.. //depot/projects/smpng/sys/dev/an/if_an.c#31 integrate
.. //depot/projects/smpng/sys/dev/an/if_an_pci.c#13 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-dma.c#30 integrate
.. //depot/projects/smpng/sys/dev/ath/if_ath.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/if_ath_pci.c#2 integrate
.. //depot/projects/smpng/sys/dev/awi/awi.c#14 integrate
.. //depot/projects/smpng/sys/dev/awi/awi_wep.c#11 integrate
.. //depot/projects/smpng/sys/dev/awi/awi_wicfg.c#8 integrate
.. //depot/projects/smpng/sys/dev/awi/awivar.h#4 integrate
.. //depot/projects/smpng/sys/dev/awi/if_awi_pccard.c#7 integrate
.. //depot/projects/smpng/sys/dev/buslogic/bt.c#10 integrate
.. //depot/projects/smpng/sys/dev/buslogic/bt_eisa.c#5 integrate
.. //depot/projects/smpng/sys/dev/buslogic/bt_isa.c#4 integrate
.. //depot/projects/smpng/sys/dev/buslogic/bt_mca.c#4 integrate
.. //depot/projects/smpng/sys/dev/buslogic/bt_pci.c#4 integrate
.. //depot/projects/smpng/sys/dev/cardbus/cardbus.c#15 integrate
.. //depot/projects/smpng/sys/dev/ciss/ciss.c#17 integrate
.. //depot/projects/smpng/sys/dev/ct/ct_isa.c#6 integrate
.. //depot/projects/smpng/sys/dev/dpt/dpt_eisa.c#4 integrate
.. //depot/projects/smpng/sys/dev/dpt/dpt_isa.c#4 integrate
.. //depot/projects/smpng/sys/dev/dpt/dpt_pci.c#4 integrate
.. //depot/projects/smpng/sys/dev/dpt/dpt_scsi.c#8 integrate
.. //depot/projects/smpng/sys/dev/em/if_em.c#23 integrate
.. //depot/projects/smpng/sys/dev/en/midway.c#16 integrate
.. //depot/projects/smpng/sys/dev/fatm/if_fatm.c#2 integrate
.. //depot/projects/smpng/sys/dev/firewire/firewire.c#20 integrate
.. //depot/projects/smpng/sys/dev/firewire/firewirereg.h#10 integrate
.. //depot/projects/smpng/sys/dev/firewire/fwdma.c#2 integrate
.. //depot/projects/smpng/sys/dev/firewire/fwmem.c#10 integrate
.. //depot/projects/smpng/sys/dev/firewire/fwohci.c#18 integrate
.. //depot/projects/smpng/sys/dev/firewire/fwohci_pci.c#14 integrate
.. //depot/projects/smpng/sys/dev/firewire/sbp.c#20 integrate
.. //depot/projects/smpng/sys/dev/fxp/if_fxp.c#39 integrate
.. //depot/projects/smpng/sys/dev/gem/if_gem.c#14 integrate
.. //depot/projects/smpng/sys/dev/gem/if_gem_pci.c#9 integrate
.. //depot/projects/smpng/sys/dev/hatm/if_hatm.c#2 integrate
.. //depot/projects/smpng/sys/dev/hifn/hifn7751.c#9 integrate
.. //depot/projects/smpng/sys/dev/hme/if_hme.c#11 integrate
.. //depot/projects/smpng/sys/dev/hme/if_hme_pci.c#7 integrate
.. //depot/projects/smpng/sys/dev/ida/ida.c#11 integrate
.. //depot/projects/smpng/sys/dev/ida/ida_eisa.c#5 integrate
.. //depot/projects/smpng/sys/dev/ida/ida_pci.c#5 integrate
.. //depot/projects/smpng/sys/dev/iir/iir.c#7 integrate
.. //depot/projects/smpng/sys/dev/iir/iir_pci.c#7 integrate
.. //depot/projects/smpng/sys/dev/ips/ips.c#3 integrate
.. //depot/projects/smpng/sys/dev/ips/ips_commands.c#3 integrate
.. //depot/projects/smpng/sys/dev/ips/ips_disk.c#2 integrate
.. //depot/projects/smpng/sys/dev/ips/ips_ioctl.c#3 integrate
.. //depot/projects/smpng/sys/dev/ips/ips_pci.c#3 integrate
.. //depot/projects/smpng/sys/dev/isp/isp_pci.c#20 integrate
.. //depot/projects/smpng/sys/dev/isp/isp_sbus.c#5 integrate
.. //depot/projects/smpng/sys/dev/lnc/if_lnc_cbus.c#4 integrate
.. //depot/projects/smpng/sys/dev/lnc/if_lnc_isa.c#4 integrate
.. //depot/projects/smpng/sys/dev/lnc/if_lnc_pci.c#4 integrate
.. //depot/projects/smpng/sys/dev/mlx/mlx.c#10 integrate
.. //depot/projects/smpng/sys/dev/mlx/mlx_pci.c#4 integrate
.. //depot/projects/smpng/sys/dev/mly/mly.c#16 integrate
.. //depot/projects/smpng/sys/dev/mpt/mpt_pci.c#5 integrate
.. //depot/projects/smpng/sys/dev/pci/pci.c#28 integrate
.. //depot/projects/smpng/sys/dev/pci/pci_if.m#3 integrate
.. //depot/projects/smpng/sys/dev/pci/pci_private.h#7 integrate
.. //depot/projects/smpng/sys/dev/ray/if_ray.c#8 integrate
.. //depot/projects/smpng/sys/dev/sound/isa/ad1816.c#10 integrate
.. //depot/projects/smpng/sys/dev/sound/isa/ess.c#7 integrate
.. //depot/projects/smpng/sys/dev/sound/isa/mss.c#13 integrate
.. //depot/projects/smpng/sys/dev/sound/isa/sb16.c#9 integrate
.. //depot/projects/smpng/sys/dev/sound/isa/sb8.c#7 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/als4000.c#8 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/au88x0.c#2 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/aureal.c#5 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/cmi.c#14 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/cs4281.c#7 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/csapcm.c#4 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/ds1.c#9 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/emu10k1.c#12 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/es137x.c#7 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/fm801.c#8 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/ich.c#20 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/maestro.c#7 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/maestro3.c#13 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/solo.c#6 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/t4dwave.c#12 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/via8233.c#7 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/via82c686.c#12 integrate
.. //depot/projects/smpng/sys/dev/sound/pci/vibes.c#7 integrate
.. //depot/projects/smpng/sys/dev/sound/usb/uaudio_pcm.c#3 integrate
.. //depot/projects/smpng/sys/dev/sym/sym_hipd.c#13 integrate
.. //depot/projects/smpng/sys/dev/trm/trm.c#9 integrate
.. //depot/projects/smpng/sys/dev/twe/twe_freebsd.c#15 integrate
.. //depot/projects/smpng/sys/dev/tx/if_tx.c#10 integrate
.. //depot/projects/smpng/sys/dev/ubsec/ubsec.c#13 integrate
.. //depot/projects/smpng/sys/dev/usb/umct.c#1 branch
.. //depot/projects/smpng/sys/dev/usb/usbdevs#34 integrate
.. //depot/projects/smpng/sys/dev/usb/usbdevs.h#35 integrate
.. //depot/projects/smpng/sys/dev/usb/usbdevs_data.h#35 integrate
.. //depot/projects/smpng/sys/dev/usb/uscanner.c#12 integrate
.. //depot/projects/smpng/sys/dev/vinum/vinumconfig.c#14 integrate
.. //depot/projects/smpng/sys/dev/wds/wd7000.c#4 integrate
.. //depot/projects/smpng/sys/dev/wi/if_wi.c#52 integrate
.. //depot/projects/smpng/sys/dev/wi/if_wi_pccard.c#18 integrate
.. //depot/projects/smpng/sys/dev/wi/if_wi_pci.c#13 integrate
.. //depot/projects/smpng/sys/dev/wi/if_wivar.h#14 integrate
.. //depot/projects/smpng/sys/fs/msdosfs/msdosfs_vfsops.c#19 integrate
.. //depot/projects/smpng/sys/i386/acpica/acpi_wakeup.c#17 integrate
.. //depot/projects/smpng/sys/i386/i386/busdma_machdep.c#20 integrate
.. //depot/projects/smpng/sys/i386/i386/genassym.c#24 integrate
.. //depot/projects/smpng/sys/i386/i386/machdep.c#61 integrate
.. //depot/projects/smpng/sys/i386/i386/mp_machdep.c#47 integrate
.. //depot/projects/smpng/sys/i386/i386/pmap.c#40 integrate
.. //depot/projects/smpng/sys/i386/i386/swtch.s#18 integrate
.. //depot/projects/smpng/sys/i386/include/bus_dma.h#7 integrate
.. //depot/projects/smpng/sys/i386/include/md_var.h#20 integrate
.. //depot/projects/smpng/sys/i386/include/pcpu.h#6 integrate
.. //depot/projects/smpng/sys/i4b/layer1/itjc/i4b_itjc_pci.c#9 integrate
.. //depot/projects/smpng/sys/ia64/ia64/busdma_machdep.c#17 integrate
.. //depot/projects/smpng/sys/ia64/ia64/machdep.c#59 integrate
.. //depot/projects/smpng/sys/ia64/ia64/pmap.c#48 integrate
.. //depot/projects/smpng/sys/ia64/ia64/vm_machdep.c#28 integrate
.. //depot/projects/smpng/sys/ia64/include/bus.h#11 integrate
.. //depot/projects/smpng/sys/ia64/isa/isa_dma.c#4 integrate
.. //depot/projects/smpng/sys/isa/psm.c#16 integrate
.. //depot/projects/smpng/sys/kern/init_sysent.c#30 integrate
.. //depot/projects/smpng/sys/kern/kern_intr.c#32 integrate
.. //depot/projects/smpng/sys/kern/kern_sig.c#71 integrate
.. //depot/projects/smpng/sys/kern/kern_synch.c#53 integrate
.. //depot/projects/smpng/sys/kern/kern_thread.c#38 integrate
.. //depot/projects/smpng/sys/kern/sched_ule.c#13 integrate
.. //depot/projects/smpng/sys/kern/subr_trap.c#55 integrate
.. //depot/projects/smpng/sys/kern/syscalls.c#30 integrate
.. //depot/projects/smpng/sys/kern/syscalls.master#29 integrate
.. //depot/projects/smpng/sys/kern/vfs_mount.c#16 integrate
.. //depot/projects/smpng/sys/modules/Makefile#56 integrate
.. //depot/projects/smpng/sys/modules/ath_hal/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/umct/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/wlan/Makefile#2 integrate
.. //depot/projects/smpng/sys/net/if_ieee80211.h#5 delete
.. //depot/projects/smpng/sys/net/if_ieee80211subr.c#4 delete
.. //depot/projects/smpng/sys/net80211/ieee80211.c#2 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_ioctl.c#2 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_node.c#2 integrate
.. //depot/projects/smpng/sys/netinet/ip_dummynet.c#18 integrate
.. //depot/projects/smpng/sys/netinet/ip_fw2.c#15 integrate
.. //depot/projects/smpng/sys/netipsec/ipsec.c#5 integrate
.. //depot/projects/smpng/sys/netipsec/ipsec_output.c#6 integrate
.. //depot/projects/smpng/sys/netipsec/key.c#4 integrate
.. //depot/projects/smpng/sys/netipsec/xform_ah.c#3 integrate
.. //depot/projects/smpng/sys/netipsec/xform_esp.c#3 integrate
.. //depot/projects/smpng/sys/netipsec/xform_ipcomp.c#3 integrate
.. //depot/projects/smpng/sys/opencrypto/crypto.c#9 integrate
.. //depot/projects/smpng/sys/opencrypto/cryptodev.h#5 integrate
.. //depot/projects/smpng/sys/opencrypto/cryptosoft.c#4 integrate
.. //depot/projects/smpng/sys/pc98/i386/machdep.c#55 integrate
.. //depot/projects/smpng/sys/pci/if_rl.c#31 integrate
.. //depot/projects/smpng/sys/pci/if_sis.c#27 integrate
.. //depot/projects/smpng/sys/pci/if_xl.c#29 integrate
.. //depot/projects/smpng/sys/powerpc/include/bus.h#11 integrate
.. //depot/projects/smpng/sys/powerpc/powermac/grackle.c#1 branch
.. //depot/projects/smpng/sys/powerpc/powermac/gracklevar.h#1 branch
.. //depot/projects/smpng/sys/powerpc/powermac/hrowpic.c#1 branch
.. //depot/projects/smpng/sys/powerpc/powermac/hrowpicvar.h#1 branch
.. //depot/projects/smpng/sys/powerpc/powermac/macio.c#6 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/busdma_machdep.c#13 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/machdep.c#40 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/pmap.c#28 integrate
.. //depot/projects/smpng/sys/sparc64/conf/GENERIC#31 integrate
.. //depot/projects/smpng/sys/sparc64/conf/NOTES#3 integrate
.. //depot/projects/smpng/sys/sparc64/ebus/ebus.c#8 integrate
.. //depot/projects/smpng/sys/sparc64/include/bus.h#17 integrate
.. //depot/projects/smpng/sys/sparc64/include/ofw_bus.h#5 integrate
.. //depot/projects/smpng/sys/sparc64/isa/isa.c#8 integrate
.. //depot/projects/smpng/sys/sparc64/isa/ofw_isa.c#4 integrate
.. //depot/projects/smpng/sys/sparc64/isa/ofw_isa.h#2 integrate
.. //depot/projects/smpng/sys/sparc64/pci/apb.c#5 integrate
.. //depot/projects/smpng/sys/sparc64/pci/ofw_pci.c#11 integrate
.. //depot/projects/smpng/sys/sparc64/pci/ofw_pci.h#6 integrate
.. //depot/projects/smpng/sys/sparc64/pci/ofw_pci_if.m#2 integrate
.. //depot/projects/smpng/sys/sparc64/pci/ofw_pcib.c#1 branch
.. //depot/projects/smpng/sys/sparc64/pci/ofw_pcib_subr.c#1 branch
.. //depot/projects/smpng/sys/sparc64/pci/ofw_pcib_subr.h#1 branch
.. //depot/projects/smpng/sys/sparc64/pci/ofw_pcibus.c#1 branch
.. //depot/projects/smpng/sys/sparc64/pci/psycho.c#24 integrate
.. //depot/projects/smpng/sys/sparc64/pci/psychovar.h#9 integrate
.. //depot/projects/smpng/sys/sparc64/sbus/sbus.c#12 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/bus_machdep.c#18 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/iommu.c#18 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/machdep.c#52 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/ofw_bus.c#6 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/pmap.c#39 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/sparcbus_if.m#3 delete
.. //depot/projects/smpng/sys/sys/kse.h#11 integrate
.. //depot/projects/smpng/sys/sys/mount.h#22 integrate
.. //depot/projects/smpng/sys/sys/param.h#43 integrate
.. //depot/projects/smpng/sys/sys/proc.h#93 integrate
.. //depot/projects/smpng/sys/sys/smp.h#7 integrate
.. //depot/projects/smpng/sys/sys/syscall.h#30 integrate
.. //depot/projects/smpng/sys/sys/syscall.mk#30 integrate
.. //depot/projects/smpng/sys/sys/sysproto.h#32 integrate
.. //depot/projects/smpng/sys/vm/pmap.h#19 integrate
.. //depot/projects/smpng/sys/vm/vm_kern.c#15 integrate
.. //depot/projects/smpng/sys/vm/vm_map.c#39 integrate
.. //depot/projects/smpng/sys/vm/vm_map.h#19 integrate
.. //depot/projects/smpng/sys/vm/vm_page.c#39 integrate
.. //depot/projects/smpng/sys/vm/vm_pageout.c#33 integrate

Differences ...

==== //depot/projects/smpng/sys/alpha/alpha/busdma_machdep.c#18 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/busdma_machdep.c,v 1.39 2003/06/27 08:31:47 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/busdma_machdep.c,v 1.40 2003/07/01 15:51:50 scottl Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -64,6 +64,8 @@
 	int		  flags;
 	int		  ref_count;
 	int		  map_count;
+	bus_dma_lock_t	 *lockfunc;
+	void		 *lockfuncarg;
 };
 
 struct bounce_page {
@@ -94,7 +96,6 @@
 	vm_offset_t	       busaddress;	/* address in bus space */
 	bus_dmamap_callback_t *callback;
 	void		      *callback_arg;
-	struct mtx	      *callback_mtx;
 	void		      *sgmaphandle;	/* handle into sgmap */
 	STAILQ_ENTRY(bus_dmamap) links;
 };
@@ -129,6 +130,46 @@
 	return (retval);
 }
 
+/*
+ * Convenience function for manipulating driver locks from busdma (during
+ * busdma_swi, for example).  Drivers that don't provide their own locks
+ * should specify &Giant to dmat->lockfuncarg.  Drivers that use their own
+ * non-mutex locking scheme don't have to use this at all.
+ */
+void
+busdma_lock_mutex(void *arg, bus_dma_lock_op_t op)
+{
+	struct mtx *dmtx;
+
+	dmtx = (struct mtx *)arg;
+	switch (op) {
+	case BUS_DMA_LOCK:
+		mtx_lock(dmtx);
+		break;
+	case BUS_DMA_UNLOCK:
+		mtx_unlock(dmtx);
+		break;
+	default:
+		panic("Unknown operation 0x%x for busdma_lock_mutex!", op);
+	}
+}
+
+/*
+ * dflt_lock should never get called.  It gets put into the dma tag when
+ * lockfunc == NULL, which is only valid if the maps that are associated
+ * with the tag are meant to never be defered.
+ * XXX Should have a way to identify which driver is responsible here.
+ */
+static void
+dflt_lock(void *arg, bus_dma_lock_op_t op)
+{
+#ifdef INVARIANTS
+	panic("driver error: busdma dflt_lock called");
+#else
+	printf("DRIVER_ERROR: busdma dflt_lock called\n");
+#endif
+}
+
 #define BUS_DMA_MIN_ALLOC_COMP BUS_DMA_BUS4
 /*
  * Allocate a device specific dma_tag.
@@ -138,7 +179,8 @@
 		   bus_size_t boundary, bus_addr_t lowaddr,
 		   bus_addr_t highaddr, bus_dma_filter_t *filter,
 		   void *filterarg, bus_size_t maxsize, int nsegments,
-		   bus_size_t maxsegsz, int flags, bus_dma_tag_t *dmat)
+		   bus_size_t maxsegsz, int flags, bus_dma_lock_t *lockfunc,
+		   void *lockfuncarg, bus_dma_tag_t *dmat)
 {
 	bus_dma_tag_t newtag;
 	int error = 0;
@@ -163,6 +205,13 @@
 	newtag->flags = flags;
 	newtag->ref_count = 1; /* Count ourself */
 	newtag->map_count = 0;
+	if (lockfunc != NULL) {
+		newtag->lockfunc = lockfunc;
+		newtag->lockfuncarg = lockfuncarg;
+	} else {
+		newtag->lockfunc = dflt_lock;
+		newtag->lockfuncarg = NULL;
+	}
 	
 	/* Take into account any restrictions imposed by our parent tag */
 	if (parent != NULL) {
@@ -926,18 +975,18 @@
 void
 busdma_swi(void)
 {
+	bus_dma_tag_t dmat;
 	struct bus_dmamap *map;
 
 	mtx_lock(&bounce_lock);
 	while ((map = STAILQ_FIRST(&bounce_map_callbacklist)) != NULL) {
 		STAILQ_REMOVE_HEAD(&bounce_map_callbacklist, links);
 		mtx_unlock(&bounce_lock);
-		if (map->callback_mtx != NULL)
-			mtx_lock(map->callback_mtx);
+		dmat = map->dmat;
+		(dmat->lockfunc)(dmat->lockfuncarg, BUS_DMA_LOCK);
 		bus_dmamap_load(map->dmat, map, map->buf, map->buflen,
 				map->callback, map->callback_arg, /*flags*/0);
-		if (map->callback_mtx != NULL)
-			mtx_unlock(map->callback_mtx);
+		(dmat->lockfunc)(dmat->lockfuncarg, BUS_DMA_UNLOCK);
 		mtx_lock(&bounce_lock);
 	}
 	mtx_unlock(&bounce_lock);

==== //depot/projects/smpng/sys/alpha/alpha/machdep.c#58 (text+ko) ====

@@ -88,7 +88,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.203 2003/06/10 16:50:43 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.204 2003/06/28 06:34:07 davidxu Exp $");
 
 #include "opt_compat.h"
 #include "opt_ddb.h"
@@ -1462,6 +1462,25 @@
 }
 
 /*
+ * Build siginfo_t for SA thread
+ */
+void
+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 */
+}
+
+/*
  * System call to cleanup state after a signal
  * has been taken.  Reset signal mask and
  * stack state from context left by sendsig (above).

==== //depot/projects/smpng/sys/alpha/alpha/pmap.c#47 (text+ko) ====

@@ -148,7 +148,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.126 2003/06/18 02:57:38 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.128 2003/06/29 21:20:02 alc Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -330,8 +330,6 @@
 static void	alpha_protection_init(void);
 static void	pmap_changebit(vm_page_t m, int bit, boolean_t setem);
 
-static vm_page_t pmap_enter_quick(pmap_t pmap, vm_offset_t va,
-				      vm_page_t m, vm_page_t mpte);
 static int pmap_remove_pte(pmap_t pmap, pt_entry_t* ptq, vm_offset_t sva);
 static void pmap_remove_page(struct pmap *pmap, vm_offset_t va);
 static int pmap_remove_entry(struct pmap *pmap, vm_page_t m, vm_offset_t va);
@@ -1973,7 +1971,7 @@
  * but is *MUCH* faster than pmap_enter...
  */
 
-static vm_page_t
+vm_page_t
 pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t mpte)
 {
 	register pt_entry_t *pte;
@@ -2090,18 +2088,18 @@
 
 	if (pmap == NULL || object == NULL)
 		return;
-
+	VM_OBJECT_LOCK(object);
 	psize = alpha_btop(size);
 
 	if ((object->type != OBJT_VNODE) ||
 		((limit & MAP_PREFAULT_PARTIAL) && (psize > MAX_INIT_PT) &&
 			(object->resident_page_count > MAX_INIT_PT))) {
-		return;
+		goto unlock_return;
 	}
 
 	if (psize + pindex > object->size) {
 		if (object->size < pindex)
-			return;
+			goto unlock_return;
 		psize = object->size - pindex;
 	}
 
@@ -2141,8 +2139,10 @@
 					vm_page_deactivate(p);
 				vm_page_busy(p);
 				vm_page_unlock_queues();
+				VM_OBJECT_UNLOCK(object);
 				mpte = pmap_enter_quick(pmap, 
 					addr + alpha_ptob(tmpidx), p, mpte);
+				VM_OBJECT_LOCK(object);
 				vm_page_lock_queues();
 				vm_page_wakeup(p);
 			}
@@ -2173,15 +2173,18 @@
 					vm_page_deactivate(p);
 				vm_page_busy(p);
 				vm_page_unlock_queues();
+				VM_OBJECT_UNLOCK(object);
 				mpte = pmap_enter_quick(pmap, 
 					addr + alpha_ptob(tmpidx), p, mpte);
+				VM_OBJECT_LOCK(object);
 				vm_page_lock_queues();
 				vm_page_wakeup(p);
 			}
 			vm_page_unlock_queues();
 		}
 	}
-	return;
+unlock_return:
+	VM_OBJECT_UNLOCK(object);
 }
 
 /*

==== //depot/projects/smpng/sys/alpha/alpha/support.s#7 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/alpha/alpha/support.s,v 1.13 2003/04/04 17:29:54 des Exp $
+ * $FreeBSD: src/sys/alpha/alpha/support.s,v 1.14 2003/06/29 17:14:42 marcel Exp $
  */
 
 /*
@@ -84,7 +84,27 @@
 	mov	zero, v0
 	RET
 	END(suword)
-	
+
+	LEAF(suword32, 2)
+	LDGP(pv)
+
+	ldiq	t0, VM_MAXUSER_ADDRESS /* verify address validity */
+	cmpult	a0, t0, t1
+	beq	t1, fusufault
+
+	lda	t0, fusufault		/* trap faults */
+	ldq	t2, PC_CURTHREAD(pcpup)
+	ldq	t2, TD_PCB(t2)
+	stq	t0, PCB_ONFAULT(t2)
+
+	stl	a1, 0(a0)		/* try the store */
+
+	stq	zero, PCB_ONFAULT(t2)	/* clean up */
+
+	mov	zero, v0
+	RET
+	END(suword32)
+
 	LEAF(subyte, 1)
 	LDGP(pv)
 
@@ -130,6 +150,25 @@
 	RET
 	END(fuword)
 
+	LEAF(fuword32, 1)
+	LDGP(pv)
+
+	ldiq	t0, VM_MAXUSER_ADDRESS /* verify address validity */
+	cmpult	a0, t0, t1
+	beq	t1, fusufault
+
+	lda	t0, fusufault		/* trap faults */
+	ldq	t2, PC_CURTHREAD(pcpup)
+	ldq	t2, TD_PCB(t2)
+	stq	t0, PCB_ONFAULT(t2)
+
+	ldl	v0, 0(a0)		/* get the word containing our byte */
+
+	stq	zero, PCB_ONFAULT(t2)	/* clean up */
+
+	RET
+	END(fuword32)
+
 	LEAF(fubyte, 1)
 	LDGP(pv)
 

==== //depot/projects/smpng/sys/alpha/include/bus.h#11 (text+ko) ====

@@ -67,7 +67,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
-/* $FreeBSD: src/sys/alpha/include/bus.h,v 1.21 2003/05/30 20:40:32 hmp Exp $ */
+/* $FreeBSD: src/sys/alpha/include/bus.h,v 1.22 2003/07/01 15:51:50 scottl Exp $ */
 
 #ifndef _ALPHA_BUS_H_
 #define _ALPHA_BUS_H_
@@ -523,6 +523,17 @@
 typedef int bus_dma_filter_t(void *, bus_addr_t);
 
 /*
+ * A function that performs driver-specific syncronization on behalf of
+ * busdma.
+ */
+typedef enum {
+	BUS_DMA_LOCK	= 0x01,
+	BUS_DMA_UNLOCK	= 0x02,
+} bus_dma_lock_op_t;
+
+typedef void bus_dma_lock_t(void *, bus_dma_lock_op_t);
+
+/*
  * Allocate a device specific dma_tag encapsulating the constraints of
  * the parent tag in addition to other restrictions specified:
  *
@@ -547,7 +558,8 @@
 		       bus_size_t boundary, bus_addr_t lowaddr,
 		       bus_addr_t highaddr, bus_dma_filter_t *filtfunc,
 		       void *filtfuncarg, bus_size_t maxsize, int nsegments,
-		       bus_size_t maxsegsz, int flags, bus_dma_tag_t *dmat);
+		       bus_size_t maxsegsz, int flags, bus_dma_lock_t *lockfunc,
+		       void *lockfuncarg, bus_dma_tag_t *dmat);
 
 int bus_dma_tag_destroy(bus_dma_tag_t dmat);
 
@@ -629,4 +641,9 @@
 	if ((dmamap) != NULL)				\
 		_bus_dmamap_unload(dmat, dmamap)
 
+/*
+ * Generic helper function for manipulating mutexes.
+ */
+void busdma_lock_mutex(void *arg, bus_dma_lock_op_t op);
+
 #endif /* _ALPHA_BUS_H_ */

==== //depot/projects/smpng/sys/alpha/isa/isa_dma.c#4 (text+ko) ====

@@ -48,11 +48,13 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/isa/isa_dma.c,v 1.8 2003/06/10 16:57:28 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/isa/isa_dma.c,v 1.9 2003/07/01 15:51:50 scottl Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/malloc.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>
 #include <sys/bus.h>
 #include <vm/vm.h>
 #include <vm/vm_param.h>
@@ -131,6 +133,8 @@
 			       /*maxsize*/bouncebufsize,
 			       /*nsegments*/1, /*maxsegz*/0x3ffff,
 			       /*flags*/BUS_DMA_ISA,
+			       /*lockfunc*/busdma_lock_mutex,
+			       /*lockarg*/&Giant,
 			       &dma_tag[chan]) != 0) {
 		panic("isa_dmainit: unable to create dma tag\n");
 	}

==== //depot/projects/smpng/sys/alpha/mcbus/mcpcia.c#17 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/mcbus/mcpcia.c,v 1.25 2003/06/10 17:02:51 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/mcbus/mcpcia.c,v 1.26 2003/06/28 13:47:23 ticso Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -58,6 +58,7 @@
 #include <alpha/mcbus/mcpciareg.h>
 #include <alpha/mcbus/mcpciavar.h>
 #include <alpha/pci/pcibus.h>
+#include <pci/pcireg.h>
 #include <pci/pcivar.h>
 
 #include "alphapci_if.h"
@@ -387,43 +388,49 @@
 }
 
 static int
-mcpcia_setup_intr(device_t dev, device_t child, struct resource *ir, int flags,
-       driver_intr_t *intr, void *arg, void **cp)
+mcpcia_pci_route_interrupt(device_t bus, device_t dev, int pin)
 {
-	struct mcpcia_softc *sc = MCPCIA_SOFTC(dev);
-	int slot, mid, gid, birq, irq, error, intpin, h;
-	
-	intpin = pci_get_intpin(child);
-	if (intpin == 0) {
-		/* No IRQ used */
-		return (0);
-	}
-	if (intpin < 1 || intpin > 4) {
-		/* Bad IRQ */
-		return (ENXIO);
+	int irq, slot, mid;
+
+	/*
+	 * Validate requested pin number.
+	 */
+	if ((pin < 1) || (pin > 4)) {
+		printf("mcpcia_pci_route_interrupt: bad interrupt pin %d\n",
+		    pin);
+		return(255);
 	}
 
-	slot = pci_get_slot(child);
-	mid = mcbus_get_mid(dev);
-	gid = mcbus_get_gid(dev);
+	slot = pci_get_slot(dev);
+	mid = mcbus_get_mid(bus);
 
-	if (slot == 0) {
-		device_t bdev; 
-		/* bridged - get slot from grandparent */
-		/* note that this is broken for all but the most trival case */
-		bdev = device_get_parent(device_get_parent(child));
-		slot = pci_get_slot(bdev);
-	}
+#if 0
+	printf("mcpcia_pci_route_interrupt: called for slot=%d, pin=%d, mid=%d\n", slot, pin, mid);
+#endif
 
 	if (mid == 5 && slot == 1) {
 		irq = 16;	/* MID 5, slot 1, is the internal NCR 53c810 */
 	} else if (slot >= 2 && slot <= 5) {
-		irq = ((slot - 2) * 4) + (intpin - 1);
+		irq = ((slot - 2) * 4) + (pin - 1);
 	} else {
-		device_printf(child, "weird slot number (%d); can't make irq\n",
+		printf("mcpcia_pci_route_interrupt: weird device number %d\n",
 		    slot);
-		return (ENXIO);
+		return (255);
 	}
+
+	return(irq);
+}
+
+static int
+mcpcia_setup_intr(device_t dev, device_t child, struct resource *ir, int flags,
+       driver_intr_t *intr, void *arg, void **cp)
+{
+	struct mcpcia_softc *sc = MCPCIA_SOFTC(dev);
+	int mid, birq, irq, error, h;
+	
+	irq = ir->r_start;
+	mid = mcbus_get_mid(dev);
+
 	error = rman_activate_resource(ir);
 	if (error)
 		return error;
@@ -437,8 +444,8 @@
 	} else {
 		h = MCPCIA_VEC_PCI +
 		    ((mid - MCPCIA_PCI_MIDMIN) * MCPCIA_VECWIDTH_PER_MCPCIA) +
-		    (slot * MCPCIA_VECWIDTH_PER_SLOT) +
-		    ((intpin - 1) * MCPCIA_VECWIDTH_PER_INTPIN);
+		    irq * MCPCIA_VECWIDTH_PER_INTPIN +
+		    2 * MCPCIA_VECWIDTH_PER_SLOT;
 	}
 	birq = irq + INTRCNT_KN300_IRQ;
 	error = alpha_setup_intr(device_get_nameunit(child), h,
@@ -449,8 +456,8 @@
 	mtx_lock_spin(&icu_lock);
 	mcpcia_enable_intr(sc, irq);
 	mtx_unlock_spin(&icu_lock);
-	device_printf(child, "interrupting at IRQ 0x%x int%c (vec 0x%x)\n",
-	    irq, intpin - 1 + 'A' , h);
+	device_printf(child, "interrupting at IRQ 0x%x (vec 0x%x)\n",
+	    irq , h);
 	return (0);
 }
 
@@ -458,30 +465,9 @@
 mcpcia_teardown_intr(device_t dev, device_t child, struct resource *i, void *c)
 {
 	struct mcpcia_softc *sc = MCPCIA_SOFTC(dev);
-	int slot, mid, intpin, irq;
 
-	intpin = pci_get_intpin(child);
-	if (intpin == 0) {
-		/* No IRQ used */
-		return (0);
-	}
-	if (intpin < 1 || intpin > 4) {
-		/* Bad IRQ */
-		return (ENXIO);
-	}
-
-	slot = pci_get_slot(child);
-	mid = mcbus_get_mid(dev);
-
-	if (mid == 5 && slot == 1) {
-		irq = 16;
-	} else if (slot >= 2 && slot <= 5) {
-		irq = ((slot - 2) << 4) + (intpin - 1);
-	} else {
-		return (ENXIO);
-	}
 	mtx_lock_spin(&icu_lock);
-	mcpcia_disable_intr(sc, irq);
+	mcpcia_disable_intr(sc, i->r_start);
 	mtx_unlock_spin(&icu_lock);
 	alpha_teardown_intr(c);
 	return (rman_deactivate_resource(i));
@@ -554,6 +540,11 @@
 	u_int32_t *dp, data, rvp;
 	u_int64_t paddr;
 
+	if ((off == PCIR_INTLINE) && (sz == 1)) {
+		/* SRM left bad value; let intr_route fill them in later */
+		return ~0;
+	}
+
 	rvp = data = ~0;
 
 	/*
@@ -789,7 +780,7 @@
 	DEVMETHOD(pcib_maxslots,		mcpcia_maxslots),
 	DEVMETHOD(pcib_read_config,		mcpcia_read_config),
 	DEVMETHOD(pcib_write_config,		mcpcia_write_config),
-	DEVMETHOD(pcib_route_interrupt,		alpha_pci_route_interrupt),
+	DEVMETHOD(pcib_route_interrupt,		mcpcia_pci_route_interrupt),
 
 	{ 0, 0 }
 };

==== //depot/projects/smpng/sys/amd64/amd64/busdma_machdep.c#3 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.45 2003/05/27 04:59:56 scottl Exp $
+ * $FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.48 2003/07/01 16:54:54 mux Exp $
  */
 
 #include <sys/param.h>
@@ -62,6 +62,8 @@
 	int		  flags;
 	int		  ref_count;
 	int		  map_count;
+	bus_dma_lock_t	 *lockfunc;
+	void		 *lockfuncarg;
 };
 
 struct bounce_page {
@@ -135,6 +137,46 @@
 	return (retval);
 }
 
+/*
+ * Convenience function for manipulating driver locks from busdma (during
+ * busdma_swi, for example).  Drivers that don't provide their own locks
+ * should specify &Giant to dmat->lockfuncarg.  Drivers that use their own
+ * non-mutex locking scheme don't have to use this at all.
+ */
+void
+busdma_lock_mutex(void *arg, bus_dma_lock_op_t op)
+{
+	struct mtx *dmtx;
+
+	dmtx = (struct mtx *)arg;
+	switch (op) {
+	case BUS_DMA_LOCK:
+		mtx_lock(dmtx);
+		break;
+	case BUS_DMA_UNLOCK:
+		mtx_unlock(dmtx);
+		break;
+	default:
+		panic("Unknown operation 0x%x for busdma_lock_mutex!", op);
+	}
+}
+
+/*
+ * dflt_lock should never get called.  It gets put into the dma tag when
+ * lockfunc == NULL, which is only valid if the maps that are associated
+ * with the tag are meant to never be defered.
+ * XXX Should have a way to identify which driver is responsible here.
+ */
+static void
+dflt_lock(void *arg, bus_dma_lock_op_t op)
+{
+#ifdef INVARIANTS
+	panic("driver error: busdma dflt_lock called");
+#else
+	printf("DRIVER_ERROR: busdma dflt_lock called\n");
+#endif
+}
+
 #define BUS_DMA_MIN_ALLOC_COMP BUS_DMA_BUS4
 /*
  * Allocate a device specific dma_tag.
@@ -144,7 +186,8 @@
 		   bus_size_t boundary, bus_addr_t lowaddr,
 		   bus_addr_t highaddr, bus_dma_filter_t *filter,
 		   void *filterarg, bus_size_t maxsize, int nsegments,
-		   bus_size_t maxsegsz, int flags, bus_dma_tag_t *dmat)
+		   bus_size_t maxsegsz, int flags, bus_dma_lock_t *lockfunc,
+		   void *lockfuncarg, bus_dma_tag_t *dmat)
 {
 	bus_dma_tag_t newtag;
 	int error = 0;
@@ -170,6 +213,13 @@
 	newtag->flags = flags;
 	newtag->ref_count = 1; /* Count ourself */
 	newtag->map_count = 0;
+	if (lockfunc != NULL) {
+		newtag->lockfunc = lockfunc;
+		newtag->lockfuncarg = lockfuncarg;
+	} else {
+		newtag->lockfunc = dflt_lock;
+		newtag->lockfuncarg = NULL;
+	}
 	
 	/* Take into account any restrictions imposed by our parent tag */
 	if (parent != NULL) {
@@ -766,7 +816,7 @@
 							 M_NOWAIT, 0ul,
 							 dmat->lowaddr,
 							 PAGE_SIZE,
-							 0);
+							 dmat->boundary);
 		mtx_unlock(&Giant);
 		if (bpage->vaddr == 0) {
 			free(bpage, M_DEVBUF);
@@ -861,14 +911,18 @@
 void
 busdma_swi(void)
 {
+	bus_dma_tag_t dmat;
 	struct bus_dmamap *map;
 
 	mtx_lock(&bounce_lock);
 	while ((map = STAILQ_FIRST(&bounce_map_callbacklist)) != NULL) {
 		STAILQ_REMOVE_HEAD(&bounce_map_callbacklist, links);
 		mtx_unlock(&bounce_lock);
+		dmat = map->dmat;
+		(dmat->lockfunc)(dmat->lockfuncarg, BUS_DMA_LOCK);
 		bus_dmamap_load(map->dmat, map, map->buf, map->buflen,
 				map->callback, map->callback_arg, /*flags*/0);
+		(dmat->lockfunc)(dmat->lockfuncarg, BUS_DMA_UNLOCK);
 		mtx_lock(&bounce_lock);
 	}
 	mtx_unlock(&bounce_lock);

==== //depot/projects/smpng/sys/amd64/amd64/machdep.c#9 (text+ko) ====

@@ -35,7 +35,7 @@
  * SUCH DAMAGE.
  *
  *	from: @(#)machdep.c	7.4 (Berkeley) 6/3/91
- * $FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.582 2003/05/31 07:00:08 peter Exp $
+ * $FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.583 2003/06/28 06:34:07 davidxu Exp $
  */
 
 #include "opt_atalk.h"
@@ -300,6 +300,25 @@
 }
 
 /*
+ * Build siginfo_t for SA thread
+ */
+void
+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 */
+}
+
+/*
  * System call to cleanup state after a signal
  * has been taken.  Reset signal mask and
  * stack state from context left by sendsig (above).

==== //depot/projects/smpng/sys/amd64/amd64/pmap.c#5 (text+ko) ====

@@ -39,7 +39,7 @@
  * SUCH DAMAGE.
  *
  *	from:	@(#)pmap.c	7.7 (Berkeley)	5/12/91
- * $FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.417 2003/06/26 01:04:31 peter Exp $
+ * $FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.418 2003/06/29 21:20:03 alc Exp $
  */
 /*-
  * Copyright (c) 2003 Networks Associates Technology, Inc.
@@ -208,8 +208,6 @@
 static void	amd64_protection_init(void);
 static __inline void	pmap_changebit(vm_page_t m, int bit, boolean_t setem);
 
-static vm_page_t pmap_enter_quick(pmap_t pmap, vm_offset_t va,
-				      vm_page_t m, vm_page_t mpte);
 static int pmap_remove_pte(pmap_t pmap, pt_entry_t *ptq, vm_offset_t sva);

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



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