PERFORCE change 74298 for review

John Baldwin jhb at FreeBSD.org
Fri Apr 1 10:39:33 PST 2005


http://perforce.freebsd.org/chv.cgi?CH=74298

Change 74298 by jhb at jhb_slimer on 2005/04/01 18:38:57

	IFC @74280.

Affected files ...

.. //depot/projects/smpng/sys/alpha/alpha/machdep.c#79 integrate
.. //depot/projects/smpng/sys/alpha/osf1/osf1_misc.c#36 integrate
.. //depot/projects/smpng/sys/amd64/amd64/db_disasm.c#4 integrate
.. //depot/projects/smpng/sys/amd64/conf/GENERIC#30 integrate
.. //depot/projects/smpng/sys/amd64/conf/NOTES#13 integrate
.. //depot/projects/smpng/sys/amd64/linux32/linux32_machdep.c#6 integrate
.. //depot/projects/smpng/sys/cam/cam_xpt.c#28 integrate
.. //depot/projects/smpng/sys/cam/scsi/scsi_cd.c#26 integrate
.. //depot/projects/smpng/sys/cam/scsi/scsi_ch.c#13 integrate
.. //depot/projects/smpng/sys/cam/scsi/scsi_sa.c#22 integrate
.. //depot/projects/smpng/sys/cam/scsi/scsi_target.c#18 integrate
.. //depot/projects/smpng/sys/coda/coda_fbsd.c#14 integrate
.. //depot/projects/smpng/sys/coda/coda_vnops.c#23 integrate
.. //depot/projects/smpng/sys/compat/freebsd32/freebsd32_misc.c#17 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_getcwd.c#16 integrate
.. //depot/projects/smpng/sys/compat/ndis/kern_ndis.c#24 integrate
.. //depot/projects/smpng/sys/compat/ndis/ndis_var.h#19 integrate
.. //depot/projects/smpng/sys/compat/ndis/ntoskrnl_var.h#15 integrate
.. //depot/projects/smpng/sys/compat/ndis/subr_hal.c#13 integrate
.. //depot/projects/smpng/sys/compat/ndis/subr_ndis.c#26 integrate
.. //depot/projects/smpng/sys/compat/ndis/subr_ntoskrnl.c#26 integrate
.. //depot/projects/smpng/sys/conf/NOTES#95 integrate
.. //depot/projects/smpng/sys/conf/files#138 integrate
.. //depot/projects/smpng/sys/conf/files.amd64#29 integrate
.. //depot/projects/smpng/sys/conf/files.i386#79 integrate
.. //depot/projects/smpng/sys/conf/kern.mk#14 integrate
.. //depot/projects/smpng/sys/conf/kern.post.mk#43 integrate
.. //depot/projects/smpng/sys/conf/kern.pre.mk#45 integrate
.. //depot/projects/smpng/sys/conf/kmod.mk#44 integrate
.. //depot/projects/smpng/sys/conf/majors#44 delete
.. //depot/projects/smpng/sys/conf/majors.awk#2 delete
.. //depot/projects/smpng/sys/conf/options#96 integrate
.. //depot/projects/smpng/sys/dev/aac/aac.c#48 integrate
.. //depot/projects/smpng/sys/dev/acpi_support/acpi_asus.c#4 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi.c#82 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi_cpu.c#31 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpi_perf.c#4 integrate
.. //depot/projects/smpng/sys/dev/acpica/acpivar.h#54 integrate
.. //depot/projects/smpng/sys/dev/aic7xxx/aic7xxx.c#25 integrate
.. //depot/projects/smpng/sys/dev/amr/amr.c#29 integrate
.. //depot/projects/smpng/sys/dev/an/if_an.c#42 integrate
.. //depot/projects/smpng/sys/dev/arcmsr/arcmsr.c#1 branch
.. //depot/projects/smpng/sys/dev/arcmsr/arcmsr.h#1 branch
.. //depot/projects/smpng/sys/dev/ata/ata-all.c#67 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-all.h#34 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-card.c#24 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-cbus.c#13 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-chipset.c#49 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-commands.h#3 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-disk.c#48 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-disk.h#16 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-dma.c#42 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-isa.c#19 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-lowlevel.c#25 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-pci.c#52 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-pci.h#27 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-queue.c#25 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-raid.c#32 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-raid.h#17 integrate
.. //depot/projects/smpng/sys/dev/ata/ata_if.m#1 branch
.. //depot/projects/smpng/sys/dev/ata/atapi-cd.c#54 integrate
.. //depot/projects/smpng/sys/dev/ata/atapi-cd.h#15 integrate
.. //depot/projects/smpng/sys/dev/ata/atapi-fd.c#26 integrate
.. //depot/projects/smpng/sys/dev/ata/atapi-fd.h#11 integrate
.. //depot/projects/smpng/sys/dev/ata/atapi-tape.c#30 integrate
.. //depot/projects/smpng/sys/dev/ata/atapi-tape.h#9 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_rate/amrr/amrr.c#4 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_rate/onoe/onoe.c#4 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_rate/sample/sample.c#2 integrate
.. //depot/projects/smpng/sys/dev/ath/if_ath.c#24 integrate
.. //depot/projects/smpng/sys/dev/ath/if_athioctl.h#9 integrate
.. //depot/projects/smpng/sys/dev/ath/if_athrate.h#3 integrate
.. //depot/projects/smpng/sys/dev/ath/if_athvar.h#13 integrate
.. //depot/projects/smpng/sys/dev/ciss/ciss.c#39 integrate
.. //depot/projects/smpng/sys/dev/fb/vga.c#20 integrate
.. //depot/projects/smpng/sys/dev/firewire/fwdev.c#20 integrate
.. //depot/projects/smpng/sys/dev/firewire/fwohci.c#35 integrate
.. //depot/projects/smpng/sys/dev/hptmv/entry.c#6 integrate
.. //depot/projects/smpng/sys/dev/hptmv/hptproc.c#4 integrate
.. //depot/projects/smpng/sys/dev/if_ndis/if_ndis.c#26 integrate
.. //depot/projects/smpng/sys/dev/if_ndis/if_ndis_pci.c#9 integrate
.. //depot/projects/smpng/sys/dev/ixgb/if_ixgb.c#6 integrate
.. //depot/projects/smpng/sys/dev/ixgb/if_ixgb.h#3 integrate
.. //depot/projects/smpng/sys/dev/ixgb/if_ixgb_osdep.h#3 integrate
.. //depot/projects/smpng/sys/dev/mlx/mlx.c#17 integrate
.. //depot/projects/smpng/sys/dev/mlx/mlx_pci.c#9 integrate
.. //depot/projects/smpng/sys/dev/mse/msevar.h#4 integrate
.. //depot/projects/smpng/sys/dev/nge/if_nge.c#39 integrate
.. //depot/projects/smpng/sys/dev/nmdm/nmdm.c#27 integrate
.. //depot/projects/smpng/sys/dev/pccard/pccard_cis.c#18 integrate
.. //depot/projects/smpng/sys/dev/pccard/pccard_cis_quirks.c#8 integrate
.. //depot/projects/smpng/sys/dev/pci/pci.c#54 integrate
.. //depot/projects/smpng/sys/dev/pci/pci_pci.c#24 integrate
.. //depot/projects/smpng/sys/dev/pci/pcireg.h#7 integrate
.. //depot/projects/smpng/sys/dev/random/randomdev_soft.c#9 integrate
.. //depot/projects/smpng/sys/dev/rp/rp_pci.c#7 integrate
.. //depot/projects/smpng/sys/dev/snp/snp.c#23 integrate
.. //depot/projects/smpng/sys/dev/sound/pcm/dsp.c#25 integrate
.. //depot/projects/smpng/sys/dev/sound/pcm/mixer.c#19 integrate
.. //depot/projects/smpng/sys/dev/sym/sym_hipd.c#22 integrate
.. //depot/projects/smpng/sys/dev/twa/twa.c#3 integrate
.. //depot/projects/smpng/sys/dev/usb/if_aue.c#35 integrate
.. //depot/projects/smpng/sys/dev/usb/if_auereg.h#9 integrate
.. //depot/projects/smpng/sys/dev/usb/if_axe.c#19 integrate
.. //depot/projects/smpng/sys/dev/usb/if_axereg.h#6 integrate
.. //depot/projects/smpng/sys/dev/usb/if_cdce.c#2 integrate
.. //depot/projects/smpng/sys/dev/usb/if_cdcereg.h#2 integrate
.. //depot/projects/smpng/sys/dev/usb/if_cue.c#27 integrate
.. //depot/projects/smpng/sys/dev/usb/if_cuereg.h#7 integrate
.. //depot/projects/smpng/sys/dev/usb/if_kue.c#24 integrate
.. //depot/projects/smpng/sys/dev/usb/if_kuereg.h#8 integrate
.. //depot/projects/smpng/sys/dev/usb/if_rue.c#13 integrate
.. //depot/projects/smpng/sys/dev/usb/if_ruereg.h#4 integrate
.. //depot/projects/smpng/sys/dev/usb/if_udav.c#7 integrate
.. //depot/projects/smpng/sys/dev/usb/if_udavreg.h#4 integrate
.. //depot/projects/smpng/sys/dev/usb/uhub.c#24 integrate
.. //depot/projects/smpng/sys/dev/usb/ukbd.c#19 integrate
.. //depot/projects/smpng/sys/dev/usb/umass.c#46 integrate
.. //depot/projects/smpng/sys/dev/usb/usb.c#31 integrate
.. //depot/projects/smpng/sys/dev/usb/usb_ethersubr.c#12 integrate
.. //depot/projects/smpng/sys/dev/usb/usb_ethersubr.h#5 integrate
.. //depot/projects/smpng/sys/dev/usb/usbdi.h#16 integrate
.. //depot/projects/smpng/sys/dev/vkbd/vkbd.c#5 integrate
.. //depot/projects/smpng/sys/dev/wi/if_wi.c#70 integrate
.. //depot/projects/smpng/sys/dev/wi/if_wi_pccard.c#33 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs_devs.c#16 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs_vfsops.c#22 integrate
.. //depot/projects/smpng/sys/fs/devfs/devfs_vnops.c#43 integrate
.. //depot/projects/smpng/sys/fs/hpfs/hpfs_vnops.c#28 integrate
.. //depot/projects/smpng/sys/fs/msdosfs/msdosfs_denode.c#22 integrate
.. //depot/projects/smpng/sys/fs/msdosfs/msdosfs_lookup.c#9 integrate
.. //depot/projects/smpng/sys/fs/ntfs/ntfs_vnops.c#23 integrate
.. //depot/projects/smpng/sys/fs/nwfs/nwfs_vnops.c#14 integrate
.. //depot/projects/smpng/sys/fs/portalfs/portal_vnops.c#22 integrate
.. //depot/projects/smpng/sys/fs/pseudofs/pseudofs_vnops.c#36 integrate
.. //depot/projects/smpng/sys/fs/smbfs/smbfs_vnops.c#33 integrate
.. //depot/projects/smpng/sys/fs/udf/udf_vnops.c#27 integrate
.. //depot/projects/smpng/sys/fs/unionfs/union_vnops.c#26 integrate
.. //depot/projects/smpng/sys/gdb/gdb_main.c#5 integrate
.. //depot/projects/smpng/sys/geom/geom_pc98.c#27 integrate
.. //depot/projects/smpng/sys/geom/geom_subr.c#46 integrate
.. //depot/projects/smpng/sys/geom/geom_sunlabel_enc.c#5 integrate
.. //depot/projects/smpng/sys/geom/mirror/g_mirror.c#19 integrate
.. //depot/projects/smpng/sys/geom/mirror/g_mirror_ctl.c#6 integrate
.. //depot/projects/smpng/sys/geom/raid3/g_raid3.c#16 integrate
.. //depot/projects/smpng/sys/geom/raid3/g_raid3_ctl.c#7 integrate
.. //depot/projects/smpng/sys/gnu/ext2fs/ext2_lookup.c#16 integrate
.. //depot/projects/smpng/sys/i386/conf/GENERIC#62 integrate
.. //depot/projects/smpng/sys/i386/conf/NOTES#98 integrate
.. //depot/projects/smpng/sys/i386/cpufreq/powernow.c#1 branch
.. //depot/projects/smpng/sys/i386/i386/bios.c#22 integrate
.. //depot/projects/smpng/sys/i386/ibcs2/ibcs2_misc.c#20 integrate
.. //depot/projects/smpng/sys/i386/isa/clock.c#40 integrate
.. //depot/projects/smpng/sys/i386/pci/pci_bus.c#26 integrate
.. //depot/projects/smpng/sys/isofs/cd9660/cd9660_lookup.c#12 integrate
.. //depot/projects/smpng/sys/kern/kern_conf.c#37 integrate
.. //depot/projects/smpng/sys/kern/kern_cpu.c#3 integrate
.. //depot/projects/smpng/sys/kern/kern_jail.c#37 integrate
.. //depot/projects/smpng/sys/kern/kern_linker.c#39 integrate
.. //depot/projects/smpng/sys/kern/kern_lock.c#39 integrate
.. //depot/projects/smpng/sys/kern/kern_lockf.c#20 integrate
.. //depot/projects/smpng/sys/kern/kern_ntptime.c#17 integrate
.. //depot/projects/smpng/sys/kern/kern_synch.c#89 integrate
.. //depot/projects/smpng/sys/kern/kern_tc.c#31 integrate
.. //depot/projects/smpng/sys/kern/kern_time.c#34 integrate
.. //depot/projects/smpng/sys/kern/subr_bus.c#49 integrate
.. //depot/projects/smpng/sys/kern/subr_hints.c#8 integrate
.. //depot/projects/smpng/sys/kern/subr_trap.c#77 integrate
.. //depot/projects/smpng/sys/kern/sys_generic.c#41 integrate
.. //depot/projects/smpng/sys/kern/tty.c#58 integrate
.. //depot/projects/smpng/sys/kern/tty_pty.c#39 integrate
.. //depot/projects/smpng/sys/kern/tty_tty.c#15 integrate
.. //depot/projects/smpng/sys/kern/uipc_syscalls.c#67 integrate
.. //depot/projects/smpng/sys/kern/vfs_bio.c#77 integrate
.. //depot/projects/smpng/sys/kern/vfs_cache.c#26 integrate
.. //depot/projects/smpng/sys/kern/vfs_lookup.c#26 integrate
.. //depot/projects/smpng/sys/kern/vfs_mount.c#48 integrate
.. //depot/projects/smpng/sys/kern/vfs_subr.c#99 integrate
.. //depot/projects/smpng/sys/kern/vfs_vnops.c#60 integrate
.. //depot/projects/smpng/sys/modules/Makefile#93 integrate
.. //depot/projects/smpng/sys/modules/arcmsr/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/ata/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/ata/Makefile.inc#1 branch
.. //depot/projects/smpng/sys/modules/ata/ata/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/ata/atacam/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/ata/atacard/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/ata/atacbus/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/ata/atadisk/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/ata/ataisa/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/ata/atapci/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/ata/atapicd/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/ata/atapifd/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/ata/atapist/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/ata/ataraid/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/cpufreq/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/hpfs/Makefile#3 integrate
.. //depot/projects/smpng/sys/net/bpf.c#48 integrate
.. //depot/projects/smpng/sys/net/if_fwsubr.c#6 integrate
.. //depot/projects/smpng/sys/net/if_tap.c#33 integrate
.. //depot/projects/smpng/sys/net/if_tun.c#40 integrate
.. //depot/projects/smpng/sys/net/rtsock.c#44 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_freebsd.c#4 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_freebsd.h#3 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_input.c#16 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_output.c#14 integrate
.. //depot/projects/smpng/sys/netinet/igmp.c#14 integrate
.. //depot/projects/smpng/sys/netinet/ip_carp.c#4 integrate
.. //depot/projects/smpng/sys/netinet/ip_fastfwd.c#16 integrate
.. //depot/projects/smpng/sys/netinet/raw_ip.c#48 integrate
.. //depot/projects/smpng/sys/netinet/tcp_usrreq.c#40 integrate
.. //depot/projects/smpng/sys/netinet/udp_usrreq.c#55 integrate
.. //depot/projects/smpng/sys/netinet6/raw_ip6.c#33 integrate
.. //depot/projects/smpng/sys/netsmb/smb_dev.c#18 integrate
.. //depot/projects/smpng/sys/nfs4client/nfs4_vnops.c#16 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_node.c#20 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_vnops.c#52 integrate
.. //depot/projects/smpng/sys/nfsserver/nfs_srvsubs.c#26 integrate
.. //depot/projects/smpng/sys/nfsserver/nfs_syscalls.c#25 integrate
.. //depot/projects/smpng/sys/pc98/conf/GENERIC#53 integrate
.. //depot/projects/smpng/sys/pc98/pc98/clock.c#29 integrate
.. //depot/projects/smpng/sys/pc98/pc98/pc98_machdep.c#3 integrate
.. //depot/projects/smpng/sys/pci/if_sis.c#49 integrate
.. //depot/projects/smpng/sys/pci/if_sk.c#45 integrate
.. //depot/projects/smpng/sys/pci/if_ti.c#44 integrate
.. //depot/projects/smpng/sys/pci/if_xl.c#55 integrate
.. //depot/projects/smpng/sys/pci/if_xlreg.h#15 integrate
.. //depot/projects/smpng/sys/posix4/p1003_1b.c#10 integrate
.. //depot/projects/smpng/sys/powerpc/powermac/ata_kauai.c#8 integrate
.. //depot/projects/smpng/sys/powerpc/powermac/ata_macio.c#13 integrate
.. //depot/projects/smpng/sys/powerpc/psim/ata_iobus.c#10 integrate
.. //depot/projects/smpng/sys/sys/ata.h#19 integrate
.. //depot/projects/smpng/sys/sys/conf.h#40 integrate
.. //depot/projects/smpng/sys/sys/event.h#16 integrate
.. //depot/projects/smpng/sys/sys/lockmgr.h#14 integrate
.. //depot/projects/smpng/sys/sys/namei.h#15 integrate
.. //depot/projects/smpng/sys/sys/proc.h#141 integrate
.. //depot/projects/smpng/sys/sys/sun_disklabel.h#8 integrate
.. //depot/projects/smpng/sys/sys/syscallsubr.h#20 integrate
.. //depot/projects/smpng/sys/sys/systm.h#64 integrate
.. //depot/projects/smpng/sys/sys/vnode.h#60 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_rawread.c#14 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_snapshot.c#48 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_softdep.c#43 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_vfsops.c#70 integrate
.. //depot/projects/smpng/sys/ufs/ffs/ffs_vnops.c#42 integrate
.. //depot/projects/smpng/sys/ufs/ufs/ufs_extattr.c#35 integrate
.. //depot/projects/smpng/sys/ufs/ufs/ufs_lookup.c#21 integrate
.. //depot/projects/smpng/sys/vm/vm_object.c#69 integrate
.. //depot/projects/smpng/sys/vm/vnode_pager.c#51 integrate

Differences ...

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

@@ -88,7 +88,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.233 2005/03/01 21:55:26 wes Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.234 2005/04/01 10:59:13 des Exp $");
 
 #include "opt_compat.h"
 #include "opt_ddb.h"
@@ -415,6 +415,7 @@
 	char *bootinfo_msg, *bootinfo_booted_kernel;
 	vm_offset_t kernstart, kernend;
 	vm_offset_t kernstartpfn, kernendpfn, pfn0, pfn1;
+	u_long physmem_tunable;
 	struct mddt *mddtp;
 	struct mddt_cluster *memc;
 	int i, mddtweird;
@@ -771,39 +772,8 @@
 	Maxmem = alpha_btop(MAXMEM * 1024);
 #endif
 
-	/*
-	 * hw.physmem is a size in bytes; we also allow k, m, and g suffixes
-	 * for the appropriate modifiers.  This overrides MAXMEM.
-	 */
-	if ((p = getenv("hw.physmem")) != NULL) {
-		u_int64_t AllowMem, sanity;
-		char *ep;
-
-		sanity = AllowMem = strtouq(p, &ep, 0);
-		if ((ep != p) && (*ep != 0)) {
-			switch(*ep) {
-			case 'g':
-			case 'G':
-				AllowMem <<= 10;
-			case 'm':
-			case 'M':
-				AllowMem <<= 10;
-			case 'k':
-			case 'K':
-				AllowMem <<= 10;
-				break;
-			default:
-				AllowMem = sanity = 0;
-			}
-			if (AllowMem < sanity)
-				AllowMem = 0;
-		}
-		if (AllowMem == 0)
-			printf("Ignoring invalid memory size of '%s'\n", p);
-		else
-			Maxmem = alpha_btop(AllowMem);
-		freeenv(p);
-	}
+	if (TUNABLE_ULONG_FETCH("hw.physmem", &physmem_tunable))
+		Maxmem = alpha_btop(physmem_tunable);
 
 	while (physmem > Maxmem) {
 		int i = phys_avail_cnt - 2;

==== //depot/projects/smpng/sys/alpha/osf1/osf1_misc.c#36 (text+ko) ====

@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/osf1/osf1_misc.c,v 1.53 2005/02/18 18:37:26 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/osf1/osf1_misc.c,v 1.54 2005/03/31 22:56:14 jhb Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -993,52 +993,61 @@
 	char	*iov_base;
 	int	iov_len;
 };
-#define	STACKGAPLEN	400
+
+static int
+osf1_copyinuio(struct osf1_iovec *iovp, u_int iovcnt, struct uio **uiop)
+{
+	struct osf1_iovec oiov;
+	struct iovec *iov;
+	struct uio *uio;
+	u_int iovlen;
+	int error, i;
+
+	*uiop = NULL;
+	if (iovcnt > UIO_MAXIOV)
+		return (EINVAL);
+	iovlen = iovcnt * sizeof(struct iovec);
+	uio = malloc(iovlen + sizeof *uio, M_IOV, M_WAITOK);
+	iov = (struct iovec *)(uio + 1);
+	for (i = 0; i < iovcnt; i++) {
+		error = copyin(&iovp[i], &oiov, sizeof(struct osf1_iovec));
+		if (error) {
+			free(uio, M_IOV);
+			return (error);
+		}
+		iov[i].iov_base = oiov.iov_base;
+		iov[i].iov_len = oiov.iov_len;
+	}
+	uio->uio_iov = iov;
+	uio->uio_iovcnt = iovcnt;
+	uio->uio_segflg = UIO_USERSPACE;
+	uio->uio_offset = -1;
+	uio->uio_resid = 0;
+	for (i = 0; i < iovcnt; i++) {
+		if (iov->iov_len > INT_MAX - uio->uio_resid) {
+			free(uio, M_IOV);
+			return (EINVAL);
+		}
+		uio->uio_resid += iov->iov_len;
+		iov++;
+	}
+	*uiop = uio;
+	return (0);
+}
+
 int
 osf1_readv(td, uap)
 	struct thread *td;
 	struct osf1_readv_args *uap;
 {
-	int error, osize, nsize, i;
-	caddr_t sg;
-	struct readv_args /* {
-		syscallarg(int) fd;
-		syscallarg(struct iovec *) iovp;
-		syscallarg(u_int) iovcnt;
-	} */ a;
-	struct osf1_iovec *oio;
-	struct iovec *nio;
+	struct uio *auio;
+	int error;
 
-	sg = stackgap_init();
-
-	if (uap->iovcnt > (STACKGAPLEN / sizeof (struct iovec)))
-		return (EINVAL);
-
-	osize = uap->iovcnt * sizeof (struct osf1_iovec);
-	nsize = uap->iovcnt * sizeof (struct iovec);
-
-	oio = malloc(osize, M_TEMP, M_WAITOK);
-	nio = malloc(nsize, M_TEMP, M_WAITOK);
-
-	error = 0;
-	if ((error = copyin(uap->iovp, oio, osize)))
-		goto punt;
-	for (i = 0; i < uap->iovcnt; i++) {
-		nio[i].iov_base = oio[i].iov_base;
-		nio[i].iov_len = oio[i].iov_len;
-	}
-
-	a.fd = uap->fd;
-	a.iovp = stackgap_alloc(&sg, nsize);
-	a.iovcnt = uap->iovcnt;
-
-	if ((error = copyout(nio, (caddr_t)a.iovp, nsize)))
-		goto punt;
-	error = readv(td, &a);
-
-punt:
-	free(oio, M_TEMP);
-	free(nio, M_TEMP);
+	error = osf1_copyinuio(uap->iovp, uap->iovcnt, &auio);
+	if (error)
+		return (error);
+	error = kern_readv(td, uap->fd, auio);
+	free(auio, M_IOV);
 	return (error);
 }
 
@@ -1048,46 +1057,14 @@
 	struct thread *td;
 	struct osf1_writev_args *uap;
 {
-	int error, i, nsize, osize;
-	caddr_t sg;
-	struct writev_args /* {
-		syscallarg(int) fd;
-		syscallarg(struct iovec *) iovp;
-		syscallarg(u_int) iovcnt;
-	} */ a;
-	struct osf1_iovec *oio;
-	struct iovec *nio;
+	struct uio *auio;
+	int error;
 
-	sg = stackgap_init();
-
-	if (uap->iovcnt > (STACKGAPLEN / sizeof (struct iovec)))
-		return (EINVAL);
-
-	osize = uap->iovcnt * sizeof (struct osf1_iovec);
-	nsize = uap->iovcnt * sizeof (struct iovec);
-
-	oio = malloc(osize, M_TEMP, M_WAITOK);
-	nio = malloc(nsize, M_TEMP, M_WAITOK);
-
-	error = 0;
-	if ((error = copyin(uap->iovp, oio, osize)))
-		goto punt;
-	for (i = 0; i < uap->iovcnt; i++) {
-		nio[i].iov_base = oio[i].iov_base;
-		nio[i].iov_len = oio[i].iov_len;
-	}
-
-	a.fd = uap->fd;
-	a.iovp = stackgap_alloc(&sg, nsize);
-	a.iovcnt = uap->iovcnt;
-
-	if ((error = copyout(nio, (caddr_t)a.iovp, nsize)))
-		goto punt;
-	error = writev(td, &a);
-
-punt:
-	free(oio, M_TEMP);
-	free(nio, M_TEMP);
+	error = osf1_copyinuio(uap->iovp, uap->iovcnt, &auio);
+	if (error)
+		return (error);
+	error = kern_writev(td, uap->fd, auio);
+	free(auio, M_IOV);
 	return (error);
 }
 

==== //depot/projects/smpng/sys/amd64/amd64/db_disasm.c#4 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/db_disasm.c,v 1.28 2005/01/05 20:17:20 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/db_disasm.c,v 1.30 2005/03/30 22:57:41 peter Exp $");
 
 /*
  * Instruction disassembler.
@@ -50,6 +50,15 @@
 #define	NONE	8
 
 /*
+ * REX prefix and bits
+ */
+#define REX_B	1
+#define REX_X	2
+#define REX_R	4
+#define REX_W	8
+#define REX	0x40
+
+/*
  * Addressing modes
  */
 #define	E	1			/* general effective address */
@@ -85,9 +94,10 @@
 #define	STI	32			/* FP stack */
 #define	X	33			/* extended FP op */
 #define	XA	34			/* for 'fstcw %ax' */
-#define	El	35			/* address, long size */
+#define	El	35			/* address, long/quad size */
 #define	Ril	36			/* long register in instruction */
 #define	Iba	37			/* byte immediate, don't print if 0xa */
+#define	EL	38			/* address, explicitly long size */
 
 struct inst {
 	const char *	i_name;		/* name */
@@ -213,6 +223,26 @@
 /*3f*/	{ "",	   FALSE, NONE,  0,	      0 },
 };
 
+static const struct inst db_inst_0f4x[] = {
+/*40*/	{ "cmovo",  TRUE, NONE,  op2(E, R),   0 },
+/*41*/	{ "cmovno", TRUE, NONE,  op2(E, R),   0 },
+/*42*/	{ "cmovb",  TRUE, NONE,  op2(E, R),   0 },
+/*43*/	{ "cmovnb", TRUE, NONE,  op2(E, R),   0 },
+/*44*/	{ "cmovz",  TRUE, NONE,  op2(E, R),   0 },
+/*45*/	{ "cmovnz", TRUE, NONE,  op2(E, R),   0 },
+/*46*/	{ "cmovbe", TRUE, NONE,  op2(E, R),   0 },
+/*47*/	{ "cmovnbe",TRUE, NONE,  op2(E, R),   0 },
+
+/*48*/	{ "cmovs",  TRUE, NONE,  op2(E, R),   0 },
+/*49*/	{ "cmovns", TRUE, NONE,  op2(E, R),   0 },
+/*4a*/	{ "cmovp",  TRUE, NONE,  op2(E, R),   0 },
+/*4b*/	{ "cmovnp", TRUE, NONE,  op2(E, R),   0 },
+/*4c*/	{ "cmovl",  TRUE, NONE,  op2(E, R),   0 },
+/*4d*/	{ "cmovnl", TRUE, NONE,  op2(E, R),   0 },
+/*4e*/	{ "cmovle", TRUE, NONE,  op2(E, R),   0 },
+/*4f*/	{ "cmovnle",TRUE, NONE,  op2(E, R),   0 },
+};
+
 static const struct inst db_inst_0f8x[] = {
 /*80*/	{ "jo",    FALSE, NONE,  op1(Dl),     0 },
 /*81*/	{ "jno",   FALSE, NONE,  op1(Dl),     0 },
@@ -317,6 +347,7 @@
 	0,
 	db_inst_0f2x,
 	db_inst_0f3x,
+	db_inst_0f4x,
 	0,
 	0,
 	0,
@@ -585,23 +616,23 @@
 /*3e*/	{ "",      FALSE, NONE,  0,	     0 },
 /*3f*/	{ "aas",   FALSE, NONE,  0,	     0 },
 
-/*40*/	{ "inc",   FALSE, LONG,  op1(Ri),    0 },
-/*41*/	{ "inc",   FALSE, LONG,  op1(Ri),    0 },
-/*42*/	{ "inc",   FALSE, LONG,  op1(Ri),    0 },
-/*43*/	{ "inc",   FALSE, LONG,  op1(Ri),    0 },
-/*44*/	{ "inc",   FALSE, LONG,  op1(Ri),    0 },
-/*45*/	{ "inc",   FALSE, LONG,  op1(Ri),    0 },
-/*46*/	{ "inc",   FALSE, LONG,  op1(Ri),    0 },
-/*47*/	{ "inc",   FALSE, LONG,  op1(Ri),    0 },
+/*40*/	{ "rex",   FALSE, NONE,  0,          0 },
+/*41*/	{ "rex.b", FALSE, NONE,  0,          0 },
+/*42*/	{ "rex.x", FALSE, NONE,  0,          0 },
+/*43*/	{ "rex.xb", FALSE, NONE, 0,          0 },
+/*44*/	{ "rex.r", FALSE, NONE,  0,          0 },
+/*45*/	{ "rex.rb", FALSE, NONE, 0,          0 },
+/*46*/	{ "rex.rx", FALSE, NONE, 0,          0 },
+/*47*/	{ "rex.rxb", FALSE, NONE, 0,         0 },
 
-/*48*/	{ "dec",   FALSE, LONG,  op1(Ri),    0 },
-/*49*/	{ "dec",   FALSE, LONG,  op1(Ri),    0 },
-/*4a*/	{ "dec",   FALSE, LONG,  op1(Ri),    0 },
-/*4b*/	{ "dec",   FALSE, LONG,  op1(Ri),    0 },
-/*4c*/	{ "dec",   FALSE, LONG,  op1(Ri),    0 },
-/*4d*/	{ "dec",   FALSE, LONG,  op1(Ri),    0 },
-/*4e*/	{ "dec",   FALSE, LONG,  op1(Ri),    0 },
-/*4f*/	{ "dec",   FALSE, LONG,  op1(Ri),    0 },
+/*48*/	{ "rex.w", FALSE, NONE,  0,          0 },
+/*49*/	{ "rex.wb", FALSE, NONE, 0,          0 },
+/*4a*/	{ "rex.wx", FALSE, NONE, 0,          0 },
+/*4b*/	{ "rex.wxb", FALSE, NONE, 0,         0 },
+/*4c*/	{ "rex.wr", FALSE, NONE, 0,          0 },
+/*4d*/	{ "rex.wrb", FALSE, NONE, 0,         0 },
+/*4e*/	{ "rex.wrx", FALSE, NONE, 0,         0 },
+/*4f*/	{ "rex.wrxb", FALSE, NONE, 0,        0 },
 
 /*50*/	{ "push",  FALSE, LONG,  op1(Ri),    0 },
 /*51*/	{ "push",  FALSE, LONG,  op1(Ri),    0 },
@@ -624,7 +655,7 @@
 /*60*/	{ "pusha", FALSE, LONG,  0,	     0 },
 /*61*/	{ "popa",  FALSE, LONG,  0,	     0 },
 /*62*/  { "bound", TRUE,  LONG,  op2(E, R),  0 },
-/*63*/	{ "arpl",  TRUE,  NONE,  op2(Rw,Ew), 0 },
+/*63*/	{ "movslq",  TRUE,  NONE,  op2(EL,R), 0 },
 
 /*64*/	{ "",      FALSE, NONE,  0,	     0 },
 /*65*/	{ "",      FALSE, NONE,  0,	     0 },
@@ -807,13 +838,13 @@
 	{ "???",   FALSE, NONE,  0,	      0 }
 ;
 
-#define	f_mod(byte)	((byte)>>6)
-#define	f_reg(byte)	(((byte)>>3)&0x7)
-#define	f_rm(byte)	((byte)&0x7)
+#define	f_mod(rex, byte)	((byte)>>6)
+#define	f_reg(rex, byte)	((((byte)>>3)&0x7) | (rex & REX_R ? 0x8 : 0x0))
+#define	f_rm(rex, byte)		(((byte)&0x7) | (rex & REX_B ? 0x8 : 0x0))
 
-#define	sib_ss(byte)	((byte)>>6)
-#define	sib_index(byte)	(((byte)>>3)&0x7)
-#define	sib_base(byte)	((byte)&0x7)
+#define	sib_ss(rex, byte)	((byte)>>6)
+#define	sib_index(rex, byte)	((((byte)>>3)&0x7) | (rex & REX_X ? 0x8 : 0x0))
+#define	sib_base(rex, byte)	(((byte)&0x7) | (rex & REX_B ? 0x8 : 0x0))
 
 struct i_addr {
 	int		is_reg;	/* if reg, reg number is in 'disp' */
@@ -834,10 +865,25 @@
 	"%bx"
 };
 
-static const char * const db_reg[3][8] = {
-	{ "%al",  "%cl",  "%dl",  "%bl",  "%ah",  "%ch",  "%dh",  "%bh" },
-	{ "%ax",  "%cx",  "%dx",  "%bx",  "%sp",  "%bp",  "%si",  "%di" },
-	{ "%eax", "%ecx", "%edx", "%ebx", "%esp", "%ebp", "%esi", "%edi" }
+static const char * const db_reg[2][4][16] = {
+
+	{{"%al",  "%cl",  "%dl",  "%bl",  "%ah",  "%ch",  "%dh",  "%bh",
+	  "%r8b", "%r9b", "%r10b", "%r11b", "%r12b", "%r13b", "%r14b", "%r15b" },
+	{ "%ax",  "%cx",  "%dx",  "%bx",  "%sp",  "%bp",  "%si",  "%di",
+	  "%r8w", "%r9w", "%r10w", "%r11w", "%r12w", "%r13w", "%r14w", "%r15w" },
+	{ "%eax", "%ecx", "%edx", "%ebx", "%esp", "%ebp", "%esi", "%edi",
+	  "%r8d", "%r9d", "%r10d", "%r11d", "%r12d", "%r13d", "%r14d", "%r15d" },
+	{ "%rax", "%rcx", "%rdx", "%rbx", "%rsp", "%rbp", "%rsi", "%rdi",
+	  "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15" }},
+
+	{{"%al",  "%cl",  "%dl",  "%bl",  "%spl",  "%bpl",  "%sil",  "%dil",
+	  "%r8b", "%r9b", "%r10b", "%r11b", "%r12b", "%r13b", "%r14b", "%r15b" },
+	{ "%ax",  "%cx",  "%dx",  "%bx",  "%sp",  "%bp",  "%si",  "%di",
+	  "%r8w", "%r9w", "%r10w", "%r11w", "%r12w", "%r13w", "%r14w", "%r15w" },
+	{ "%eax", "%ecx", "%edx", "%ebx", "%esp", "%ebp", "%esi", "%edi",
+	  "%r8d", "%r9d", "%r10d", "%r11d", "%r12d", "%r13d", "%r14d", "%r15d" },
+	{ "%rax", "%rcx", "%rdx", "%rbx", "%rsp", "%rbp", "%rsi", "%rdi",
+	  "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15" }}
 };
 
 static const char * const db_seg_reg[8] = {
@@ -862,28 +908,29 @@
 	(loc) += (size);
 
 static db_addr_t
-		db_disasm_esc(db_addr_t loc, int inst, int short_addr,
+		db_disasm_esc(db_addr_t loc, int inst, int rex, int short_addr,
 		    int size, const char *seg);
-static void	db_print_address(const char *seg, int size,
+static void	db_print_address(const char *seg, int size, int rex,
 		    struct i_addr *addrp);
 static db_addr_t
-		db_read_address(db_addr_t loc, int short_addr, int regmodrm,
+		db_read_address(db_addr_t loc, int short_addr, int rex, int regmodrm,
 		    struct i_addr *addrp);
 
 /*
  * Read address at location and return updated location.
  */
 static db_addr_t
-db_read_address(loc, short_addr, regmodrm, addrp)
+db_read_address(loc, short_addr, rex, regmodrm, addrp)
 	db_addr_t	loc;
 	int		short_addr;
+	int		rex;
 	int		regmodrm;
 	struct i_addr *	addrp;		/* out */
 {
 	int		mod, rm, sib, index, disp;
 
-	mod = f_mod(regmodrm);
-	rm  = f_rm(regmodrm);
+	mod = f_mod(rex, regmodrm);
+	rm  = f_rm(rex, regmodrm);
 
 	if (mod == 3) {
 	    addrp->is_reg = TRUE;
@@ -924,11 +971,11 @@
 	else {
 	    if (mod != 3 && rm == 4) {
 		get_value_inc(sib, loc, 1, FALSE);
-		rm = sib_base(sib);
-		index = sib_index(sib);
+		rm = sib_base(rex, sib);
+		index = sib_index(rex, sib);
 		if (index != 4)
-		    addrp->index = db_reg[LONG][index];
-		addrp->ss = sib_ss(sib);
+		    addrp->index = db_reg[1][QUAD][index];
+		addrp->ss = sib_ss(rex, sib);
 	    }
 
 	    switch (mod) {
@@ -939,20 +986,20 @@
 		    }
 		    else {
 			addrp->disp = 0;
-			addrp->base = db_reg[LONG][rm];
+			addrp->base = db_reg[1][QUAD][rm];
 		    }
 		    break;
 
 		case 1:
 		    get_value_inc(disp, loc, 1, TRUE);
 		    addrp->disp = disp;
-		    addrp->base = db_reg[LONG][rm];
+		    addrp->base = db_reg[1][QUAD][rm];
 		    break;
 
 		case 2:
 		    get_value_inc(disp, loc, 4, FALSE);
 		    addrp->disp = disp;
-		    addrp->base = db_reg[LONG][rm];
+		    addrp->base = db_reg[1][QUAD][rm];
 		    break;
 	    }
 	}
@@ -960,13 +1007,14 @@
 }
 
 static void
-db_print_address(seg, size, addrp)
+db_print_address(seg, size, rex, addrp)
 	const char *	seg;
 	int		size;
+	int		rex;
 	struct i_addr *	addrp;
 {
 	if (addrp->is_reg) {
-	    db_printf("%s", db_reg[size][addrp->disp]);
+	    db_printf("%s", db_reg[rex != 0 ? 1 : 0][(size == LONG && (rex & REX_W)) ? QUAD : size][addrp->disp]);
 	    return;
 	}
 
@@ -990,9 +1038,10 @@
  * and return updated location.
  */
 static db_addr_t
-db_disasm_esc(loc, inst, short_addr, size, seg)
+db_disasm_esc(loc, inst, rex, short_addr, size, seg)
 	db_addr_t	loc;
 	int		inst;
+	int		rex;
 	int		short_addr;
 	int		size;
 	const char *	seg;
@@ -1004,8 +1053,8 @@
 	const char *	name;
 
 	get_value_inc(regmodrm, loc, 1, FALSE);
-	fp = &db_Esc_inst[inst - 0xd8][f_reg(regmodrm)];
-	mod = f_mod(regmodrm);
+	fp = &db_Esc_inst[inst - 0xd8][f_reg(rex, regmodrm)];
+	mod = f_mod(rex, regmodrm);
 	if (mod != 3) {
 	    if (*fp->f_name == '\0') {
 		db_printf("<bad instruction>");
@@ -1014,7 +1063,7 @@
 	    /*
 	     * Normal address modes.
 	     */
-	    loc = db_read_address(loc, short_addr, regmodrm, &address);
+	    loc = db_read_address(loc, short_addr, rex, regmodrm, &address);
 	    db_printf("%s", fp->f_name);
 	    switch(fp->f_size) {
 		case SNGL:
@@ -1039,7 +1088,7 @@
 		    break;
 	    }
 	    db_printf("\t");
-	    db_print_address(seg, BYTE, &address);
+	    db_print_address(seg, BYTE, rex, &address);
 	}
 	else {
 	    /*
@@ -1048,24 +1097,24 @@
 	    switch (fp->f_rrmode) {
 		case op2(ST,STI):
 		    name = (fp->f_rrname) ? fp->f_rrname : fp->f_name;
-		    db_printf("%s\t%%st,%%st(%d)",name,f_rm(regmodrm));
+		    db_printf("%s\t%%st,%%st(%d)",name,f_rm(rex, regmodrm));
 		    break;
 		case op2(STI,ST):
 		    name = (fp->f_rrname) ? fp->f_rrname : fp->f_name;
-		    db_printf("%s\t%%st(%d),%%st",name, f_rm(regmodrm));
+		    db_printf("%s\t%%st(%d),%%st",name, f_rm(rex, regmodrm));
 		    break;
 		case op1(STI):
 		    name = (fp->f_rrname) ? fp->f_rrname : fp->f_name;
-		    db_printf("%s\t%%st(%d)",name, f_rm(regmodrm));
+		    db_printf("%s\t%%st(%d)",name, f_rm(rex, regmodrm));
 		    break;
 		case op1(X):
-		    name = ((const char * const *)fp->f_rrname)[f_rm(regmodrm)];
+		    name = ((const char * const *)fp->f_rrname)[f_rm(rex, regmodrm)];
 		    if (*name == '\0')
 			goto bad;
 		    db_printf("%s", name);
 		    break;
 		case op1(XA):
-		    name = ((const char * const *)fp->f_rrname)[f_rm(regmodrm)];
+		    name = ((const char * const *)fp->f_rrname)[f_rm(rex, regmodrm)];
 		    if (*name == '\0')
 			goto bad;
 		    db_printf("%s\t%%ax", name);
@@ -1098,6 +1147,7 @@
 	const char *	i_name;
 	int	i_size;
 	int	i_mode;
+	int	rex = 0;
 	int	regmodrm = 0;
 	boolean_t	first;
 	int	displ;
@@ -1155,13 +1205,17 @@
 		    prefix = FALSE;
 		    break;
 	    }
+	    if (inst >= 0x40 && inst < 0x50) {
+		rex = inst;
+		prefix = TRUE;
+	    }
 	    if (prefix) {
 		get_value_inc(inst, loc, 1, FALSE);
 	    }
 	} while (prefix);
 
 	if (inst >= 0xd8 && inst <= 0xdf) {
-	    loc = db_disasm_esc(loc, inst, short_addr, size, seg);
+	    loc = db_disasm_esc(loc, inst, rex, short_addr, size, seg);
 	    db_printf("\n");
 	    return (loc);
 	}
@@ -1181,7 +1235,7 @@
 
 	if (ip->i_has_modrm) {
 	    get_value_inc(regmodrm, loc, 1, FALSE);
-	    loc = db_read_address(loc, short_addr, regmodrm, &address);
+	    loc = db_read_address(loc, short_addr, rex, regmodrm, &address);
 	}
 
 	i_name = ip->i_name;
@@ -1191,17 +1245,17 @@
 	if (ip->i_extra == db_Grp1 || ip->i_extra == db_Grp2 ||
 	    ip->i_extra == db_Grp6 || ip->i_extra == db_Grp7 ||
 	    ip->i_extra == db_Grp8 || ip->i_extra == db_Grp9) {
-	    i_name = ((const char * const *)ip->i_extra)[f_reg(regmodrm)];
+	    i_name = ((const char * const *)ip->i_extra)[f_reg(rex, regmodrm)];
 	}
 	else if (ip->i_extra == db_Grp3) {
 	    ip = ip->i_extra;
-	    ip = &ip[f_reg(regmodrm)];
+	    ip = &ip[f_reg(rex, regmodrm)];
 	    i_name = ip->i_name;
 	    i_mode = ip->i_mode;
 	}
 	else if (ip->i_extra == db_Grp4 || ip->i_extra == db_Grp5) {
 	    ip = ip->i_extra;
-	    ip = &ip[f_reg(regmodrm)];
+	    ip = &ip[f_reg(rex, regmodrm)];
 	    i_name = ip->i_name;
 	    i_mode = ip->i_mode;
 	    i_size = ip->i_size;
@@ -1215,6 +1269,10 @@
 	}
 	else {
 	    db_printf("%s", i_name);
+	    if ((inst >= 0x50 && inst <= 0x5f) || inst == 0x68 || inst == 0x6a) {
+		i_size = NONE;
+		db_printf("q");
+	    }
 	    if (i_size != NONE) {
 		if (i_size == BYTE) {
 		    db_printf("b");
@@ -1226,8 +1284,12 @@
 		}
 		else if (size == WORD)
 		    db_printf("w");
-		else
-		    db_printf("l");
+		else {
+		    if (rex & REX_W)
+			db_printf("q");
+		    else
+			db_printf("l");
+		}
 	    }
 	}
 	db_printf("\t");
@@ -1241,52 +1303,56 @@
 	    switch (i_mode & 0xFF) {
 
 		case E:
-		    db_print_address(seg, size, &address);
+		    db_print_address(seg, size, rex, &address);
 		    break;
 
 		case Eind:
 		    db_printf("*");
-		    db_print_address(seg, size, &address);
+		    db_print_address(seg, size, rex, &address);
 		    break;
 
 		case El:
-		    db_print_address(seg, LONG, &address);
+		    db_print_address(seg, (rex & REX_W) ? QUAD : LONG, rex, &address);
+		    break;
+
+		case EL:
+		    db_print_address(seg, LONG, 0, &address);
 		    break;
 
 		case Ew:
-		    db_print_address(seg, WORD, &address);
+		    db_print_address(seg, WORD, rex, &address);
 		    break;
 
 		case Eb:
-		    db_print_address(seg, BYTE, &address);
+		    db_print_address(seg, BYTE, rex, &address);
 		    break;
 
 		case R:
-		    db_printf("%s", db_reg[size][f_reg(regmodrm)]);
+		    db_printf("%s", db_reg[rex != 0 ? 1 : 0][(size == LONG && (rex & REX_W)) ? QUAD : size][f_reg(rex, regmodrm)]);
 		    break;
 
 		case Rw:
-		    db_printf("%s", db_reg[WORD][f_reg(regmodrm)]);
+		    db_printf("%s", db_reg[rex != 0 ? 1 : 0][WORD][f_reg(rex, regmodrm)]);
 		    break;
 
 		case Ri:
-		    db_printf("%s", db_reg[size][f_rm(inst)]);
+		    db_printf("%s", db_reg[0][QUAD][f_rm(rex, inst)]);
 		    break;
 
 		case Ril:
-		    db_printf("%s", db_reg[LONG][f_rm(inst)]);
+		    db_printf("%s", db_reg[rex != 0 ? 1 : 0][(rex & REX_R) ? QUAD : LONG][f_rm(rex, inst)]);
 		    break;
 
 		case S:
-		    db_printf("%s", db_seg_reg[f_reg(regmodrm)]);
+		    db_printf("%s", db_seg_reg[f_reg(rex, regmodrm)]);
 		    break;
 
 		case Si:
-		    db_printf("%s", db_seg_reg[f_reg(inst)]);
+		    db_printf("%s", db_seg_reg[f_reg(rex, inst)]);
 		    break;
 
 		case A:
-		    db_printf("%s", db_reg[size][0]);	/* acc */
+		    db_printf("%s", db_reg[rex != 0 ? 1 : 0][size][0]);	/* acc */
 		    break;
 
 		case BX:
@@ -1306,23 +1372,23 @@
 		case SI:
 		    if (seg)
 			db_printf("%s:", seg);
-		    db_printf("(%s)", short_addr ? "%si" : "%esi");
+		    db_printf("(%s)", short_addr ? "%si" : "%rsi");
 		    break;
 
 		case DI:
-		    db_printf("%%es:(%s)", short_addr ? "%di" : "%edi");
+		    db_printf("%%es:(%s)", short_addr ? "%di" : "%rdi");
 		    break;
 
 		case CR:
-		    db_printf("%%cr%d", f_reg(regmodrm));
+		    db_printf("%%cr%d", f_reg(rex, regmodrm));
 		    break;
 
 		case DR:
-		    db_printf("%%dr%d", f_reg(regmodrm));
+		    db_printf("%%dr%d", f_reg(rex, regmodrm));
 		    break;
 

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


More information about the p4-projects mailing list