Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Sep 2003 23:04:39 -0700 (PDT)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 37896 for review
Message-ID:  <200309110604.h8B64dnD068171@repoman.freebsd.org>

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

Change 37896 by marcel@marcel_nfs on 2003/09/10 23:03:55

	IFC @37894

Affected files ...

.. //depot/projects/uart/alpha/alpha/pmap.c#11 integrate
.. //depot/projects/uart/amd64/amd64/exception.S#2 integrate
.. //depot/projects/uart/amd64/amd64/machdep.c#5 integrate
.. //depot/projects/uart/amd64/amd64/pmap.c#14 integrate
.. //depot/projects/uart/amd64/conf/GENERIC#3 integrate
.. //depot/projects/uart/amd64/include/signal.h#2 integrate
.. //depot/projects/uart/boot/ia64/libski/acpi_stub.c#2 integrate
.. //depot/projects/uart/boot/ia64/libski/bootinfo.c#2 integrate
.. //depot/projects/uart/boot/ia64/libski/devicename.c#2 integrate
.. //depot/projects/uart/boot/ia64/libski/efi_stub.c#2 integrate
.. //depot/projects/uart/boot/ia64/libski/elf_freebsd.c#2 integrate
.. //depot/projects/uart/boot/ia64/libski/module.c#2 integrate
.. //depot/projects/uart/boot/ia64/libski/sal_stub.c#2 integrate
.. //depot/projects/uart/boot/ia64/libski/skifs.c#2 integrate
.. //depot/projects/uart/boot/ia64/libski/ssc.c#2 integrate
.. //depot/projects/uart/boot/ia64/libski/time.c#2 integrate
.. //depot/projects/uart/boot/pc98/boot2/boot.c#2 integrate
.. //depot/projects/uart/boot/pc98/boot2/disk.c#2 integrate
.. //depot/projects/uart/boot/pc98/boot2/io.c#2 integrate
.. //depot/projects/uart/boot/pc98/boot2/probe_keyboard.c#2 integrate
.. //depot/projects/uart/boot/pc98/boot2/sys.c#2 integrate
.. //depot/projects/uart/boot/pc98/boot2/table.c#2 integrate
.. //depot/projects/uart/boot/pc98/libpc98/biosdisk.c#2 integrate
.. //depot/projects/uart/boot/pc98/libpc98/biosmem.c#2 integrate
.. //depot/projects/uart/boot/pc98/libpc98/comconsole.c#2 integrate
.. //depot/projects/uart/boot/pc98/libpc98/gatea20.c#2 integrate
.. //depot/projects/uart/boot/pc98/libpc98/i386_module.c#2 integrate
.. //depot/projects/uart/boot/pc98/libpc98/time.c#2 integrate
.. //depot/projects/uart/boot/pc98/libpc98/vidconsole.c#2 integrate
.. //depot/projects/uart/boot/pc98/loader/conf.c#2 integrate
.. //depot/projects/uart/boot/pc98/loader/main.c#2 integrate
.. //depot/projects/uart/cam/cam_periph.c#2 integrate
.. //depot/projects/uart/coda/coda_psdev.c#2 integrate
.. //depot/projects/uart/compat/linprocfs/linprocfs.c#5 integrate
.. //depot/projects/uart/conf/files#23 integrate
.. //depot/projects/uart/conf/options.ia64#4 integrate
.. //depot/projects/uart/crypto/sha2/sha2.c#2 integrate
.. //depot/projects/uart/dev/aac/aac_pci.c#6 integrate
.. //depot/projects/uart/dev/acpica/acpi.c#9 integrate
.. //depot/projects/uart/dev/acpica/acpi_cmbat.c#4 integrate
.. //depot/projects/uart/dev/acpica/acpi_resource.c#4 integrate
.. //depot/projects/uart/dev/acpica/acpivar.h#5 integrate
.. //depot/projects/uart/dev/acpica/madt.h#1 branch
.. //depot/projects/uart/dev/ata/ata-all.c#6 integrate
.. //depot/projects/uart/dev/ata/ata-chipset.c#7 integrate
.. //depot/projects/uart/dev/ata/ata-lowlevel.c#6 integrate
.. //depot/projects/uart/dev/ata/ata-pci.h#6 integrate
.. //depot/projects/uart/dev/ata/ata-raid.c#4 integrate
.. //depot/projects/uart/dev/bfe/if_bfe.c#1 branch
.. //depot/projects/uart/dev/bfe/if_bfereg.h#1 branch
.. //depot/projects/uart/dev/ciss/ciss.c#6 integrate
.. //depot/projects/uart/dev/drm/drmP.h#3 integrate
.. //depot/projects/uart/dev/drm/drm_context.h#3 integrate
.. //depot/projects/uart/dev/drm/drm_memory.h#3 integrate
.. //depot/projects/uart/dev/drm/radeon.h#3 integrate
.. //depot/projects/uart/dev/drm/radeon_cp.c#3 integrate
.. //depot/projects/uart/dev/drm/radeon_drm.h#3 integrate
.. //depot/projects/uart/dev/drm/radeon_drv.c#3 integrate
.. //depot/projects/uart/dev/drm/radeon_drv.h#3 integrate
.. //depot/projects/uart/dev/drm/radeon_mem.c#3 integrate
.. //depot/projects/uart/dev/drm/radeon_state.c#3 integrate
.. //depot/projects/uart/dev/drm/sis.h#1 branch
.. //depot/projects/uart/dev/drm/sis_drm.h#1 branch
.. //depot/projects/uart/dev/drm/sis_drv.c#1 branch
.. //depot/projects/uart/dev/drm/sis_drv.h#1 branch
.. //depot/projects/uart/dev/drm/sis_ds.c#1 branch
.. //depot/projects/uart/dev/drm/sis_ds.h#1 branch
.. //depot/projects/uart/dev/drm/sis_mm.c#1 branch
.. //depot/projects/uart/dev/mii/bmtphy.c#3 integrate
.. //depot/projects/uart/dev/mii/miidevs#3 integrate
.. //depot/projects/uart/dev/mii/rgephy.c#1 branch
.. //depot/projects/uart/dev/mii/rgephyreg.h#1 branch
.. //depot/projects/uart/dev/mii/rlphy.c#3 integrate
.. //depot/projects/uart/dev/pst/pst-raid.c#4 integrate
.. //depot/projects/uart/dev/re/if_re.c#1 branch
.. //depot/projects/uart/dev/uart/uart_cpu_pc98.c#3 integrate
.. //depot/projects/uart/dev/uart/uart_dev_ns8250.c#27 integrate
.. //depot/projects/uart/geom/bde/g_bde_crypt.c#3 integrate
.. //depot/projects/uart/geom/geom_io.c#3 integrate
.. //depot/projects/uart/i386/acpica/acpi_machdep.c#3 integrate
.. //depot/projects/uart/i386/acpica/acpi_wakeup.c#6 integrate
.. //depot/projects/uart/i386/conf/GENERIC#3 integrate
.. //depot/projects/uart/i386/conf/NOTES#4 integrate
.. //depot/projects/uart/i386/i386/identcpu.c#6 integrate
.. //depot/projects/uart/i386/i386/machdep.c#5 integrate
.. //depot/projects/uart/i386/i386/mp_clock.c#4 integrate
.. //depot/projects/uart/i386/i386/mp_machdep.c#7 integrate
.. //depot/projects/uart/i386/i386/pmap.c#15 integrate
.. //depot/projects/uart/i386/include/acpica_machdep.h#2 integrate
.. //depot/projects/uart/i386/include/apic.h#4 integrate
.. //depot/projects/uart/i386/include/segments.h#2 integrate
.. //depot/projects/uart/i386/isa/npx.c#3 integrate
.. //depot/projects/uart/i386/pci/pci_cfgreg.c#3 integrate
.. //depot/projects/uart/ia64/acpica/madt.c#4 integrate
.. //depot/projects/uart/ia64/conf/GENERIC#4 integrate
.. //depot/projects/uart/ia64/conf/NOTES#3 integrate
.. //depot/projects/uart/ia64/ia64/genassym.c#4 integrate
.. //depot/projects/uart/ia64/ia64/interrupt.c#6 integrate
.. //depot/projects/uart/ia64/ia64/locore.S#2 integrate
.. //depot/projects/uart/ia64/ia64/machdep.c#11 integrate
.. //depot/projects/uart/ia64/ia64/nexus.c#2 integrate
.. //depot/projects/uart/ia64/ia64/pmap.c#9 integrate
.. //depot/projects/uart/ia64/ia64/sapic.c#2 integrate
.. //depot/projects/uart/ia64/include/sapicvar.h#2 integrate
.. //depot/projects/uart/ia64/include/vmparam.h#2 integrate
.. //depot/projects/uart/kern/bus_if.m#2 integrate
.. //depot/projects/uart/kern/kern_ktr.c#5 integrate
.. //depot/projects/uart/kern/subr_bus.c#3 integrate
.. //depot/projects/uart/kern/sys_pipe.c#8 integrate
.. //depot/projects/uart/kern/vfs_aio.c#2 integrate
.. //depot/projects/uart/kern/vfs_mount.c#3 integrate
.. //depot/projects/uart/modules/Makefile#9 integrate
.. //depot/projects/uart/modules/bfe/Makefile#1 branch
.. //depot/projects/uart/modules/drm/Makefile#2 integrate
.. //depot/projects/uart/modules/drm/sis/Makefile#1 branch
.. //depot/projects/uart/modules/mii/Makefile#3 integrate
.. //depot/projects/uart/modules/re/Makefile#1 branch
.. //depot/projects/uart/pc98/conf/GENERIC#3 integrate
.. //depot/projects/uart/pci/if_rl.c#13 integrate
.. //depot/projects/uart/pci/if_rlreg.h#6 integrate
.. //depot/projects/uart/sparc64/conf/GENERIC#5 integrate
.. //depot/projects/uart/sparc64/sparc64/pmap.c#7 integrate
.. //depot/projects/uart/sys/ata.h#3 integrate
.. //depot/projects/uart/sys/bus.h#3 integrate
.. //depot/projects/uart/sys/param.h#7 integrate
.. //depot/projects/uart/sys/syslimits.h#2 integrate
.. //depot/projects/uart/vm/pmap.h#4 integrate

Differences ...

==== //depot/projects/uart/alpha/alpha/pmap.c#11 (text+ko) ====

@@ -148,7 +148,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.136 2003/09/07 20:02:38 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.137 2003/09/08 02:45:01 alc Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -811,6 +811,29 @@
 		return 0;
 }
 
+/*
+ *	Routine:	pmap_extract_and_hold
+ *	Function:
+ *		Atomically extract and hold the physical page
+ *		with the given pmap and virtual address. 
+ */
+vm_page_t
+pmap_extract_and_hold(pmap_t pmap, vm_offset_t va)
+{
+	vm_paddr_t pa;
+	vm_page_t m;
+
+	m = NULL;
+	mtx_lock(&Giant);
+	if ((pa = pmap_extract(pmap, va)) != 0) {
+		m = PHYS_TO_VM_PAGE(pa);
+		vm_page_lock_queues();
+		vm_page_hold(m);
+		vm_page_unlock_queues();
+	}
+	mtx_unlock(&Giant);
+	return (m);
+}
 
 /***************************************************
  * Low level mapping routines.....

==== //depot/projects/uart/amd64/amd64/exception.S#2 (text+ko) ====

@@ -31,7 +31,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.110 2003/05/14 04:10:47 peter Exp $
+ * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.111 2003/09/09 19:32:09 peter Exp $
  */
 
 #include <machine/asmacros.h>
@@ -227,8 +227,8 @@
 	swapgs
 	movq	%rsp,PCPU(SCRATCH_RSP)
 	movq	common_tss+COMMON_TSS_RSP0,%rsp
-	/* Now emulate a trapframe. Ugh. */
-	subq	$TF_SIZE,%rsp
+	/* Now emulate a trapframe. Make the 8 byte alignment odd for call. */
+	subq	$TF_SIZE+8,%rsp
 	/* defer TF_RSP till we have a spare register */
 	movq	%r11,TF_RFLAGS(%rsp)
 	movq	%rcx,TF_RIP(%rsp)	/* %rcx original value is in %r10 */

==== //depot/projects/uart/amd64/amd64/machdep.c#5 (text+ko) ====

@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.588 2003/07/31 01:26:39 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.589 2003/09/09 19:32:09 peter Exp $");
 
 #include "opt_atalk.h"
 #include "opt_compat.h"
@@ -1217,6 +1217,8 @@
 
 	/* make an initial tss so cpu can get interrupt stack on syscall! */
 	common_tss.tss_rsp0 = thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE - sizeof(struct pcb);
+	/* Ensure the stack is aligned to 16 bytes */
+	common_tss.tss_rsp0 &= ~0xF;
 
 	/* doublefault stack space, runs on ist1 */
 	common_tss.tss_ist1 = (long)&dblfault_stack[sizeof(dblfault_stack)];
@@ -1434,7 +1436,6 @@
 	struct trapframe *tp;
 
 	tp = td->td_frame;
-
 	PROC_LOCK(curthread->td_proc);
 	mcp->mc_onstack = sigonstack(tp->tf_rsp);
 	PROC_UNLOCK(curthread->td_proc);
@@ -1486,66 +1487,42 @@
 		return (EINVAL);
 	rflags = (mcp->mc_rflags & PSL_USERCHANGE) |
 	    (tp->tf_rflags & ~PSL_USERCHANGE);
-	if ((ret = set_fpcontext(td, mcp)) == 0) {
-		tp->tf_r15 = mcp->mc_r15;
-		tp->tf_r14 = mcp->mc_r14;
-		tp->tf_r13 = mcp->mc_r13;
-		tp->tf_r12 = mcp->mc_r12;
-		tp->tf_r11 = mcp->mc_r11;
-		tp->tf_r10 = mcp->mc_r10;
-		tp->tf_r9  = mcp->mc_r9;
-		tp->tf_r8  = mcp->mc_r8;
-		tp->tf_rdi = mcp->mc_rdi;
-		tp->tf_rsi = mcp->mc_rsi;
-		tp->tf_rbp = mcp->mc_rbp;
-		tp->tf_rbx = mcp->mc_rbx;
-		tp->tf_rdx = mcp->mc_rdx;
-		tp->tf_rcx = mcp->mc_rcx;
-		tp->tf_rax = mcp->mc_rax;
-		tp->tf_rip = mcp->mc_rip;
-		tp->tf_rflags = rflags;
-		tp->tf_rsp = mcp->mc_rsp;
-		tp->tf_ss = mcp->mc_ss;
-		ret = 0;
-	}
-	return (ret);
+	ret = set_fpcontext(td, mcp);
+	if (ret != 0)
+		return (ret);
+	tp->tf_r15 = mcp->mc_r15;
+	tp->tf_r14 = mcp->mc_r14;
+	tp->tf_r13 = mcp->mc_r13;
+	tp->tf_r12 = mcp->mc_r12;
+	tp->tf_r11 = mcp->mc_r11;
+	tp->tf_r10 = mcp->mc_r10;
+	tp->tf_r9  = mcp->mc_r9;
+	tp->tf_r8  = mcp->mc_r8;
+	tp->tf_rdi = mcp->mc_rdi;
+	tp->tf_rsi = mcp->mc_rsi;
+	tp->tf_rbp = mcp->mc_rbp;
+	tp->tf_rbx = mcp->mc_rbx;
+	tp->tf_rdx = mcp->mc_rdx;
+	tp->tf_rcx = mcp->mc_rcx;
+	tp->tf_rax = mcp->mc_rax;
+	tp->tf_rip = mcp->mc_rip;
+	tp->tf_rflags = rflags;
+	tp->tf_rsp = mcp->mc_rsp;
+	tp->tf_ss = mcp->mc_ss;
+	return (0);
 }
 
 static void
 get_fpcontext(struct thread *td, mcontext_t *mcp)
 {
-	struct savefpu *addr;
 
-	/*
-	 * XXX mc_fpstate might be misaligned, since its declaration is not
-	 * unportabilized using __attribute__((aligned(16))) like the
-	 * declaration of struct savemm, and anyway, alignment doesn't work
-	 * for auto variables since we don't use gcc's pessimal stack
-	 * alignment.  Work around this by abusing the spare fields after
-	 * mcp->mc_fpstate.
-	 *
-	 * XXX unpessimize most cases by only aligning when fxsave might be
-	 * called, although this requires knowing too much about
-	 * npxgetregs()'s internals.
-	 */
-	addr = (struct savefpu *)&mcp->mc_fpstate;
-	if (td == PCPU_GET(fpcurthread) && ((uintptr_t)(void *)addr & 0xF)) {
-		do
-			addr = (void *)((char *)addr + 4);
-		while ((uintptr_t)(void *)addr & 0xF);
-	}
-	mcp->mc_ownedfp = npxgetregs(td, addr);
-	if (addr != (struct savefpu *)&mcp->mc_fpstate) {
-		bcopy(addr, &mcp->mc_fpstate, sizeof(mcp->mc_fpstate));
-		bzero(&mcp->mc_spare2, sizeof(mcp->mc_spare2));
-	}
+	mcp->mc_ownedfp = npxgetregs(td, (struct savefpu *)&mcp->mc_fpstate);
 	mcp->mc_fpformat = npxformat();
 }
 
 static int
 set_fpcontext(struct thread *td, const mcontext_t *mcp)
 {
-	struct savefpu *addr;
 
 	if (mcp->mc_fpformat == _MC_FPFMT_NODEV)
 		return (0);
@@ -1556,25 +1533,12 @@
 		fpstate_drop(td);
 	else if (mcp->mc_ownedfp == _MC_FPOWNED_FPU ||
 	    mcp->mc_ownedfp == _MC_FPOWNED_PCB) {
-		/* XXX align as above. */
-		addr = (struct savefpu *)&mcp->mc_fpstate;
-		if (td == PCPU_GET(fpcurthread) &&
-		    ((uintptr_t)(void *)addr & 0xF)) {
-			do
-				addr = (void *)((char *)addr + 4);
-			while ((uintptr_t)(void *)addr & 0xF);
-			bcopy(&mcp->mc_fpstate, addr, sizeof(mcp->mc_fpstate));
-		}
 		/*
 		 * XXX we violate the dubious requirement that npxsetregs()
 		 * be called with interrupts disabled.
+		 * XXX obsolete on trap-16 systems?
 		 */
-		npxsetregs(td, addr);
-		/*
-		 * Don't bother putting things back where they were in the
-		 * misaligned case, since we know that the caller won't use
-		 * them again.
-		 */
+		npxsetregs(td, (struct savefpu *)&mcp->mc_fpstate);
 	} else
 		return (EINVAL);
 	return (0);

==== //depot/projects/uart/amd64/amd64/pmap.c#14 (text+ko) ====

@@ -73,7 +73,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.434 2003/08/24 08:07:06 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.435 2003/09/08 02:45:02 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -749,6 +749,30 @@
 
 }
 
+/*
+ *	Routine:	pmap_extract_and_hold
+ *	Function:
+ *		Atomically extract and hold the physical page
+ *		with the given pmap and virtual address. 
+ */
+vm_page_t
+pmap_extract_and_hold(pmap_t pmap, vm_offset_t va)
+{
+	vm_paddr_t pa;
+	vm_page_t m;
+
+	m = NULL;
+	mtx_lock(&Giant);
+	if ((pa = pmap_extract(pmap, va)) != 0) {
+		m = PHYS_TO_VM_PAGE(pa);
+		vm_page_lock_queues();
+		vm_page_hold(m);
+		vm_page_unlock_queues();
+	}
+	mtx_unlock(&Giant);
+	return (m);
+}
+
 vm_paddr_t
 pmap_kextract(vm_offset_t va)
 {

==== //depot/projects/uart/amd64/conf/GENERIC#3 (text+ko) ====

@@ -16,7 +16,7 @@
 # If you are in doubt as to the purpose or necessity of a line, check first 
 # in NOTES.
 #
-# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.391 2003/09/03 01:24:47 obrien Exp $
+# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.394 2003/09/10 18:54:58 obrien Exp $
 
 machine		amd64
 cpu		HAMMER
@@ -118,8 +118,8 @@
 
 # RAID controllers
 #XXX pointer/int warnings
-#device		aac		# Adaptec FSA RAID
-#device		aacp		# SCSI passthrough for aac (requires CAM)
+device		aac		# Adaptec FSA RAID
+device		aacp		# SCSI passthrough for aac (requires CAM)
 device		amr		# AMI MegaRAID
 device		ida		# Compaq Smart RAID
 device		ips		# IBM (Adaptec) ServeRAID
@@ -168,9 +168,11 @@
 # PCI Ethernet NICs that use the common MII bus controller code.
 # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
 device		miibus		# MII bus support
+device		bge		# Broadcom BCM570xx Gigabit Ethernet
 device		dc		# DEC/Intel 21143 and various workalikes
 device		fxp		# Intel EtherExpress PRO/100B (82557, 82558)
 device		pcn		# AMD Am79C97x PCI 10/100 (precedence over 'lnc')
+device		re		# RealTek 8139C+/8169/8169S/8110S
 device		rl		# RealTek 8129/8139
 device		sf		# Adaptec AIC-6915 (``Starfire'')
 device		sis		# Silicon Integrated Systems SiS 900/SiS 7016
@@ -182,7 +184,6 @@
 device		vr		# VIA Rhine, Rhine II
 device		wb		# Winbond W89C840F
 device		xl		# 3Com 3c90x (``Boomerang'', ``Cyclone'')
-device		bge		# Broadcom BCM570xx Gigabit Ethernet
 
 # ISA Ethernet NICs.  pccard nics included.
 device		cs		# Crystal Semiconductor CS89x0 NIC

==== //depot/projects/uart/amd64/include/signal.h#2 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)signal.h	8.1 (Berkeley) 6/11/93
- * $FreeBSD: src/sys/amd64/include/signal.h,v 1.21 2003/05/01 01:05:23 peter Exp $
+ * $FreeBSD: src/sys/amd64/include/signal.h,v 1.23 2003/09/08 18:31:48 peter Exp $
  */
 
 #ifndef _MACHINE_SIGNAL_H_
@@ -74,22 +74,23 @@
 struct sigcontext {
 	struct __sigset sc_mask;	/* signal mask to restore */
 	long	sc_onstack;		/* sigstack state to restore */
-	long	sc_r15;		/* machine state (struct trapframe) */
-	long	sc_r14;
-	long	sc_r13;
-	long	sc_r12;
-	long	sc_r11;
-	long	sc_r10;
-	long	sc_r9;
-	long	sc_r8;
-	long	sc_rdi;
+	long	sc_rdi;		/* machine state (struct trapframe) */
 	long	sc_rsi;
-	long	sc_rbp;
-	long	sc_rbx;
 	long	sc_rdx;
 	long	sc_rcx;
+	long	sc_r8;
+	long	sc_r9;
 	long	sc_rax;
+	long	sc_rbx;
+	long	sc_rbp;
+	long	sc_r10;
+	long	sc_r11;
+	long	sc_r12;
+	long	sc_r13;
+	long	sc_r14;
+	long	sc_r15;
 	long	sc_trapno;
+	long	sc_addr;
 	long	sc_err;
 	long	sc_rip;
 	long	sc_cs;
@@ -104,7 +105,7 @@
 	long	sc_fpformat;
 	long	sc_ownedfp;
 	long	sc_spare1[1];
-	long	sc_fpstate[128] __aligned(16);
+	long	sc_fpstate[64] __aligned(16);
 	long	sc_spare2[8];
 };
 #endif /* __BSD_VISIBLE */

==== //depot/projects/uart/boot/ia64/libski/acpi_stub.c#2 (text+ko) ====

@@ -22,10 +22,11 @@
  * 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.
- *
- * $FreeBSD: src/sys/boot/ia64/libski/acpi_stub.c,v 1.1 2003/02/01 22:50:08 marcel Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/ia64/libski/acpi_stub.c,v 1.2 2003/09/08 09:11:32 obrien Exp $");
+
 #include <contrib/dev/acpica/acpi.h>
 
 #define APIC_IO_SAPIC                   6

==== //depot/projects/uart/boot/ia64/libski/bootinfo.c#2 (text+ko) ====

@@ -22,10 +22,11 @@
  * 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.
- *
- * $FreeBSD: src/sys/boot/ia64/libski/bootinfo.c,v 1.8 2003/02/20 06:47:54 marcel Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/ia64/libski/bootinfo.c,v 1.9 2003/09/08 09:11:32 obrien Exp $");
+
 #include <stand.h>
 #include <string.h>
 #include <sys/param.h>

==== //depot/projects/uart/boot/ia64/libski/devicename.c#2 (text+ko) ====

@@ -22,10 +22,11 @@
  * 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.
- *
- * $FreeBSD: src/sys/boot/ia64/libski/devicename.c,v 1.1 2001/09/12 08:34:26 dfr Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/ia64/libski/devicename.c,v 1.2 2003/09/08 09:11:32 obrien Exp $");
+
 #include <stand.h>
 #include <string.h>
 #include <sys/disklabel.h>

==== //depot/projects/uart/boot/ia64/libski/efi_stub.c#2 (text+ko) ====

@@ -22,10 +22,11 @@
  * 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.
- *
- * $FreeBSD: src/sys/boot/ia64/libski/efi_stub.c,v 1.1 2003/02/01 22:50:08 marcel Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/ia64/libski/efi_stub.c,v 1.2 2003/09/08 09:11:32 obrien Exp $");
+
 #include <sys/types.h>
 #include <machine/bootinfo.h>
 #include <efi.h>

==== //depot/projects/uart/boot/ia64/libski/elf_freebsd.c#2 (text+ko) ====

@@ -1,4 +1,3 @@
-/* $FreeBSD: src/sys/boot/ia64/libski/elf_freebsd.c,v 1.8 2003/05/01 03:56:29 peter Exp $ */
 /* $NetBSD: loadfile.c,v 1.10 1998/06/25 06:45:46 ross Exp $ */
 
 /*-
@@ -37,7 +36,6 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  */
-
 /*
  * Copyright (c) 1992, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -76,6 +74,9 @@
  *	@(#)boot.c	8.1 (Berkeley) 6/10/93
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/ia64/libski/elf_freebsd.c,v 1.9 2003/09/08 09:11:32 obrien Exp $");
+
 #include <stand.h>
 #include <string.h>
 

==== //depot/projects/uart/boot/ia64/libski/module.c#2 (text+ko) ====

@@ -24,9 +24,8 @@
  * SUCH DAMAGE.
  */
 
-
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/ia64/libski/module.c,v 1.2 2003/04/03 21:36:29 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/ia64/libski/module.c,v 1.3 2003/09/08 09:11:32 obrien Exp $");
 
 #include <stand.h>
 

==== //depot/projects/uart/boot/ia64/libski/sal_stub.c#2 (text+ko) ====

@@ -22,10 +22,11 @@
  * 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.
- *
- * $FreeBSD: src/sys/boot/ia64/libski/sal_stub.c,v 1.1 2003/02/01 22:50:08 marcel Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/ia64/libski/sal_stub.c,v 1.2 2003/09/08 09:11:32 obrien Exp $");
+
 #include <sys/types.h>
 #include <machine/md_var.h>
 #include <machine/sal.h>

==== //depot/projects/uart/boot/ia64/libski/skifs.c#2 (text+ko) ====

@@ -22,10 +22,11 @@
  * 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.
- *
- * $FreeBSD: src/sys/boot/ia64/libski/skifs.c,v 1.1 2001/09/12 08:34:27 dfr Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/ia64/libski/skifs.c,v 1.2 2003/09/08 09:11:32 obrien Exp $");
+
 #include <sys/param.h>
 #include <sys/time.h>
 #include <stddef.h>

==== //depot/projects/uart/boot/ia64/libski/ssc.c#2 (text+ko) ====

@@ -22,10 +22,11 @@
  * 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.
- *
- * $FreeBSD: src/sys/boot/ia64/libski/ssc.c,v 1.3 2003/02/01 22:50:08 marcel Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/ia64/libski/ssc.c,v 1.4 2003/09/08 09:11:32 obrien Exp $");
+
 #include <stand.h>
 #include "libski.h"
 

==== //depot/projects/uart/boot/ia64/libski/time.c#2 (text+ko) ====

@@ -35,11 +35,10 @@
  * 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>
-__FBSDID("$FreeBSD: src/sys/boot/ia64/libski/time.c,v 1.3 2003/04/03 21:36:29 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/ia64/libski/time.c,v 1.4 2003/09/08 09:11:32 obrien Exp $");
 
 #include <time.h>
 #include <sys/time.h>

==== //depot/projects/uart/boot/pc98/boot2/boot.c#2 (text+ko) ====

@@ -24,10 +24,7 @@
  * the rights to redistribute these changes.
  *
  *	from: Mach, [92/04/03  16:51:14  rvb]
- * $FreeBSD: src/sys/boot/pc98/boot2/boot.c,v 1.10 2003/01/06 13:43:13 nyan Exp $
  */
-
-
 /*
   Copyright 1988, 1989, 1990, 1991, 1992
    by Intel Corporation, Santa Clara, California.
@@ -51,6 +48,9 @@
 WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/pc98/boot2/boot.c,v 1.11 2003/09/08 09:11:20 obrien Exp $");
+
 #include "boot.h"
 #include <a.out.h>
 #include <sys/reboot.h>

==== //depot/projects/uart/boot/pc98/boot2/disk.c#2 (text+ko) ====

@@ -24,9 +24,7 @@
  * the rights to redistribute these changes.
  *
  *	from: Mach, Revision 2.2  92/04/04  11:35:49  rpd
- * $FreeBSD: src/sys/boot/pc98/boot2/disk.c,v 1.9 2003/04/04 16:35:15 phk Exp $
  */
-
 /*
  * Ported to PC-9801 by Yoshio Kimura
  */
@@ -41,6 +39,9 @@
  *	partition, which is not always at the end of the disk.
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/pc98/boot2/disk.c,v 1.10 2003/09/08 09:11:20 obrien Exp $");
+
 #include "boot.h"
 #include <sys/disklabel.h>
 #include <sys/diskpc98.h>

==== //depot/projects/uart/boot/pc98/boot2/io.c#2 (text+ko) ====

@@ -24,9 +24,11 @@
  * the rights to redistribute these changes.
  *
  *	from: Mach, Revision 2.2  92/04/04  11:35:57  rpd
- * $FreeBSD: src/sys/boot/pc98/boot2/io.c,v 1.4 2002/05/14 12:34:03 nyan Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/pc98/boot2/io.c,v 1.5 2003/09/08 09:11:20 obrien Exp $");
+
 #include "boot.h"
 #include <machine/cpufunc.h>
 #include <sys/reboot.h>

==== //depot/projects/uart/boot/pc98/boot2/probe_keyboard.c#2 (text+ko) ====

@@ -23,10 +23,11 @@
  * 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.
- *
- * $FreeBSD: src/sys/boot/pc98/boot2/probe_keyboard.c,v 1.2 2000/05/01 20:26:25 peter Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/pc98/boot2/probe_keyboard.c,v 1.3 2003/09/08 09:11:20 obrien Exp $");
+
 #include "boot.h"
 
 int probe_keyboard(void)

==== //depot/projects/uart/boot/pc98/boot2/sys.c#2 (text+ko) ====

@@ -24,9 +24,11 @@
  * the rights to redistribute these changes.
  *
  *	from: Mach, Revision 2.2  92/04/04  11:36:34  rpd
- * $FreeBSD: src/sys/boot/pc98/boot2/sys.c,v 1.4 2003/04/04 16:35:15 phk Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/pc98/boot2/sys.c,v 1.5 2003/09/08 09:11:20 obrien Exp $");
+
 /*
  * Ported to PC-9801 by Yoshio Kimura
  */

==== //depot/projects/uart/boot/pc98/boot2/table.c#2 (text+ko) ====

@@ -24,9 +24,7 @@
  * the rights to redistribute these changes.
  *
  *	from: Mach, Revision 2.2  92/04/04  11:36:43  rpd
- * $FreeBSD: src/sys/boot/pc98/boot2/table.c,v 1.3 1999/08/28 00:40:27 peter Exp $
  */
-
 /*
   Copyright 1988, 1989, 1990, 1991, 1992
    by Intel Corporation, Santa Clara, California.
@@ -50,6 +48,9 @@
 WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/pc98/boot2/table.c,v 1.4 2003/09/08 09:11:20 obrien Exp $");
+
 #include "boot.h"
 
 /*  Segment Descriptor

==== //depot/projects/uart/boot/pc98/libpc98/biosdisk.c#2 (text+ko) ====

@@ -22,10 +22,11 @@
  * 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.
- *
- * $FreeBSD: src/sys/boot/pc98/libpc98/biosdisk.c,v 1.24 2003/04/04 16:35:15 phk Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/pc98/libpc98/biosdisk.c,v 1.25 2003/09/08 09:11:20 obrien Exp $");
+
 /*
  * BIOS disk device handling.
  * 

==== //depot/projects/uart/boot/pc98/libpc98/biosmem.c#2 (text+ko) ====

@@ -22,10 +22,11 @@
  * 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.
- *
- * $FreeBSD: src/sys/boot/pc98/libpc98/biosmem.c,v 1.5 2002/09/23 18:54:27 alfred Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/pc98/libpc98/biosmem.c,v 1.6 2003/09/08 09:11:20 obrien Exp $");
+
 /*
  * Obtain memory configuration information from the BIOS
  */

==== //depot/projects/uart/boot/pc98/libpc98/comconsole.c#2 (text+ko) ====

@@ -21,10 +21,11 @@
  * 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.
- *
- * $FreeBSD: src/sys/boot/pc98/libpc98/comconsole.c,v 1.3 2000/11/05 12:35:40 nyan Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/pc98/libpc98/comconsole.c,v 1.4 2003/09/08 09:11:20 obrien Exp $");
+
 #include <stand.h>
 #include <bootstrap.h>
 #include <machine/cpufunc.h>

==== //depot/projects/uart/boot/pc98/libpc98/gatea20.c#2 (text+ko) ====

@@ -1,8 +1,10 @@
 /*
- * $FreeBSD: src/sys/boot/pc98/libpc98/gatea20.c,v 1.3 2000/11/05 12:35:40 nyan Exp $
- * From: $NetBSD: gatea20.c,v 1.2 1997/10/29 00:32:49 fvdl Exp $
+ * $NetBSD: gatea20.c,v 1.2 1997/10/29 00:32:49 fvdl Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/pc98/libpc98/gatea20.c,v 1.4 2003/09/08 09:11:20 obrien Exp $");
+
 /* extracted from freebsd:sys/i386/boot/biosboot/io.c */
 
 #include <stand.h>

==== //depot/projects/uart/boot/pc98/libpc98/i386_module.c#2 (text+ko) ====

@@ -22,10 +22,11 @@
  * 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.
- *
- * $FreeBSD: src/sys/boot/pc98/libpc98/i386_module.c,v 1.1 2003/06/08 03:16:59 nyan Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/pc98/libpc98/i386_module.c,v 1.2 2003/09/08 09:11:20 obrien Exp $");
+
 int
 i386_autoload(void)
 {

==== //depot/projects/uart/boot/pc98/libpc98/time.c#2 (text+ko) ====

@@ -22,10 +22,11 @@
  * 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.
- *
- * $FreeBSD: src/sys/boot/pc98/libpc98/time.c,v 1.4 2000/11/05 12:35:40 nyan Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/pc98/libpc98/time.c,v 1.5 2003/09/08 09:11:20 obrien Exp $");
+
 #include <stand.h>
 #include <btxv86.h>
 #ifdef PC98

==== //depot/projects/uart/boot/pc98/libpc98/vidconsole.c#2 (text+ko) ====

@@ -24,11 +24,12 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * 	From Id: probe_keyboard.c,v 1.13 1997/06/09 05:10:55 bde Exp
- *
- * $FreeBSD: src/sys/boot/pc98/libpc98/vidconsole.c,v 1.10 2001/10/17 15:15:01 nyan Exp $
+ * 	Id: probe_keyboard.c,v 1.13 1997/06/09 05:10:55 bde Exp
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/pc98/libpc98/vidconsole.c,v 1.11 2003/09/08 09:11:20 obrien Exp $");
+
 #include <stand.h>
 #include <bootstrap.h>
 #include <btxv86.h>

==== //depot/projects/uart/boot/pc98/loader/conf.c#2 (text+ko) ====

@@ -22,10 +22,11 @@
  * 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.
- *
- * $FreeBSD: src/sys/boot/pc98/loader/conf.c,v 1.1 2003/05/01 13:17:06 nyan Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/pc98/loader/conf.c,v 1.2 2003/09/08 09:11:21 obrien Exp $");
+
 #include <stand.h>
 #include <bootstrap.h>
 #include "libi386/libi386.h"

==== //depot/projects/uart/boot/pc98/loader/main.c#2 (text+ko) ====

@@ -22,10 +22,11 @@
  * 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.
- *
- * $FreeBSD: src/sys/boot/pc98/loader/main.c,v 1.15 2001/11/06 12:31:56 nyan Exp $
  */
 
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/boot/pc98/loader/main.c,v 1.16 2003/09/08 09:11:21 obrien Exp $");
+
 /*
  * MD bootstrap main() and assorted miscellaneous
  * commands.

==== //depot/projects/uart/cam/cam_periph.c#2 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/cam_periph.c,v 1.51 2003/06/10 17:50:20 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/cam_periph.c,v 1.52 2003/09/10 18:23:43 alc Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -653,16 +653,14 @@
 		 * vmapbuf() after the useracc() check.
 		 */
 		if (vmapbuf(mapinfo->bp[i]) < 0) {
-			printf("cam_periph_mapmem: error, "
-				"address %p, length %lu isn't "
-				"user accessible any more\n",
-				(void *)*data_ptrs[i],
-				(u_long)lengths[i]);
 			for (j = 0; j < i; ++j) {
 				*data_ptrs[j] = mapinfo->bp[j]->b_saveaddr;
+				vunmapbuf(mapinfo->bp[j]);
 				mapinfo->bp[j]->b_flags &= ~B_PHYS;
 				relpbuf(mapinfo->bp[j], NULL);
 			}
+			mapinfo->bp[i]->b_flags &= ~B_PHYS;
+			relpbuf(mapinfo->bp[i], NULL);
 			PRELE(curproc);
 			return(EACCES);
 		}

==== //depot/projects/uart/coda/coda_psdev.c#2 (text+ko) ====

@@ -49,7 +49,7 @@
 /* These routines are the device entry points for Venus. */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/coda/coda_psdev.c,v 1.27 2003/06/10 21:21:59 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/coda/coda_psdev.c,v 1.28 2003/09/10 01:41:15 tjr Exp $");
 
 
 extern int coda_nc_initialized;    /* Set if cache has been initialized */
@@ -580,8 +580,10 @@
 #endif
 				}
 				else {
+#ifdef	CODA_VERBOSE
 					printf("coda_call: tsleep returns %d, cnt %d\n",
 					       error, i);
+#endif
 
 #if notyet
 					tempset = td->td_siglist;

==== //depot/projects/uart/compat/linprocfs/linprocfs.c#5 (text+ko) ====

@@ -40,13 +40,14 @@
  */
 
 #include <sys/cdefs.h>

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



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