Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 7 Jan 2003 09:01:48 -0800 (PST)
From:      John Baldwin <jhb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 23343 for review
Message-ID:  <200301071701.h07H1mqM043983@repoman.freebsd.org>

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

Change 23343 by jhb@jhb_laptop on 2003/01/07 09:01:39

	IFC @23338.

Affected files ...

.. //depot/projects/smpng/sys/alpha/alpha/dump_machdep.c#3 integrate
.. //depot/projects/smpng/sys/boot/pc98/boot2/bios.S#2 integrate
.. //depot/projects/smpng/sys/boot/pc98/boot2/boot.c#3 integrate
.. //depot/projects/smpng/sys/boot/pc98/boot2/disk.c#4 integrate
.. //depot/projects/smpng/sys/boot/pc98/boot2/sys.c#2 integrate
.. //depot/projects/smpng/sys/boot/pc98/libpc98/biosdisk.c#5 integrate
.. //depot/projects/smpng/sys/cam/scsi/scsi_da.c#30 integrate
.. //depot/projects/smpng/sys/conf/files#60 integrate
.. //depot/projects/smpng/sys/conf/files.ia64#22 integrate
.. //depot/projects/smpng/sys/conf/ldscript.i386#4 integrate
.. //depot/projects/smpng/sys/dev/bge/if_bge.c#19 integrate
.. //depot/projects/smpng/sys/dev/bge/if_bgereg.h#11 integrate
.. //depot/projects/smpng/sys/dev/ccd/ccd.c#18 integrate
.. //depot/projects/smpng/sys/dev/firewire/firewire.c#7 integrate
.. //depot/projects/smpng/sys/dev/firewire/firewire.h#3 integrate
.. //depot/projects/smpng/sys/dev/firewire/firewirebusreg.h#2 delete
.. //depot/projects/smpng/sys/dev/firewire/firewirereg.h#3 integrate
.. //depot/projects/smpng/sys/dev/firewire/fwcrom.c#2 integrate
.. //depot/projects/smpng/sys/dev/firewire/fwdev.c#2 integrate
.. //depot/projects/smpng/sys/dev/firewire/fwohci.c#6 integrate
.. //depot/projects/smpng/sys/dev/firewire/fwohci_pci.c#7 integrate
.. //depot/projects/smpng/sys/dev/firewire/fwohcireg.h#3 integrate
.. //depot/projects/smpng/sys/dev/firewire/fwohcivar.h#3 integrate
.. //depot/projects/smpng/sys/dev/firewire/if_fwe.c#5 integrate
.. //depot/projects/smpng/sys/dev/firewire/sbp.c#7 integrate
.. //depot/projects/smpng/sys/dev/gem/if_gem.c#10 integrate
.. //depot/projects/smpng/sys/dev/gem/if_gemvar.h#5 integrate
.. //depot/projects/smpng/sys/dev/hme/if_hme.c#8 integrate
.. //depot/projects/smpng/sys/dev/hme/if_hmereg.h#4 integrate
.. //depot/projects/smpng/sys/dev/hme/if_hmevar.h#3 integrate
.. //depot/projects/smpng/sys/dev/raidframe/rf_freebsdkintf.c#4 integrate
.. //depot/projects/smpng/sys/dev/sab/sab.c#5 integrate
.. //depot/projects/smpng/sys/dev/sound/pcm/dsp.c#9 integrate
.. //depot/projects/smpng/sys/dev/ubsec/ubsec.c#5 integrate
.. //depot/projects/smpng/sys/dev/ubsec/ubsecvar.h#3 integrate
.. //depot/projects/smpng/sys/dev/vinum/vinumdaemon.c#5 integrate
.. //depot/projects/smpng/sys/dev/vinum/vinuminterrupt.c#4 integrate
.. //depot/projects/smpng/sys/dev/vinum/vinumio.c#10 integrate
.. //depot/projects/smpng/sys/dev/vinum/vinumrequest.c#8 integrate
.. //depot/projects/smpng/sys/dev/wi/wi_hostap.c#11 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs_vnops.c#25 integrate
.. //depot/projects/smpng/sys/fs/fdescfs/fdesc_vnops.c#10 integrate
.. //depot/projects/smpng/sys/fs/hpfs/hpfs_vnops.c#15 integrate
.. //depot/projects/smpng/sys/fs/msdosfs/msdosfs_vnops.c#14 integrate
.. //depot/projects/smpng/sys/fs/ntfs/ntfs_vnops.c#10 integrate
.. //depot/projects/smpng/sys/fs/nwfs/nwfs_vnops.c#5 integrate
.. //depot/projects/smpng/sys/fs/portalfs/portal_vnops.c#12 integrate
.. //depot/projects/smpng/sys/fs/pseudofs/pseudofs_vnops.c#22 integrate
.. //depot/projects/smpng/sys/fs/smbfs/smbfs_vnops.c#14 integrate
.. //depot/projects/smpng/sys/fs/specfs/spec_vnops.c#20 integrate
.. //depot/projects/smpng/sys/fs/udf/udf_vnops.c#7 integrate
.. //depot/projects/smpng/sys/fs/unionfs/union_vnops.c#8 integrate
.. //depot/projects/smpng/sys/geom/bde/g_bde.h#3 integrate
.. //depot/projects/smpng/sys/geom/bde/g_bde_crypt.c#6 integrate
.. //depot/projects/smpng/sys/geom/bde/g_bde_work.c#4 integrate
.. //depot/projects/smpng/sys/geom/geom_bsd.c#19 integrate
.. //depot/projects/smpng/sys/geom/geom_pc98.c#13 integrate
.. //depot/projects/smpng/sys/gnu/ext2fs/ext2_bmap.c#3 integrate
.. //depot/projects/smpng/sys/gnu/ext2fs/ext2_vnops.c#14 integrate
.. //depot/projects/smpng/sys/i386/i386/identcpu.c#12 integrate
.. //depot/projects/smpng/sys/ia64/acpica/madt.c#8 integrate
.. //depot/projects/smpng/sys/ia64/conf/GENERIC#27 integrate
.. //depot/projects/smpng/sys/ia64/conf/SKI#9 integrate
.. //depot/projects/smpng/sys/ia64/ia64/clock.c#10 integrate
.. //depot/projects/smpng/sys/ia64/ia64/interrupt.c#16 integrate
.. //depot/projects/smpng/sys/ia64/ia64/locore.s#15 integrate
.. //depot/projects/smpng/sys/ia64/ia64/mp_machdep.c#18 integrate
.. //depot/projects/smpng/sys/ia64/ia64/pmap.c#41 integrate
.. //depot/projects/smpng/sys/ia64/ia64/sapic.c#11 integrate
.. //depot/projects/smpng/sys/ia64/include/bus.h#5 integrate
.. //depot/projects/smpng/sys/ia64/include/clock.h#4 integrate
.. //depot/projects/smpng/sys/ia64/include/cpufunc.h#15 integrate
.. //depot/projects/smpng/sys/ia64/include/intr.h#3 integrate
.. //depot/projects/smpng/sys/ia64/include/intrcnt.h#3 integrate
.. //depot/projects/smpng/sys/isofs/cd9660/cd9660_vnops.c#8 integrate
.. //depot/projects/smpng/sys/kern/imgact_elf.c#25 integrate
.. //depot/projects/smpng/sys/kern/imgact_elf32.c#2 integrate
.. //depot/projects/smpng/sys/kern/imgact_elf64.c#2 integrate
.. //depot/projects/smpng/sys/kern/imgact_elfN.c#2 delete
.. //depot/projects/smpng/sys/kern/init_main.c#30 integrate
.. //depot/projects/smpng/sys/kern/kern_descrip.c#41 integrate
.. //depot/projects/smpng/sys/kern/kern_exec.c#50 integrate
.. //depot/projects/smpng/sys/kern/kern_mib.c#18 integrate
.. //depot/projects/smpng/sys/kern/kern_ntptime.c#11 integrate
.. //depot/projects/smpng/sys/kern/kern_physio.c#5 integrate
.. //depot/projects/smpng/sys/kern/kern_proc.c#42 integrate
.. //depot/projects/smpng/sys/kern/kern_shutdown.c#32 integrate
.. //depot/projects/smpng/sys/kern/kern_sig.c#51 integrate
.. //depot/projects/smpng/sys/kern/kern_tc.c#18 integrate
.. //depot/projects/smpng/sys/kern/kern_thread.c#15 integrate
.. //depot/projects/smpng/sys/kern/subr_disklabel.c#12 integrate
.. //depot/projects/smpng/sys/kern/subr_diskmbr.c#6 integrate
.. //depot/projects/smpng/sys/kern/subr_mbuf.c#23 integrate
.. //depot/projects/smpng/sys/kern/subr_prf.c#23 integrate
.. //depot/projects/smpng/sys/kern/subr_prof.c#16 integrate
.. //depot/projects/smpng/sys/kern/syscalls.master#24 integrate
.. //depot/projects/smpng/sys/kern/uipc_socket.c#32 integrate
.. //depot/projects/smpng/sys/kern/vfs_aio.c#33 integrate
.. //depot/projects/smpng/sys/kern/vfs_bio.c#33 integrate
.. //depot/projects/smpng/sys/kern/vfs_default.c#12 integrate
.. //depot/projects/smpng/sys/kern/vfs_syscalls.c#50 integrate
.. //depot/projects/smpng/sys/kern/vnode_if.src#12 integrate
.. //depot/projects/smpng/sys/modules/firewire/firewire/Makefile#5 integrate
.. //depot/projects/smpng/sys/net/if_loop.c#13 integrate
.. //depot/projects/smpng/sys/net/if_stf.c#17 integrate
.. //depot/projects/smpng/sys/netinet/tcp_syncache.c#16 integrate
.. //depot/projects/smpng/sys/netinet6/esp_input.c#10 integrate
.. //depot/projects/smpng/sys/netinet6/icmp6.c#11 integrate
.. //depot/projects/smpng/sys/netinet6/ip6_fw.c#9 integrate
.. //depot/projects/smpng/sys/netinet6/ip6_input.c#19 integrate
.. //depot/projects/smpng/sys/netinet6/ip6_output.c#16 integrate
.. //depot/projects/smpng/sys/netinet6/ipsec.c#7 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_vnops.c#19 integrate
.. //depot/projects/smpng/sys/opencrypto/crypto.c#4 integrate
.. //depot/projects/smpng/sys/opencrypto/cryptodev.c#4 integrate
.. //depot/projects/smpng/sys/opencrypto/cryptodev.h#2 integrate
.. //depot/projects/smpng/sys/pc98/pc98/diskslice_machdep.c#6 integrate
.. //depot/projects/smpng/sys/pc98/pc98/fd.c#17 integrate
.. //depot/projects/smpng/sys/pccard/pcic_pci.c#26 integrate
.. //depot/projects/smpng/sys/pci/if_rl.c#20 integrate
.. //depot/projects/smpng/sys/pci/if_xl.c#17 integrate
.. //depot/projects/smpng/sys/pci/if_xlreg.h#6 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/atomic.S#1 branch
.. //depot/projects/smpng/sys/powerpc/powerpc/locore.S#1 branch
.. //depot/projects/smpng/sys/powerpc/powerpc/ofwmagic.S#1 branch
.. //depot/projects/smpng/sys/powerpc/powerpc/swtch.S#1 branch
.. //depot/projects/smpng/sys/security/mac_lomac/mac_lomac.c#4 integrate
.. //depot/projects/smpng/sys/sparc64/include/bus.h#9 integrate
.. //depot/projects/smpng/sys/sparc64/include/bus_private.h#2 integrate
.. //depot/projects/smpng/sys/sparc64/include/elf.h#8 integrate
.. //depot/projects/smpng/sys/sparc64/include/iommureg.h#4 integrate
.. //depot/projects/smpng/sys/sparc64/include/iommuvar.h#6 integrate
.. //depot/projects/smpng/sys/sparc64/include/pmap.h#19 integrate
.. //depot/projects/smpng/sys/sparc64/pci/ofw_pci.c#7 integrate
.. //depot/projects/smpng/sys/sparc64/pci/psycho.c#16 integrate
.. //depot/projects/smpng/sys/sparc64/pci/psychoreg.h#6 integrate
.. //depot/projects/smpng/sys/sparc64/pci/psychovar.h#6 integrate
.. //depot/projects/smpng/sys/sparc64/sbus/sbus.c#6 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/bus_machdep.c#9 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/cache.c#9 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/iommu.c#10 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/pmap.c#32 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/tlb.c#6 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/tsb.c#17 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/vm_machdep.c#26 integrate
.. //depot/projects/smpng/sys/sys/buf.h#14 integrate
.. //depot/projects/smpng/sys/sys/ccdvar.h#4 integrate
.. //depot/projects/smpng/sys/sys/conf.h#18 integrate
.. //depot/projects/smpng/sys/sys/copyright.h#4 integrate
.. //depot/projects/smpng/sys/sys/diskpc98.h#3 integrate
.. //depot/projects/smpng/sys/sys/dmap.h#3 delete
.. //depot/projects/smpng/sys/sys/exec.h#3 integrate
.. //depot/projects/smpng/sys/sys/imgact_elf.h#6 integrate
.. //depot/projects/smpng/sys/sys/mbuf.h#16 integrate
.. //depot/projects/smpng/sys/sys/proc.h#69 integrate
.. //depot/projects/smpng/sys/sys/sysctl.h#15 integrate
.. //depot/projects/smpng/sys/sys/syslimits.h#5 integrate
.. //depot/projects/smpng/sys/sys/systm.h#36 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_inode.c#11 integrate
.. //depot/projects/smpng/sys/ufs/ufs/ufs_bmap.c#7 integrate
.. //depot/projects/smpng/sys/ufs/ufs/ufs_vnops.c#24 integrate
.. //depot/projects/smpng/sys/vm/swap_pager.c#22 integrate
.. //depot/projects/smpng/sys/vm/swap_pager.h#6 integrate
.. //depot/projects/smpng/sys/vm/vm_kern.c#10 integrate
.. //depot/projects/smpng/sys/vm/vm_map.c#27 integrate
.. //depot/projects/smpng/sys/vm/vm_meter.c#12 integrate
.. //depot/projects/smpng/sys/vm/vm_object.c#24 integrate
.. //depot/projects/smpng/sys/vm/vm_page.c#26 integrate
.. //depot/projects/smpng/sys/vm/vm_pageout.c#22 integrate
.. //depot/projects/smpng/sys/vm/vm_swap.c#19 integrate
.. //depot/projects/smpng/sys/vm/vnode_pager.c#24 integrate

Differences ...

==== //depot/projects/smpng/sys/alpha/alpha/dump_machdep.c#3 (text+ko) ====

@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/alpha/alpha/dump_machdep.c,v 1.2 2002/08/31 03:21:59 jhb Exp $
+ * $FreeBSD: src/sys/alpha/alpha/dump_machdep.c,v 1.3 2003/01/03 00:19:54 ticso Exp $
  */
 
 #include <sys/param.h>
@@ -73,6 +73,18 @@
 		strncpy(kdh.panicstring, panicstr, sizeof kdh.panicstring);
 	kdh.parity = kerneldump_parity(&kdh);
 
+	/*
+	 * Check if we will have enough room to save the coredump.
+	 * The partition size needed is the sum of:
+	 * Memory to save + header + trailer + Room to leave untouched
+	 * at partition head. (an arbitrary amount).
+	 */
+	if (di->mediasize <  
+	    Maxmem * (off_t)PAGE_SIZE + sizeof kdh * 2 + 64*1024) {
+		printf("\nDump failed. Partition too small.\n");
+		return;
+	}
+
 	dumplo = di->mediaoffset + di->mediasize - Maxmem * (off_t)PAGE_SIZE;
 	dumplo -= sizeof kdh * 2;
 	i = di->dumper(di->priv, &kdh, NULL, dumplo, sizeof kdh);

==== //depot/projects/smpng/sys/boot/pc98/boot2/bios.S#2 (text+ko) ====

@@ -24,7 +24,7 @@
  * the rights to redistribute these changes.
  *
  *	from: Mach, Revision 2.2  92/04/04  11:34:26  rpd
- * $FreeBSD: src/sys/boot/pc98/boot2/bios.S,v 1.3 2001/05/24 11:18:32 nyan Exp $
+ * $FreeBSD: src/sys/boot/pc98/boot2/bios.S,v 1.4 2003/01/06 13:43:13 nyan Exp $
  */
 
 /*
@@ -94,6 +94,26 @@
 #ifndef CDBOOT
 
 /*
+ *  PC-9801/PC-9821 SCSI MO booting
+ *    2002/06/05-07/03 Kawanobe Koh <kawanobe@st.rim.or.jp>
+ *
+ */
+scsi_hd:
+	.code16
+	push	%cx
+	push	%ds
+	mov	%bl, %cl		/* UA */
+	and	$0x0F, %cl
+	xor	%ax, %ax
+	mov	%ax, %ds
+	mov	(0x0482), %al		/* SCSI HD equipment bits */
+	shr	%cl, %al
+	pop	%ds
+	pop	%cx
+	test	$1, %al
+	ret
+
+/*
  * biosread(dev, cyl, head, sec, nsec, offset)
  *	Read "nsec" sectors from disk to offset "offset" in boot segment
  * BIOS call "INT 0x1B Function 0xn6" to read sectors from disk into memory
@@ -118,54 +138,58 @@
 	push	%esi
 	push	%edi
 
-	movb	0x14(%ebp), %dl		/* sector */
-	movb	0x10(%ebp), %dh		/* head */
-	movw	0x0c(%ebp), %cx		/* cylinder */
-	movb	0x08(%ebp), %al		/* DA/UA */
-	movb	$0x06, %ah
-	andb	$0xf0, %al
-	cmpb	$0x30, %al
-	jz	fd
-	cmpb	$0x90, %al
-	jnz	1f
-fd:
-	incb	%dl
-	movb	$0x02, %ch
-	movb	$0xd6, %ah
-1:
-	movb	0x08(%ebp), %al
-	movl	%eax, %ebx
+	mov	0x08(%ebp), %bl		/* (byte) DA/UA */
+	mov	0x0C(%ebp), %ecx	/* (word) cylinder */
+	mov	0x10(%ebp), %dh		/* (byte) head */
+	mov	0x14(%ebp), %dl		/* (byte) sector */
+	mov	0x18(%ebp), %esi	/* (byte) number of sectors */
+	mov	0x1C(%ebp), %edi	/* (word) destination offset */
 
 	/* prot_to_real will set %es to BOOTSEG */
 	call	EXT(prot_to_real)	/* enter real mode */
-	mov	%ebx, %eax
-	xor	%ebx, %ebx
-	addr32
-	movb	0x18(%ebp), %bl		/* number of sectors */
 	.code16
-	shl	$9, %ebx
-	push	%ebx
-	.code32
-	addr32
-	data32
-	mov	0x1c(%ebp), %ebx
-	.code16
-	mov	%ebx, %ebp
-	pop	%ebx
+	mov	$0x06, %bh		/* read data function */
+	mov	%bl, %al		/* DA */
+	and	$0xF0, %al
+	cmp	$0x30, %al		/* 1440KB FD */
+	jz	read_floppy
+	cmp	$0x90, %al		/* 1200KB FD */
+	jz	read_floppy
+	cmp	$0xA0, %al		/* SCSI HD or MO */
+	jnz	read_next
+	call	scsi_hd
+	jnz	read_next
+read_linear:
+	mov	%dh, %al		/* change to linear sector */
+	shl	$5, %al			/* multiply by 32 sector per track */
+	add	%dl, %al
+	xor	%dh, %dh		/* higher 16 bits into %dx */
+	mov	%ch, %dl
+	mov	%cl, %ch		/* lower 16 bits into %cx */
+	mov	%al, %cl
+	and	$0x7F, %bl		/* linear access DA/UA */
+	jmp	read_next
+read_floppy:
+	inc	%dx			/* sector address begins from one */
+	mov	$0x02, %ch		/* 512 bytes sector */
+	mov	$0xD6, %bh		/* MT MFM retry seek */
+read_next:
+	mov	%si, %ax		/* number of sectors */
+	shl	$9, %ax			/* multiply by 512 bytes */
+	xchg	%bx, %ax
+	mov	%di, %bp		/* destination offset */
+	int	$0x1B			/* disk bios call */
+	jc	read_end
+	xor	%ax, %ax
+read_end:
+	mov	%ax, %bx		/* save return value */
 
-	int	$0x1b
-	jc	1f
 	.code32
-	xor	%eax, %eax
-1:
-	/* save return value (actually movw %ax, %bx) */
-	mov	%eax, %ebx
-
 	data32
 	call	EXT(real_to_prot)	/* back to protected mode */
 
 	xor	%eax, %eax
-	movb	%bh, %al		/* return value in %ax */
+	mov	%bh, %al		/* return value in %eax */
 
 	pop	%edi
 	pop	%esi
@@ -360,46 +384,61 @@
 	push	%ebp
 	mov	%esp, %ebp
 	push	%ebx
-	push	%esi
-	push    %edi
+
+	mov	0x08(%ebp), %bl		/* (byte) DA/UA */
 
-	movb	0x8(%ebp), %dl		/* diskinfo(drive #) */
 	call	EXT(prot_to_real)	/* enter real mode */
 	.code16
+	mov	%bl, %al		/* DA */
+	and	$0xf0, %al
+	mov	$18, %dl		/* 1440KB FD sectors per track */
+	cmp	$0x30, %al
+	jz	floppy
+	mov	$15, %dl		/* 1200KB FD sectors per track */
+	cmp	$0x90, %al
+	jz	floppy
+	cmp	$0xA0, %al		/* SCSI HD or MO */
+	jnz	sense
+	call	scsi_hd
+	jnz	sense
 
-	movb	%dl, %al		/* ask for disk info */
-	andb	$0xf0, %al
-	cmpb	$0x30, %al
-	jz	fdd4
-	cmpb	$0x90, %al
-	jz	fdd
+	push	%ds			/* SCSI MO or CD ? */
+	xor	%ax, %ax
+	mov	%ax, %ds
+	and	$0x0F, %bx		/* UA */
+	shl	$2, %bx			/* parameter offset */
+	add	$0x0460, %bx
+	mov	(%bx), %al		/* SCSI equipment parameter[0] */
+	and	$0x1F, %al		/* peripheral device type */
+	cmp	$7, %al			/* SCSI MO */
+	jnz	good
+	add	$3, %bx
+	mov	(%bx), %al		/* SCSI equipment parameter[3] */
+	test	$0x30, %al		/* sector length from 256 to 2048 */
+	jnz	good
+	or	$0x10, %al		/* forced set 512 bytes sector */
+	mov	%al, (%bx)
+	mov	$0xA100, %dx		/* refered by C language */
+	mov	%dx, %ds
+	mov	%al, (%bx)
+good:
+	pop	%ds
 
-	movb	%dl, %al
-	movb	$0x84, %ah
-
+	mov	$0xFFFE, %cx		/* virtual 65535 cylinders setting */
+	mov	$0x0820, %dx		/* standard 8 heads and 32 sectors */
+	jmp	ok
+sense:
+	mov	$0x84, %ah		/* ask for disk info */
+	mov	%bl, %al
 	int	$0x1b
-
-	jnc	ok
+	jnc	ok			/* use %cx and %dx after */
 	/*
 	 * Urk.  Call failed.  It is not supported for floppies by old BIOS's.
 	 * Guess it's a 15-sector floppy.
 	 */
-fdd4:
-	movb	$18, %dl
-	jmp	1f
-fdd:
-	movb	$15, %dl		/* max sector */
-1:
-	subb	%ah, %ah		/* %ax = 0 */
-	movb	%al, %al
-	movb	%ah, %bh		/* %bh = 0 */
-	movb	$2, %bl			/* %bl	bits 0-3 = drive type,
-						bit    2 = 1.2M */
-	movb	$79, %ch		/* max track */
-	movb	$1, %cl			/* # floppy drives installed */
-	movb	$2, %dh			/* max head */
-	/* es:di = parameter table */
-	/* carry = 0 */
+floppy:
+	mov	$79, %cx		/* 80 cylinders 1200K and 1440K FD */
+	mov	$2, %dh			/* 2 heads as double side */
 ok:
 	.code32
 	data32
@@ -412,12 +451,9 @@
 	 *	 8 bit sector
 	 */
 	mov	%ecx, %eax
-	sall	$16,%eax		/* << 16 */
-	movb	%dh, %ah		/* max head */
-	movb	%dl, %al		/* max sector (and # sectors) */
+	sal	$16, %eax		/* max cylinder number from zero */
+	mov	%dx, %ax		/* number of heads and sectors */
 
-	pop	%edi
-	pop	%esi
 	pop	%ebx
 	pop	%ebp
 	ret

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

@@ -24,7 +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.9 2002/10/03 16:20:14 nyan Exp $
+ * $FreeBSD: src/sys/boot/pc98/boot2/boot.c,v 1.10 2003/01/06 13:43:13 nyan Exp $
  */
 
 
@@ -118,11 +118,16 @@
 	dosdev = drive;
 #ifdef PC98
 	maj = (drive&0x70) >> 3;		/* a good first bet */
-	if (maj == 4) {		/* sd */
+	if (maj == 4) {	/* da */
 		disk_equips = *(unsigned char *)V(0xA1482);
 		unit = 0;
 		for (i=0; i<(drive&0x0f); i++) {
-			unit += (disk_equips >> i) & 1;
+			int media = ((unsigned *)V(0xA1460))[i] & 0x1F;
+
+			if ((disk_equips >> i) & 1)	/* HD */
+				unit++;
+			else if (media == 7)		/* MO */
+				unit++;
 		}
 	} else {
 		unit = drive & 0x0f;

==== //depot/projects/smpng/sys/boot/pc98/boot2/disk.c#4 (text+ko) ====

@@ -24,7 +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.6 2002/10/03 16:20:14 nyan Exp $
+ * $FreeBSD: src/sys/boot/pc98/boot2/disk.c,v 1.8 2003/01/06 13:43:13 nyan Exp $
  */
 
 /*
@@ -77,7 +77,7 @@
 int
 devopen(void)
 {
-	struct dos_partition *dptr;
+	struct pc98_partition *dptr;
 	struct disklabel *dl;
 	char *p;
 	int i, sector = 0, di, dosdev_copy;
@@ -99,7 +99,7 @@
 #else	/* EMBEDDED_DISKLABEL */
 #ifdef PC98
 		p = Bread(dosdev_copy, 1);
-		dptr = (struct dos_partition *)p;
+		dptr = (struct pc98_partition *)p;
 		slice = WHOLE_DISK_SLICE;
 		for (i = 0; i < NDOSPART; i++, dptr++)
 			if (dptr->dp_mid == DOSPTYP_386BSD) {
@@ -129,17 +129,6 @@
 			printf("bad disklabel\n");
 			return 1;
 		}
-		if( (maj == 4) || (maj == 0) || (maj == 1))
-		{
-			if (dl->d_type == DTYPE_SCSI)
-			{
-				maj = 4; /* use scsi as boot dev */
-			}
-			else
-			{
-				maj = 0; /* must be ESDI/IDE */
-			}
-		}
 		/* This little trick is for OnTrack DiskManager disks */
 		boff = dl->d_partitions[part].p_offset -
 			dl->d_partitions[2].p_offset + sector;

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

@@ -24,7 +24,7 @@
  * 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.2 1999/08/28 00:40:26 peter Exp $
+ * $FreeBSD: src/sys/boot/pc98/boot2/sys.c,v 1.3 2003/01/06 13:43:14 nyan Exp $
  */
 
 /*
@@ -275,8 +275,8 @@
 	switch(maj)
 	{
 #ifdef PC98
-	case 4: /* sd */
-		dosdev_copy = biosdrive | 0xa0;
+	case 4:	/* da */
+		dosdev_copy = biosdrive | 0xA0; /* SCSI HD or MO */
 #else	/* IBM-PC */
 	case 0:
 	case 4:
@@ -284,8 +284,8 @@
 #endif
 		break;
 #ifdef PC98
-	case 0:
-	case 2:
+	case 0:	/* wd */
+	case 2:	/* 1200KB fd */
 		dosdev_copy = (maj << 3) | unit | 0x80;
 #else
 	case 2:
@@ -293,7 +293,7 @@
 #endif
 		break;
 #ifdef PC98
-	case 6:/* 1.44MB FD */
+	case 6:	/* 1440KB fd */
 		dosdev_copy = (maj << 3) | unit;
 		break;
 #endif

==== //depot/projects/smpng/sys/boot/pc98/libpc98/biosdisk.c#5 (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/boot/pc98/libpc98/biosdisk.c,v 1.19 2002/10/07 15:26:10 nyan Exp $
+ * $FreeBSD: src/sys/boot/pc98/libpc98/biosdisk.c,v 1.21 2003/01/06 13:43:15 nyan Exp $
  */
 
 /*
@@ -81,9 +81,12 @@
 #define BD_FLOPPY		0x0004
 #define BD_LABELOK		0x0008
 #define BD_PARTTABOK		0x0010
+#ifdef PC98
+#define BD_OPTICAL		0x0020
+#endif
     struct disklabel		od_disklabel;
     int				od_nslices;	/* slice count */
-    struct dos_partition	od_slicetab[MAX_SLICES];
+    struct pc98_partition	od_slicetab[MAX_SLICES];
 };
 
 /*
@@ -109,7 +112,7 @@
 
 static int	bd_int13probe(struct bdinfo *bd);
 
-static void	bd_printslice(struct open_disk *od, struct dos_partition *dp,
+static void	bd_printslice(struct open_disk *od, struct pc98_partition *dp,
 		    char *prefix, int verbose);
 static void	bd_printbsdslice(struct open_disk *od, daddr_t offset,
 		    char *prefix, int verbose);
@@ -198,7 +201,7 @@
 		}
 	    }
 	    else {
-		if ((unit & 0xa0) == 0xa0)
+		if ((unit & 0xF0) == 0xA0)	/* SCSI HD or MO */
 		    bdinfo[nbdinfo].bd_da_unit = da_drive++;
 	    }
 	    /* XXX we need "disk aliases" to make this simpler */
@@ -257,6 +260,14 @@
 	bd->bd_flags |= BD_MODEINT13;
 	return(1);
     }
+    if ((bd->bd_unit & 0xF0) == 0xA0) {
+	int media = ((unsigned *)PTOV(0xA1460))[bd->bd_unit & 0x0F] & 0x1F;
+
+	if (media == 7) { /* MO */
+	    bd->bd_flags |= BD_MODEINT13 | BD_OPTICAL;
+	    return(1);
+	}
+    }
     return(0);
 #else
     v86.ctl = V86_FLAGS;
@@ -298,7 +309,7 @@
     char			line[80];
     struct i386_devdesc		dev;
     struct open_disk		*od;
-    struct dos_partition	*dptr;
+    struct pc98_partition	*dptr;
     
     for (i = 0; i < nbdinfo; i++) {
 #ifdef PC98
@@ -523,7 +534,7 @@
 static int
 bd_opendisk(struct open_disk **odp, struct i386_devdesc *dev)
 {
-    struct dos_partition	*dptr;
+    struct pc98_partition	*dptr;
     struct disklabel		*lp;
     struct open_disk		*od;
     int				sector, slice, i;
@@ -605,7 +616,7 @@
      * copy the partition table, then pick up any extended partitions.
      */
     bcopy(buf + DOSPARTOFF, &od->od_slicetab,
-      sizeof(struct dos_partition) * NDOSPART);
+      sizeof(struct pc98_partition) * NDOSPART);
 #ifdef PC98
     od->od_nslices = NDOSPART;		/* extended slices start here */
 #else
@@ -810,7 +821,7 @@
 static int
 bd_bestslice(struct open_disk *od)
 {
-	struct dos_partition *dp;
+	struct pc98_partition *dp;
 	int pref, preflevel;
 	int i, prefslice;
 	
@@ -1081,7 +1092,13 @@
 	        v86.eax = 0x0600 | od->od_unit;
 		v86.ecx = cyl;
 	    }
-	    v86.edx = (hd << 8) | sec;
+	    if (od->od_flags & BD_OPTICAL) {
+		v86.eax &= 0xFF7F;
+		v86.ecx = dblk & 0xFFFF;
+		v86.edx = dblk >> 16;
+	    } else {
+	    	v86.edx = (hd << 8) | sec;
+	    }
 	    v86.ebx = x * BIOSDISK_SECSIZE;
 	    v86.es = VTOPSEG(xp);
 	    v86.ebp = VTOPOFF(xp);
@@ -1362,6 +1379,10 @@
 	od->od_cyl = 79;
 	od->od_hds = 2;
 	od->od_sec = (od->od_unit & 0xf0) == 0x30 ? 18 : 15;
+    } else if (od->od_flags & BD_OPTICAL) {
+	od->od_cyl = 0xFFFE;
+	od->od_hds = 8;
+	od->od_sec = 32;
     } else {
 	v86.ctl = V86_FLAGS;
 	v86.addr = 0x1b;
@@ -1423,19 +1444,26 @@
 	if (*(u_char *)PTOV(addr) & (1 << (unit & 0x0f)))
 	    if (hds++ == bunit)
 		break;
+
+	if (unit >= 0xA0) {
+	    int  media = ((unsigned *)PTOV(0xA1460))[unit & 0x0F] & 0x1F;
+
+	    if (media == 7 && hds++ == bunit)	/* SCSI MO */
+		return(0xFFFE0820); /* C:65535 H:8 S:32 */
+	}
 	if (++unit == 0x84) {
-	    unit = 0xa0;	/* SCSI HDD */
+	    unit = 0xA0;	/* SCSI HDD */
 	    addr = 0xA1482;
 	}
     }
     if (unit == 0xa7)
-	return 0x4f010f;
+	return 0x4F020F;	/* 1200KB FD C:80 H:2 S:15 */
     v86.ctl = V86_FLAGS;
     v86.addr = 0x1b;
     v86.eax = 0x8400 | unit;
     v86int();
     if (v86.efl & 0x1)
-	return 0x4f010f;
+	return 0x4F020F;	/* 1200KB FD C:80 H:2 S:15 */
     return ((v86.ecx & 0xffff) << 16) | (v86.edx & 0xffff);
 #else
     v86.ctl = V86_FLAGS;

==== //depot/projects/smpng/sys/cam/scsi/scsi_da.c#30 (text+ko) ====

@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.118 2002/12/18 21:47:52 njl Exp $
+ * $FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.120 2003/01/06 19:30:21 peter Exp $
  */
 
 #ifdef _KERNEL

==== //depot/projects/smpng/sys/conf/files#60 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.742 2003/01/01 19:49:29 jake Exp $
+# $FreeBSD: src/sys/conf/files,v 1.743 2003/01/04 22:07:48 jake Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -966,9 +966,7 @@
 isofs/cd9660/cd9660_util.c	optional cd9660
 isofs/cd9660/cd9660_vfsops.c	optional cd9660
 isofs/cd9660/cd9660_vnops.c	optional cd9660
-kern/imgact_elf32.c	standard
-kern/imgact_elf64.c	standard
-kern/imgact_elfN.c	standard
+kern/imgact_elf.c	standard
 kern/imgact_shell.c	standard
 kern/inflate.c		optional gzip
 kern/init_main.c	standard

==== //depot/projects/smpng/sys/conf/files.ia64#22 (text+ko) ====

@@ -1,7 +1,7 @@
 # This file tells config what files go into building a kernel,
 # files marked standard are always included.
 #
-# $FreeBSD: src/sys/conf/files.ia64,v 1.41 2002/10/24 19:05:03 jhb Exp $
+# $FreeBSD: src/sys/conf/files.ia64,v 1.42 2003/01/04 22:07:48 jake Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -109,6 +109,7 @@
 isa/psm.c			optional	psm
 isa/syscons_isa.c		optional	sc
 isa/vga_isa.c			optional	vga
+kern/imgact_elf32.c		optional	ia32
 kern/subr_diskmbr.c		standard
 libkern/ia64/bswap16.S		standard
 libkern/ia64/bswap32.S		standard

==== //depot/projects/smpng/sys/conf/ldscript.i386#4 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/conf/ldscript.i386,v 1.6 2002/10/11 19:38:04 obrien Exp $ */
+/* $FreeBSD: src/sys/conf/ldscript.i386,v 1.7 2003/01/06 07:37:15 phk Exp $ */
 OUTPUT_FORMAT("elf32-i386-freebsd", "elf32-i386-freebsd", "elf32-i386-freebsd")
 OUTPUT_ARCH(i386)
 ENTRY(btext)
@@ -65,10 +65,14 @@
     CONSTRUCTORS
   }
   .data1   : { *(.data1) }
+  _start_ctors = .;
+  PROVIDE (start_ctors = .);
   .ctors         :
   {
     *(.ctors)
   }
+  _stop_ctors = .;
+  PROVIDE (stop_ctors = .);
   .dtors         :
   {
     *(.dtors)

==== //depot/projects/smpng/sys/dev/bge/if_bge.c#19 (text+ko) ====

@@ -30,7 +30,7 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/bge/if_bge.c,v 1.25 2002/11/14 23:54:49 sam Exp $
+ * $FreeBSD: src/sys/dev/bge/if_bge.c,v 1.27 2003/01/07 01:33:03 jdp Exp $
  */
 
 /*
@@ -122,7 +122,7 @@
 
 #if !defined(lint)
 static const char rcsid[] =
-  "$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.25 2002/11/14 23:54:49 sam Exp $";
+  "$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.27 2003/01/07 01:33:03 jdp Exp $";
 #endif
 
 /*
@@ -131,6 +131,7 @@
  * ID burned into it, though it will always be overriden by the vendor
  * ID in the EEPROM. Just to be safe, we cover all possibilities.
  */
+#define BGE_DEVDESC_MAX		64	/* Maximum device description length */
 
 static struct bge_type bge_devs[] = {
 	{ ALT_VENDORID,	ALT_DEVICEID_BCM5700,
@@ -849,7 +850,6 @@
 {
 	int i;
 	struct bge_rcb *rcb;
-	struct bge_rcb_opaque *rcbo;
 
 	for (i = 0; i < BGE_JUMBO_RX_RING_CNT; i++) {
 		if (bge_newbuf_jumbo(sc, i, NULL) == ENOBUFS)
@@ -859,9 +859,8 @@
 	sc->bge_jumbo = i - 1;
 
 	rcb = &sc->bge_rdata->bge_info.bge_jumbo_rx_rcb;
-	rcbo = (struct bge_rcb_opaque *)rcb;
-	rcb->bge_flags = 0;
-	CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_MAXLEN_FLAGS, rcbo->bge_reg2);
+	rcb->bge_maxlen_flags = BGE_RCB_MAXLEN_FLAGS(0, 0);
+	CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_MAXLEN_FLAGS, rcb->bge_maxlen_flags);
 
 	CSR_WRITE_4(sc, BGE_MBX_RX_JUMBO_PROD_LO, sc->bge_jumbo);
 
@@ -1066,7 +1065,7 @@
 	struct bge_softc *sc;
 {
 	struct bge_rcb *rcb;
-	struct bge_rcb_opaque *rcbo;
+	volatile struct bge_rcb *vrcb;
 	int i;
 
 	/*
@@ -1137,17 +1136,15 @@
 	rcb = &sc->bge_rdata->bge_info.bge_std_rx_rcb;
 	BGE_HOSTADDR(rcb->bge_hostaddr) =
 	    vtophys(&sc->bge_rdata->bge_rx_std_ring);
-	rcb->bge_max_len = BGE_MAX_FRAMELEN;
+	rcb->bge_maxlen_flags = BGE_RCB_MAXLEN_FLAGS(BGE_MAX_FRAMELEN, 0);
 	if (sc->bge_extram)
 		rcb->bge_nicaddr = BGE_EXT_STD_RX_RINGS;
 	else
 		rcb->bge_nicaddr = BGE_STD_RX_RINGS;
-	rcb->bge_flags = 0;
-	rcbo = (struct bge_rcb_opaque *)rcb;
-	CSR_WRITE_4(sc, BGE_RX_STD_RCB_HADDR_HI, rcbo->bge_reg0);
-	CSR_WRITE_4(sc, BGE_RX_STD_RCB_HADDR_LO, rcbo->bge_reg1);
-	CSR_WRITE_4(sc, BGE_RX_STD_RCB_MAXLEN_FLAGS, rcbo->bge_reg2);
-	CSR_WRITE_4(sc, BGE_RX_STD_RCB_NICADDR, rcbo->bge_reg3);
+	CSR_WRITE_4(sc, BGE_RX_STD_RCB_HADDR_HI, rcb->bge_hostaddr.bge_addr_hi);
+	CSR_WRITE_4(sc, BGE_RX_STD_RCB_HADDR_LO, rcb->bge_hostaddr.bge_addr_lo);
+	CSR_WRITE_4(sc, BGE_RX_STD_RCB_MAXLEN_FLAGS, rcb->bge_maxlen_flags);
+	CSR_WRITE_4(sc, BGE_RX_STD_RCB_NICADDR, rcb->bge_nicaddr);
 
 	/*
 	 * Initialize the jumbo RX ring control block
@@ -1159,24 +1156,24 @@
 	rcb = &sc->bge_rdata->bge_info.bge_jumbo_rx_rcb;
 	BGE_HOSTADDR(rcb->bge_hostaddr) =
 	    vtophys(&sc->bge_rdata->bge_rx_jumbo_ring);
-	rcb->bge_max_len = BGE_MAX_FRAMELEN;
+	rcb->bge_maxlen_flags =
+	    BGE_RCB_MAXLEN_FLAGS(BGE_MAX_FRAMELEN, BGE_RCB_FLAG_RING_DISABLED);
 	if (sc->bge_extram)
 		rcb->bge_nicaddr = BGE_EXT_JUMBO_RX_RINGS;
 	else
 		rcb->bge_nicaddr = BGE_JUMBO_RX_RINGS;
-	rcb->bge_flags = BGE_RCB_FLAG_RING_DISABLED;
-
-	rcbo = (struct bge_rcb_opaque *)rcb;
-	CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_HADDR_HI, rcbo->bge_reg0);
-	CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_HADDR_LO, rcbo->bge_reg1);
-	CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_MAXLEN_FLAGS, rcbo->bge_reg2);
-	CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_NICADDR, rcbo->bge_reg3);
+	CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_HADDR_HI,
+	    rcb->bge_hostaddr.bge_addr_hi);
+	CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_HADDR_LO,
+	    rcb->bge_hostaddr.bge_addr_lo);
+	CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_MAXLEN_FLAGS, rcb->bge_maxlen_flags);
+	CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_NICADDR, rcb->bge_nicaddr);
 
 	/* Set up dummy disabled mini ring RCB */
 	rcb = &sc->bge_rdata->bge_info.bge_mini_rx_rcb;
-	rcb->bge_flags = BGE_RCB_FLAG_RING_DISABLED;
-	rcbo = (struct bge_rcb_opaque *)rcb;
-	CSR_WRITE_4(sc, BGE_RX_MINI_RCB_MAXLEN_FLAGS, rcbo->bge_reg2);
+	rcb->bge_maxlen_flags =
+	    BGE_RCB_MAXLEN_FLAGS(0, BGE_RCB_FLAG_RING_DISABLED);
+	CSR_WRITE_4(sc, BGE_RX_MINI_RCB_MAXLEN_FLAGS, rcb->bge_maxlen_flags);
 
 	/*
 	 * Set the BD ring replentish thresholds. The recommended
@@ -1191,37 +1188,37 @@
 	 * bit in the flags field of all the TX send ring control blocks.
 	 * These are located in NIC memory.
 	 */
-	rcb = (struct bge_rcb *)(sc->bge_vhandle + BGE_MEMWIN_START +
+	vrcb = (volatile struct bge_rcb *)(sc->bge_vhandle + BGE_MEMWIN_START +
 	    BGE_SEND_RING_RCB);
 	for (i = 0; i < BGE_TX_RINGS_EXTSSRAM_MAX; i++) {
-		rcb->bge_flags = BGE_RCB_FLAG_RING_DISABLED;
-		rcb->bge_max_len = 0;
-		rcb->bge_nicaddr = 0;
-		rcb++;
+		vrcb->bge_maxlen_flags =
+		    BGE_RCB_MAXLEN_FLAGS(0, BGE_RCB_FLAG_RING_DISABLED);
+		vrcb->bge_nicaddr = 0;
+		vrcb++;
 	}
 
 	/* Configure TX RCB 0 (we use only the first ring) */
-	rcb = (struct bge_rcb *)(sc->bge_vhandle + BGE_MEMWIN_START +
+	vrcb = (volatile struct bge_rcb *)(sc->bge_vhandle + BGE_MEMWIN_START +
 	    BGE_SEND_RING_RCB);
-	rcb->bge_hostaddr.bge_addr_hi = 0;
-	BGE_HOSTADDR(rcb->bge_hostaddr) =
+	vrcb->bge_hostaddr.bge_addr_hi = 0;
+	BGE_HOSTADDR(vrcb->bge_hostaddr) =
 	    vtophys(&sc->bge_rdata->bge_tx_ring);
-	rcb->bge_nicaddr = BGE_NIC_TXRING_ADDR(0, BGE_TX_RING_CNT);
-	rcb->bge_max_len = BGE_TX_RING_CNT;
-	rcb->bge_flags = 0;
+	vrcb->bge_nicaddr = BGE_NIC_TXRING_ADDR(0, BGE_TX_RING_CNT);
+	vrcb->bge_maxlen_flags = BGE_RCB_MAXLEN_FLAGS(BGE_TX_RING_CNT, 0);
 
 	/* Disable all unused RX return rings */
-	rcb = (struct bge_rcb *)(sc->bge_vhandle + BGE_MEMWIN_START +
+	vrcb = (volatile struct bge_rcb *)(sc->bge_vhandle + BGE_MEMWIN_START +
 	    BGE_RX_RETURN_RING_RCB);
 	for (i = 0; i < BGE_RX_RINGS_MAX; i++) {
-		rcb->bge_hostaddr.bge_addr_hi = 0;
-		rcb->bge_hostaddr.bge_addr_lo = 0;
-		rcb->bge_flags = BGE_RCB_FLAG_RING_DISABLED;
-		rcb->bge_max_len = BGE_RETURN_RING_CNT;
-		rcb->bge_nicaddr = 0;
+		vrcb->bge_hostaddr.bge_addr_hi = 0;
+		vrcb->bge_hostaddr.bge_addr_lo = 0;
+		vrcb->bge_maxlen_flags =
+		    BGE_RCB_MAXLEN_FLAGS(BGE_RETURN_RING_CNT,
+		    BGE_RCB_FLAG_RING_DISABLED);
+		vrcb->bge_nicaddr = 0;
 		CSR_WRITE_4(sc, BGE_MBX_RX_CONS0_LO +
 		    (i * (sizeof(u_int64_t))), 0);
-		rcb++;
+		vrcb++;
 	}
 
 	/* Initialize RX ring indexes */
@@ -1235,14 +1232,13 @@
 	 * The return rings live entirely within the host, so the
 	 * nicaddr field in the RCB isn't used.
 	 */
-	rcb = (struct bge_rcb *)(sc->bge_vhandle + BGE_MEMWIN_START +
+	vrcb = (volatile struct bge_rcb *)(sc->bge_vhandle + BGE_MEMWIN_START +
 	    BGE_RX_RETURN_RING_RCB);
-	rcb->bge_hostaddr.bge_addr_hi = 0;
-	BGE_HOSTADDR(rcb->bge_hostaddr) =
+	vrcb->bge_hostaddr.bge_addr_hi = 0;
+	BGE_HOSTADDR(vrcb->bge_hostaddr) =
 	    vtophys(&sc->bge_rdata->bge_rx_return_ring);
-	rcb->bge_nicaddr = 0x00000000;
-	rcb->bge_max_len = BGE_RETURN_RING_CNT;
-	rcb->bge_flags = 0;
+	vrcb->bge_nicaddr = 0x00000000;
+	vrcb->bge_maxlen_flags = BGE_RCB_MAXLEN_FLAGS(BGE_RETURN_RING_CNT, 0);
 
 	/* Set random backoff seed for TX */
 	CSR_WRITE_4(sc, BGE_TX_RANDOM_BACKOFF,
@@ -1422,6 +1418,7 @@
 {
 	struct bge_type *t;
 	struct bge_softc *sc;
+	char *descbuf;

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

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe p4-projects" in the body of the message




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