svn commit: r248469 - in projects/efika_mx: contrib/binutils/gas/config crypto/openssh gnu/lib/libgcc lib/libc/stdlib lib/libc/sys sbin/ccdconfig sbin/ffsinfo sbin/geom/class/concat sbin/geom/class...

Aleksandr Rybalko ray at FreeBSD.org
Mon Mar 18 15:38:21 UTC 2013


Author: ray
Date: Mon Mar 18 15:38:15 2013
New Revision: 248469
URL: http://svnweb.freebsd.org/changeset/base/248469

Log:
  MFC @r248468

Added:
  projects/efika_mx/sys/cddl/dev/fbt/fbt_powerpc.c
     - copied unchanged from r248468, head/sys/cddl/dev/fbt/fbt_powerpc.c
  projects/efika_mx/sys/libkern/arm/memset.S
     - copied unchanged from r248468, head/sys/libkern/arm/memset.S
  projects/efika_mx/sys/vm/_vm_radix.h
     - copied unchanged from r248468, head/sys/vm/_vm_radix.h
  projects/efika_mx/sys/vm/vm_radix.c
     - copied unchanged from r248468, head/sys/vm/vm_radix.c
  projects/efika_mx/sys/vm/vm_radix.h
     - copied unchanged from r248468, head/sys/vm/vm_radix.h
Modified:
  projects/efika_mx/contrib/binutils/gas/config/tc-arm.c
  projects/efika_mx/crypto/openssh/sshd_config
  projects/efika_mx/gnu/lib/libgcc/Makefile
  projects/efika_mx/lib/libc/stdlib/realpath.3
  projects/efika_mx/lib/libc/sys/chflags.2
  projects/efika_mx/sbin/ccdconfig/ccdconfig.8
  projects/efika_mx/sbin/ffsinfo/ffsinfo.8
  projects/efika_mx/sbin/geom/class/concat/gconcat.8
  projects/efika_mx/sbin/geom/class/mirror/gmirror.8
  projects/efika_mx/sbin/geom/class/raid/graid.8
  projects/efika_mx/sbin/geom/class/stripe/gstripe.8
  projects/efika_mx/sbin/gvinum/gvinum.8
  projects/efika_mx/share/man/man4/ccd.4
  projects/efika_mx/sys/amd64/amd64/pmap.c
  projects/efika_mx/sys/amd64/include/pmap.h
  projects/efika_mx/sys/amd64/vmm/intel/vmx.c
  projects/efika_mx/sys/amd64/vmm/vmm.c
  projects/efika_mx/sys/amd64/vmm/vmm_stat.c
  projects/efika_mx/sys/amd64/vmm/vmm_stat.h
  projects/efika_mx/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c
  projects/efika_mx/sys/arm/include/bus.h
  projects/efika_mx/sys/arm/ti/cpsw/if_cpsw.c
  projects/efika_mx/sys/arm/ti/ti_mmchs.c
  projects/efika_mx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
  projects/efika_mx/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h
  projects/efika_mx/sys/cddl/dev/dtrace/powerpc/dtrace_asm.S
  projects/efika_mx/sys/cddl/dev/dtrace/powerpc/dtrace_isa.c
  projects/efika_mx/sys/cddl/dev/dtrace/powerpc/dtrace_subr.c
  projects/efika_mx/sys/conf/Makefile.arm
  projects/efika_mx/sys/conf/files
  projects/efika_mx/sys/conf/files.arm
  projects/efika_mx/sys/dev/acpica/acpi_powerres.c
  projects/efika_mx/sys/dev/ath/if_ath_rx_edma.c
  projects/efika_mx/sys/dev/ath/if_ath_sysctl.c
  projects/efika_mx/sys/dev/sis/if_sis.c
  projects/efika_mx/sys/dev/sis/if_sisreg.h
  projects/efika_mx/sys/dev/sound/pcm/sndstat.c
  projects/efika_mx/sys/dev/usb/usbdevs
  projects/efika_mx/sys/dev/usb/wlan/if_run.c
  projects/efika_mx/sys/fs/tmpfs/tmpfs_vnops.c
  projects/efika_mx/sys/i386/i386/pmap.c
  projects/efika_mx/sys/i386/include/pmap.h
  projects/efika_mx/sys/i386/xen/pmap.c
  projects/efika_mx/sys/kern/uipc_mbuf.c
  projects/efika_mx/sys/kern/vfs_syscalls.c
  projects/efika_mx/sys/modules/dtrace/Makefile
  projects/efika_mx/sys/modules/dtrace/dtraceall/dtraceall.c
  projects/efika_mx/sys/modules/dtrace/fbt/Makefile
  projects/efika_mx/sys/modules/uart/Makefile
  projects/efika_mx/sys/netinet/libalias/alias.c
  projects/efika_mx/sys/powerpc/aim/trap.c
  projects/efika_mx/sys/powerpc/aim/trap_subr32.S
  projects/efika_mx/sys/powerpc/aim/trap_subr64.S
  projects/efika_mx/sys/sys/mbuf.h
  projects/efika_mx/sys/ufs/ufs/ufs_vnops.c
  projects/efika_mx/sys/vm/vm_object.c
  projects/efika_mx/sys/vm/vm_object.h
  projects/efika_mx/sys/vm/vm_page.c
  projects/efika_mx/sys/vm/vm_page.h
  projects/efika_mx/sys/vm/vm_reserv.c
  projects/efika_mx/tools/regression/security/cap_test/cap_test_capabilities.c
  projects/efika_mx/usr.bin/find/find.h
  projects/efika_mx/usr.bin/find/function.c
  projects/efika_mx/usr.bin/head/head.1
  projects/efika_mx/usr.bin/renice/renice.8
  projects/efika_mx/usr.bin/script/script.1
  projects/efika_mx/usr.bin/tail/tail.1
  projects/efika_mx/usr.sbin/ac/ac.8
Directory Properties:
  projects/efika_mx/   (props changed)
  projects/efika_mx/contrib/binutils/   (props changed)
  projects/efika_mx/crypto/openssh/   (props changed)
  projects/efika_mx/gnu/lib/   (props changed)
  projects/efika_mx/lib/libc/   (props changed)
  projects/efika_mx/sbin/   (props changed)
  projects/efika_mx/share/man/man4/   (props changed)
  projects/efika_mx/sys/   (props changed)
  projects/efika_mx/sys/amd64/vmm/   (props changed)
  projects/efika_mx/sys/cddl/contrib/opensolaris/   (props changed)
  projects/efika_mx/sys/conf/   (props changed)

Modified: projects/efika_mx/contrib/binutils/gas/config/tc-arm.c
==============================================================================
--- projects/efika_mx/contrib/binutils/gas/config/tc-arm.c	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/contrib/binutils/gas/config/tc-arm.c	Mon Mar 18 15:38:15 2013	(r248469)
@@ -651,6 +651,7 @@ struct asm_opcode
 
 #define BAD_ARGS	_("bad arguments to instruction")
 #define BAD_PC		_("r15 not allowed here")
+#define BAD_SP		_("r13 not allowed here")
 #define BAD_COND	_("instruction cannot be conditional")
 #define BAD_OVERLAP	_("registers may not be the same")
 #define BAD_HIREG	_("lo register required")
@@ -659,6 +660,7 @@ struct asm_opcode
 #define BAD_BRANCH	_("branch must be last instruction in IT block")
 #define BAD_NOT_IT	_("instruction not allowed in IT block")
 #define BAD_FPU		_("selected FPU does not support instruction")
+#define BAD_VMRS	_("APSR_nzcv may only be used with fpscr")
 
 static struct hash_control *arm_ops_hsh;
 static struct hash_control *arm_cond_hsh;
@@ -5164,10 +5166,6 @@ parse_neon_mov (char **str, int *which_o
              Case 10: VMOV.F32 <Sd>, #<imm>
              Case 11: VMOV.F64 <Dd>, #<imm>  */
         inst.operands[i].immisfloat = 1;
-      else if (parse_big_immediate (&ptr, i) == SUCCESS)
-          /* Case 2: VMOV<c><q>.<dt> <Qd>, #<imm>
-             Case 3: VMOV<c><q>.<dt> <Dd>, #<imm>  */
-        ;
       else if ((val = arm_typed_reg_parse (&ptr, REG_TYPE_NSDQ, &rtype,
                                            &optype)) != FAIL)
         {
@@ -5207,6 +5205,10 @@ parse_neon_mov (char **str, int *which_o
               inst.operands[i++].present = 1;
             }
         }
+      else if (parse_big_immediate (&ptr, i) == SUCCESS)
+          /* Case 2: VMOV<c><q>.<dt> <Qd>, #<imm>
+             Case 3: VMOV<c><q>.<dt> <Dd>, #<imm>  */
+        ;
       else
         {
           first_error (_("expected <Rm> or <Dm> or <Qm> operand"));
@@ -7096,6 +7098,64 @@ do_vfp_nsyn_msr (void)
 }
 
 static void
+do_vfp_vmrs (void)
+{
+  int rt;
+
+  /* The destination register can be r0-r14 or APSR_nzcv */
+  if (inst.operands[0].reg > 14)
+    {
+      inst.error = BAD_PC;
+      return;
+    }
+
+  /* If the destination is r13 and not in ARM mode then unprefictable */
+  if (thumb_mode && inst.operands[0].reg == REG_SP)
+    {
+      inst.error = BAD_SP;
+      return;
+    }
+
+  /* If the destination is APSR_nzcv */
+  if (inst.operands[0].isvec && inst.operands[1].reg != 1)
+    {
+      inst.error = BAD_VMRS;
+      return;
+    }
+
+  if (inst.operands[0].isvec)
+    rt = 15;
+  else
+    rt = inst.operands[0].reg;
+
+  /* Or in the registers to use */
+  inst.instruction |= rt << 12;
+  inst.instruction |= inst.operands[1].reg << 16;
+}
+
+static void
+do_vfp_vmsr (void)
+{
+  /* The destination register can be r0-r14 or APSR_nzcv */
+  if (inst.operands[1].reg > 14)
+    {
+      inst.error = BAD_PC;
+      return;
+    }
+
+  /* If the destination is r13 and not in ARM mode then unprefictable */
+  if (thumb_mode && inst.operands[0].reg == REG_SP)
+    {
+      inst.error = BAD_SP;
+      return;
+    }
+
+  /* Or in the registers to use */
+  inst.instruction |= inst.operands[1].reg << 12;
+  inst.instruction |= inst.operands[0].reg << 16;
+}
+
+static void
 do_mrs (void)
 {
   if (do_vfp_nsyn_mrs () == SUCCESS)
@@ -15726,6 +15786,8 @@ static const struct asm_opcode insns[] =
  cCE(ftouizs,	ebc0ac0, 2, (RVS, RVS),	      vfp_sp_monadic),
  cCE(fmrx,	ef00a10, 2, (RR, RVC),	      rd_rn),
  cCE(fmxr,	ee00a10, 2, (RVC, RR),	      rn_rd),
+ cCE(vmrs,	ef00a10, 2, (APSR_RR, RVC),   vfp_vmrs),
+ cCE(vmsr,	ee00a10, 2, (RVC, RR),        vfp_vmsr),
 
   /* Memory operations.	 */
  cCE(flds,	d100a00, 2, (RVS, ADDRGLDC),  vfp_sp_ldst),

Modified: projects/efika_mx/crypto/openssh/sshd_config
==============================================================================
--- projects/efika_mx/crypto/openssh/sshd_config	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/crypto/openssh/sshd_config	Mon Mar 18 15:38:15 2013	(r248469)
@@ -50,8 +50,7 @@
 #PubkeyAuthentication yes
 
 # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
-# but this is overridden so installations will only check .ssh/authorized_keys
-AuthorizedKeysFile	.ssh/authorized_keys
+#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
 
 #AuthorizedPrincipalsFile none
 

Modified: projects/efika_mx/gnu/lib/libgcc/Makefile
==============================================================================
--- projects/efika_mx/gnu/lib/libgcc/Makefile	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/gnu/lib/libgcc/Makefile	Mon Mar 18 15:38:15 2013	(r248469)
@@ -123,10 +123,10 @@ CFLAGS+=	-fheinous-gnu-extensions
 LIB1ASMSRC =	lib1funcs.asm
 LIB1ASMFUNCS =  _dvmd_tls _bb_init_func
 .if ${MK_ARM_EABI} != "no"
-LIB1ASMFUNCS+=	_addsubdf3 _addsubsf3 _cmpdf2 _cmpsf2 _fixdfsi _fixsfsi \
-		_fixunsdfsi _fixunsdfsi _muldivdf3 _muldivsf3 _udivsi3
-
 LIB2ADDEH =	unwind-arm.c libunwind.S pr-support.c unwind-c.c
+# Some compilers generate __aeabi_ functions libgcc_s is missing
+DPADD+=		${LIBGCC}
+LDADD+=		-lgcc
 .else
 LIB2FUNCS_EXTRA = floatunsidf.c floatunsisf.c
 .endif

Modified: projects/efika_mx/lib/libc/stdlib/realpath.3
==============================================================================
--- projects/efika_mx/lib/libc/stdlib/realpath.3	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/lib/libc/stdlib/realpath.3	Mon Mar 18 15:38:15 2013	(r248469)
@@ -42,7 +42,7 @@
 .Sh SYNOPSIS
 .In stdlib.h
 .Ft "char *"
-.Fn realpath "const char *pathname" "char *resolved_path"
+.Fn realpath "const char * restrict pathname" "char * restrict resolved_path"
 .Sh DESCRIPTION
 The
 .Fn realpath

Modified: projects/efika_mx/lib/libc/sys/chflags.2
==============================================================================
--- projects/efika_mx/lib/libc/sys/chflags.2	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/lib/libc/sys/chflags.2	Mon Mar 18 15:38:15 2013	(r248469)
@@ -232,3 +232,7 @@ and
 .Fn fchflags
 system calls first appeared in
 .Bx 4.4 .
+The
+.Fn lchflags
+system call first appeared in
+.Fx 5.0 .

Modified: projects/efika_mx/sbin/ccdconfig/ccdconfig.8
==============================================================================
--- projects/efika_mx/sbin/ccdconfig/ccdconfig.8	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sbin/ccdconfig/ccdconfig.8	Mon Mar 18 15:38:15 2013	(r248469)
@@ -234,14 +234,14 @@ RAID controllers (see GENERIC),
 or software RAID systems such as
 .Xr geom 8
 and
-.Xr vinum 8 .
+.Xr gvinum 8 .
 .Sh SEE ALSO
 .Xr dd 1 ,
 .Xr ccd 4 ,
 .Xr disklabel 8 ,
 .Xr fdisk 8 ,
-.Xr rc 8 ,
-.Xr vinum 8
+.Xr gvinum 8 ,
+.Xr rc 8
 .Sh HISTORY
 The
 .Nm

Modified: projects/efika_mx/sbin/ffsinfo/ffsinfo.8
==============================================================================
--- projects/efika_mx/sbin/ffsinfo/ffsinfo.8	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sbin/ffsinfo/ffsinfo.8	Mon Mar 18 15:38:15 2013	(r248469)
@@ -125,9 +125,9 @@ with all available information.
 .Xr dumpfs 8 ,
 .Xr fsck 8 ,
 .Xr growfs 8 ,
+.Xr gvinum 8 ,
 .Xr newfs 8 ,
-.Xr tunefs 8 ,
-.Xr vinum 8
+.Xr tunefs 8
 .Sh HISTORY
 The
 .Nm

Modified: projects/efika_mx/sbin/geom/class/concat/gconcat.8
==============================================================================
--- projects/efika_mx/sbin/geom/class/concat/gconcat.8	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sbin/geom/class/concat/gconcat.8	Mon Mar 18 15:38:15 2013	(r248469)
@@ -183,11 +183,11 @@ growfs /dev/concat/data
 .Xr loader.conf 5 ,
 .Xr geom 8 ,
 .Xr growfs 8 ,
+.Xr gvinum 8 ,
 .Xr mount 8 ,
 .Xr newfs 8 ,
 .Xr sysctl 8 ,
-.Xr umount 8 ,
-.Xr vinum 8
+.Xr umount 8
 .Sh HISTORY
 The
 .Nm

Modified: projects/efika_mx/sbin/geom/class/mirror/gmirror.8
==============================================================================
--- projects/efika_mx/sbin/geom/class/mirror/gmirror.8	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sbin/geom/class/mirror/gmirror.8	Mon Mar 18 15:38:15 2013	(r248469)
@@ -340,11 +340,11 @@ there.
 .Xr geom 4 ,
 .Xr dumpon 8 ,
 .Xr geom 8 ,
+.Xr gvinum 8 ,
 .Xr mount 8 ,
 .Xr newfs 8 ,
 .Xr savecore 8 ,
-.Xr umount 8 ,
-.Xr vinum 8
+.Xr umount 8
 .Sh HISTORY
 The
 .Nm

Modified: projects/efika_mx/sbin/geom/class/raid/graid.8
==============================================================================
--- projects/efika_mx/sbin/geom/class/raid/graid.8	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sbin/geom/class/raid/graid.8	Mon Mar 18 15:38:15 2013	(r248469)
@@ -314,7 +314,7 @@ Exit status is 0 on success, and non-zer
 .Sh SEE ALSO
 .Xr geom 4 ,
 .Xr geom 8 ,
-.Xr vinum 8
+.Xr gvinum 8
 .Sh HISTORY
 The
 .Nm

Modified: projects/efika_mx/sbin/geom/class/stripe/gstripe.8
==============================================================================
--- projects/efika_mx/sbin/geom/class/stripe/gstripe.8	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sbin/geom/class/stripe/gstripe.8	Mon Mar 18 15:38:15 2013	(r248469)
@@ -232,11 +232,11 @@ for
 .Xr atacontrol 8 ,
 .Xr ccdconfig 8 ,
 .Xr geom 8 ,
+.Xr gvinum 8 ,
 .Xr mount 8 ,
 .Xr newfs 8 ,
 .Xr sysctl 8 ,
-.Xr umount 8 ,
-.Xr vinum 8
+.Xr umount 8
 .Sh HISTORY
 The
 .Nm

Modified: projects/efika_mx/sbin/gvinum/gvinum.8
==============================================================================
--- projects/efika_mx/sbin/gvinum/gvinum.8	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sbin/gvinum/gvinum.8	Mon Mar 18 15:38:15 2013	(r248469)
@@ -422,9 +422,9 @@ This may leave data unprotected and is p
 Currently,
 .Nm
 does not yet fully implement all of the functions found in
-.Xr vinum 4 .
+.Nm vinum .
 Specifically, the following commands from
-.Xr vinum 4
+.Nm vinum
 are not supported:
 .Bl -tag -width indent
 .It Ic debug

Modified: projects/efika_mx/share/man/man4/ccd.4
==============================================================================
--- projects/efika_mx/share/man/man4/ccd.4	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/share/man/man4/ccd.4	Mon Mar 18 15:38:15 2013	(r248469)
@@ -279,9 +279,9 @@ device special files
 .Xr config 8 ,
 .Xr disklabel 8 ,
 .Xr fsck 8 ,
+.Xr gvinum 8 ,
 .Xr mount 8 ,
-.Xr newfs 8 ,
-.Xr vinum 8
+.Xr newfs 8
 .Sh HISTORY
 The concatenated disk driver was originally written at the University of
 Utah.

Modified: projects/efika_mx/sys/amd64/amd64/pmap.c
==============================================================================
--- projects/efika_mx/sys/amd64/amd64/pmap.c	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sys/amd64/amd64/pmap.c	Mon Mar 18 15:38:15 2013	(r248469)
@@ -131,6 +131,7 @@ __FBSDID("$FreeBSD$");
 #include <vm/vm_extern.h>
 #include <vm/vm_pageout.h>
 #include <vm/vm_pager.h>
+#include <vm/vm_radix.h>
 #include <vm/vm_reserv.h>
 #include <vm/uma.h>
 
@@ -1497,7 +1498,8 @@ pmap_free_zero_pages(vm_page_t free)
 
 	while (free != NULL) {
 		m = free;
-		free = m->right;
+		free = (void *)m->object;
+		m->object = NULL;
 		/* Preserve the page's PG_ZERO setting. */
 		vm_page_free_toq(m);
 	}
@@ -1516,7 +1518,7 @@ pmap_add_delayed_free_list(vm_page_t m, 
 		m->flags |= PG_ZERO;
 	else
 		m->flags &= ~PG_ZERO;
-	m->right = *free;
+	m->object = (void *)*free;
 	*free = m;
 }
 	
@@ -1526,31 +1528,12 @@ pmap_add_delayed_free_list(vm_page_t m, 
  * for mapping a distinct range of virtual addresses.  The pmap's collection is
  * ordered by this virtual address range.
  */
-static void
+static __inline void
 pmap_insert_pt_page(pmap_t pmap, vm_page_t mpte)
 {
-	vm_page_t root;
 
 	PMAP_LOCK_ASSERT(pmap, MA_OWNED);
-	root = pmap->pm_root;
-	if (root == NULL) {
-		mpte->left = NULL;
-		mpte->right = NULL;
-	} else {
-		root = vm_page_splay(mpte->pindex, root);
-		if (mpte->pindex < root->pindex) {
-			mpte->left = root->left;
-			mpte->right = root;
-			root->left = NULL;
-		} else if (mpte->pindex == root->pindex)
-			panic("pmap_insert_pt_page: pindex already inserted");
-		else {
-			mpte->right = root->right;
-			mpte->left = root;
-			root->right = NULL;
-		}
-	}
-	pmap->pm_root = mpte;
+	vm_radix_insert(&pmap->pm_root, mpte);
 }
 
 /*
@@ -1558,19 +1541,12 @@ pmap_insert_pt_page(pmap_t pmap, vm_page
  * specified pmap's collection of idle page table pages.  Returns NULL if there
  * is no page table page corresponding to the specified virtual address.
  */
-static vm_page_t
+static __inline vm_page_t
 pmap_lookup_pt_page(pmap_t pmap, vm_offset_t va)
 {
-	vm_page_t mpte;
-	vm_pindex_t pindex = pmap_pde_pindex(va);
 
 	PMAP_LOCK_ASSERT(pmap, MA_OWNED);
-	if ((mpte = pmap->pm_root) != NULL && mpte->pindex != pindex) {
-		mpte = vm_page_splay(pindex, mpte);
-		if ((pmap->pm_root = mpte)->pindex != pindex)
-			mpte = NULL;
-	}
-	return (mpte);
+	return (vm_radix_lookup(&pmap->pm_root, pmap_pde_pindex(va)));
 }
 
 /*
@@ -1578,25 +1554,12 @@ pmap_lookup_pt_page(pmap_t pmap, vm_offs
  * of idle page table pages.  The specified page table page must be a member of
  * the pmap's collection.
  */
-static void
+static __inline void
 pmap_remove_pt_page(pmap_t pmap, vm_page_t mpte)
 {
-	vm_page_t root;
 
 	PMAP_LOCK_ASSERT(pmap, MA_OWNED);
-	if (mpte != pmap->pm_root) {
-		root = vm_page_splay(mpte->pindex, pmap->pm_root);
-		KASSERT(mpte == root,
-		    ("pmap_remove_pt_page: mpte %p is missing from pmap %p",
-		    mpte, pmap));
-	}
-	if (mpte->left == NULL)
-		root = mpte->right;
-	else {
-		root = vm_page_splay(mpte->pindex, mpte->left);
-		root->right = mpte->right;
-	}
-	pmap->pm_root = root;
+	vm_radix_remove(&pmap->pm_root, mpte->pindex);
 }
 
 /*
@@ -1693,7 +1656,7 @@ pmap_pinit0(pmap_t pmap)
 
 	PMAP_LOCK_INIT(pmap);
 	pmap->pm_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(KPML4phys);
-	pmap->pm_root = NULL;
+	pmap->pm_root.rt_root = 0;
 	CPU_ZERO(&pmap->pm_active);
 	PCPU_SET(curpmap, pmap);
 	TAILQ_INIT(&pmap->pm_pvchunk);
@@ -1734,7 +1697,7 @@ pmap_pinit(pmap_t pmap)
 	/* install self-referential address mapping entry(s) */
 	pmap->pm_pml4[PML4PML4I] = VM_PAGE_TO_PHYS(pml4pg) | PG_V | PG_RW | PG_A | PG_M;
 
-	pmap->pm_root = NULL;
+	pmap->pm_root.rt_root = 0;
 	CPU_ZERO(&pmap->pm_active);
 	TAILQ_INIT(&pmap->pm_pvchunk);
 	bzero(&pmap->pm_stats, sizeof pmap->pm_stats);
@@ -1976,7 +1939,7 @@ pmap_release(pmap_t pmap)
 	KASSERT(pmap->pm_stats.resident_count == 0,
 	    ("pmap_release: pmap resident count %ld != 0",
 	    pmap->pm_stats.resident_count));
-	KASSERT(pmap->pm_root == NULL,
+	KASSERT(vm_radix_is_empty(&pmap->pm_root),
 	    ("pmap_release: pmap has reserved page table page(s)"));
 
 	m = PHYS_TO_VM_PAGE(pmap->pm_pml4[PML4PML4I] & PG_FRAME);
@@ -2273,7 +2236,7 @@ reclaim_pv_chunk(pmap_t locked_pmap, str
 	}
 	if (m_pc == NULL && free != NULL) {
 		m_pc = free;
-		free = m_pc->right;
+		free = (void *)m_pc->object;
 		/* Recycle a freed page table page. */
 		m_pc->wire_count = 1;
 		atomic_add_int(&cnt.v_wire_count, 1);

Modified: projects/efika_mx/sys/amd64/include/pmap.h
==============================================================================
--- projects/efika_mx/sys/amd64/include/pmap.h	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sys/amd64/include/pmap.h	Mon Mar 18 15:38:15 2013	(r248469)
@@ -150,6 +150,8 @@
 #include <sys/_lock.h>
 #include <sys/_mutex.h>
 
+#include <vm/_vm_radix.h>
+
 typedef u_int64_t pd_entry_t;
 typedef u_int64_t pt_entry_t;
 typedef u_int64_t pdp_entry_t;
@@ -250,7 +252,7 @@ struct pmap {
 	cpuset_t		pm_active;	/* active on cpus */
 	/* spare u_int here due to padding */
 	struct pmap_statistics	pm_stats;	/* pmap statistics */
-	vm_page_t		pm_root;	/* spare page table pages */
+	struct vm_radix		pm_root;	/* spare page table pages */
 };
 
 typedef struct pmap	*pmap_t;

Modified: projects/efika_mx/sys/amd64/vmm/intel/vmx.c
==============================================================================
--- projects/efika_mx/sys/amd64/vmm/intel/vmx.c	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sys/amd64/vmm/intel/vmx.c	Mon Mar 18 15:38:15 2013	(r248469)
@@ -153,10 +153,7 @@ static int cap_unrestricted_guest;
 static int cap_monitor_trap;
  
 /* statistics */
-static VMM_STAT_DEFINE(VCPU_MIGRATIONS, "vcpu migration across host cpus");
-static VMM_STAT_DEFINE(VMEXIT_EXTINT, "vm exits due to external interrupt");
-static VMM_STAT_DEFINE(VMEXIT_HLT_IGNORED, "number of times hlt was ignored");
-static VMM_STAT_DEFINE(VMEXIT_HLT, "number of times hlt was intercepted");
+static VMM_STAT_INTEL(VMEXIT_HLT_IGNORED, "number of times hlt was ignored");
 
 #ifdef KTR
 static const char *
@@ -1216,6 +1213,8 @@ vmx_exit_process(struct vmx *vmx, int vc
 	qual = vmexit->u.vmx.exit_qualification;
 	vmexit->exitcode = VM_EXITCODE_BOGUS;
 
+	vmm_stat_incr(vmx->vm, vcpu, VMEXIT_COUNT, 1);
+
 	switch (vmexit->u.vmx.exit_reason) {
 	case EXIT_REASON_CR_ACCESS:
 		handled = vmx_emulate_cr_access(vmx, vcpu, qual);

Modified: projects/efika_mx/sys/amd64/vmm/vmm.c
==============================================================================
--- projects/efika_mx/sys/amd64/vmm/vmm.c	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sys/amd64/vmm/vmm.c	Mon Mar 18 15:38:15 2013	(r248469)
@@ -139,7 +139,7 @@ static MALLOC_DEFINE(M_VM, "vm", "vm");
 CTASSERT(VMM_MSR_NUM <= 64);	/* msr_mask can keep track of up to 64 msrs */
 
 /* statistics */
-static VMM_STAT_DEFINE(VCPU_TOTAL_RUNTIME, "vcpu total runtime");
+static VMM_STAT(VCPU_TOTAL_RUNTIME, "vcpu total runtime");
 
 static void
 vcpu_cleanup(struct vcpu *vcpu)
@@ -612,7 +612,7 @@ save_guest_fpustate(struct vcpu *vcpu)
 	fpu_start_emulating();
 }
 
-static VMM_STAT_DEFINE(VCPU_IDLE_TICKS, "number of ticks vcpu was idle");
+static VMM_STAT(VCPU_IDLE_TICKS, "number of ticks vcpu was idle");
 
 int
 vm_run(struct vm *vm, struct vm_run *vmrun)
@@ -717,7 +717,7 @@ vm_inject_event(struct vm *vm, int vcpui
 	return (VMINJECT(vm->cookie, vcpuid, type, vector, code, code_valid));
 }
 
-static VMM_STAT_DEFINE(VCPU_NMI_COUNT, "number of NMIs delivered to vcpu");
+static VMM_STAT(VCPU_NMI_COUNT, "number of NMIs delivered to vcpu");
 
 int
 vm_inject_nmi(struct vm *vm, int vcpuid)
@@ -937,7 +937,7 @@ vm_set_x2apic_state(struct vm *vm, int v
 	if (vcpuid < 0 || vcpuid >= VM_MAXCPU)
 		return (EINVAL);
 
-	if (state < 0 || state >= X2APIC_STATE_LAST)
+	if (state >= X2APIC_STATE_LAST)
 		return (EINVAL);
 
 	vm->vcpu[vcpuid].x2apic_state = state;

Modified: projects/efika_mx/sys/amd64/vmm/vmm_stat.c
==============================================================================
--- projects/efika_mx/sys/amd64/vmm/vmm_stat.c	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sys/amd64/vmm/vmm_stat.c	Mon Mar 18 15:38:15 2013	(r248469)
@@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/smp.h>
 
 #include <machine/vmm.h>
+#include "vmm_util.h"
 #include "vmm_stat.h"
 
 static int vstnum;
@@ -52,6 +53,12 @@ vmm_stat_init(void *arg)
 	if (vst->desc == NULL)
 		return;
 
+	if (vst->scope == VMM_STAT_SCOPE_INTEL && !vmm_is_intel())
+		return;
+
+	if (vst->scope == VMM_STAT_SCOPE_AMD && !vmm_is_amd())
+		return;
+
 	if (vstnum >= MAX_VMM_STAT_TYPES) {
 		printf("Cannot accomodate vmm stat type \"%s\"!\n", vst->desc);
 		return;
@@ -102,3 +109,9 @@ vmm_stat_desc(int index)
 	else
 		return (NULL);
 }
+
+/* global statistics */
+VMM_STAT(VCPU_MIGRATIONS, "vcpu migration across host cpus");
+VMM_STAT(VMEXIT_COUNT, "total number of vm exits");
+VMM_STAT(VMEXIT_EXTINT, "vm exits due to external interrupt");
+VMM_STAT(VMEXIT_HLT, "number of times hlt was intercepted");

Modified: projects/efika_mx/sys/amd64/vmm/vmm_stat.h
==============================================================================
--- projects/efika_mx/sys/amd64/vmm/vmm_stat.h	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sys/amd64/vmm/vmm_stat.h	Mon Mar 18 15:38:15 2013	(r248469)
@@ -36,19 +36,36 @@ struct vm;
 
 #define	MAX_VMM_STAT_TYPES	64		/* arbitrary */
 
+enum vmm_stat_scope {
+	VMM_STAT_SCOPE_ANY,
+	VMM_STAT_SCOPE_INTEL,		/* Intel VMX specific statistic */
+	VMM_STAT_SCOPE_AMD,		/* AMD SVM specific statistic */
+};
+
 struct vmm_stat_type {
-	const char	*desc;		/* description of statistic */
 	int	index;			/* position in the stats buffer */
+	const char *desc;		/* description of statistic */
+	enum vmm_stat_scope scope;
 };
 
 void	vmm_stat_init(void *arg);
 
-#define	VMM_STAT_DEFINE(type, desc)					\
+#define	VMM_STAT_DEFINE(type, desc, scope)				\
 	struct vmm_stat_type type[1] = {				\
-		{ desc, -1 }						\
+		{ -1, desc, scope }					\
 	};								\
 	SYSINIT(type##_stat, SI_SUB_KLD, SI_ORDER_ANY, vmm_stat_init, type)
 
+#define	VMM_STAT_DECLARE(type)						\
+	extern struct vmm_stat_type type[1]
+
+#define	VMM_STAT(type, desc)		\
+	VMM_STAT_DEFINE(type, desc, VMM_STAT_SCOPE_ANY)
+#define	VMM_STAT_INTEL(type, desc)	\
+	VMM_STAT_DEFINE(type, desc, VMM_STAT_SCOPE_INTEL)
+#define	VMM_STAT_AMD(type, desc)	\
+	VMM_STAT_DEFINE(type, desc, VMM_STAT_SCOPE_AMD)
+
 void	*vmm_stat_alloc(void);
 void 	vmm_stat_free(void *vp);
 
@@ -68,4 +85,8 @@ vmm_stat_incr(struct vm *vm, int vcpu, s
 #endif
 }
 
+VMM_STAT_DECLARE(VCPU_MIGRATIONS);
+VMM_STAT_DECLARE(VMEXIT_COUNT);
+VMM_STAT_DECLARE(VMEXIT_EXTINT);
+VMM_STAT_DECLARE(VMEXIT_HLT);
 #endif

Modified: projects/efika_mx/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c
==============================================================================
--- projects/efika_mx/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c	Mon Mar 18 15:38:15 2013	(r248469)
@@ -122,9 +122,7 @@ struct bcm_sdhci_softc {
 	int			sc_dma_ch;
 	bus_dma_tag_t		sc_dma_tag;
 	bus_dmamap_t		sc_dma_map;
-	void			*sc_dma_buffer;
-	vm_paddr_t		sc_dma_buffer_phys;
-	vm_paddr_t		sc_sdhci_buffer_phys;;
+	vm_paddr_t		sc_sdhci_buffer_phys;
 };
 
 static int bcm_sdhci_probe(device_t);
@@ -171,9 +169,6 @@ bcm_sdhci_attach(device_t dev)
 	phandle_t node;
 	pcell_t cell;
 	int default_freq;
-	void *buffer;
-	vm_paddr_t buffer_phys;
-	void *va;
 
 	sc->sc_dev = dev;
 	sc->sc_req = NULL;
@@ -210,7 +205,7 @@ bcm_sdhci_attach(device_t dev)
 		goto fail;
 	}
 
-	if (bus_setup_intr(dev, sc->sc_irq_res, INTR_TYPE_MISC | INTR_MPSAFE,
+	if (bus_setup_intr(dev, sc->sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE,
 	    NULL, bcm_sdhci_intr, sc, &sc->sc_intrhand))
 	{
 		bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res);
@@ -243,7 +238,7 @@ bcm_sdhci_attach(device_t dev)
 
 	bcm_dma_setup_intr(sc->sc_dma_ch, bcm_sdhci_dma_intr, sc);
 
-	/* Allocate DMA buffers */
+	/* Allocate bus_dma resources. */
 	err = bus_dma_tag_create(bus_get_dma_tag(dev),
 	    1, 0, BUS_SPACE_MAXADDR_32BIT,
 	    BUS_SPACE_MAXADDR, NULL, NULL,
@@ -256,37 +251,14 @@ bcm_sdhci_attach(device_t dev)
 		goto fail;
 	}
 
-	err = bus_dmamem_alloc(sc->sc_dma_tag, &buffer,
-	    BUS_DMA_WAITOK | BUS_DMA_COHERENT| BUS_DMA_ZERO,
-	    &sc->sc_dma_map);
-
-	if (err) {
-		device_printf(dev, "cannot allocate DMA memory\n");
-		goto fail;
-	}
-
-	err = bus_dmamap_load(sc->sc_dma_tag, sc->sc_dma_map, buffer,
-	    BCM_SDHCI_BUFFER_SIZE, bcm_dmamap_cb, &buffer_phys,
-	    BUS_DMA_WAITOK);
+	err = bus_dmamap_create(sc->sc_dma_tag, 0, &sc->sc_dma_map);
 	if (err) {
-		device_printf(dev, "cannot load DMA memory\n");
-		goto fail;
-	}
-
-	/* 
-	 * Sanity check: two least bits of address should be zero
-	 */
-	if ((uintptr_t)buffer & 3) {
-		device_printf(dev,
-		    "DMA address is not word-aligned\n");
+		device_printf(dev, "bus_dmamap_create failed\n");
 		goto fail;
 	}
 
-	sc->sc_dma_buffer = buffer;
-	sc->sc_dma_buffer_phys = buffer_phys;
-	va = (void*)rman_get_start(sc->sc_mem_res);
-	sc->sc_sdhci_buffer_phys =
-	    pmap_kextract((vm_offset_t)va) + SDHCI_BUFFER;
+	sc->sc_sdhci_buffer_phys = BUS_SPACE_PHYSADDR(sc->sc_mem_res, 
+	    SDHCI_BUFFER);
 
 	bus_generic_probe(dev);
 	bus_generic_attach(dev);
@@ -447,27 +419,23 @@ bcm_sdhci_dma_intr(int ch, void *arg)
 	struct bcm_sdhci_softc *sc = (struct bcm_sdhci_softc *)arg;
 	struct sdhci_slot *slot = &sc->sc_slot;
 	uint32_t reg, mask;
-	void *buffer;
+	bus_addr_t pmem;
+	vm_paddr_t pdst, psrc;
 	size_t len;
-	int left;
+	int left, sync_op;
 
 	mtx_lock(&slot->mtx);
 
-	/* copy DMA buffer to VA if READ */
 	len = bcm_dma_length(sc->sc_dma_ch);
 	if (slot->curcmd->data->flags & MMC_DATA_READ) {
-		bus_dmamap_sync(sc->sc_dma_tag, sc->sc_dma_map,
-		    BUS_DMASYNC_POSTREAD);
-
+		sync_op = BUS_DMASYNC_POSTREAD;
 		mask = SDHCI_INT_DATA_AVAIL;
-		/* all dma data in single or contiguous page */
-		buffer = (uint8_t*)(slot->curcmd->data->data) + slot->offset;
-		memcpy(buffer, sc->sc_dma_buffer, len);
 	} else {
-		bus_dmamap_sync(sc->sc_dma_tag, sc->sc_dma_map,
-		    BUS_DMASYNC_POSTWRITE);
+		sync_op = BUS_DMASYNC_POSTWRITE;
 		mask = SDHCI_INT_SPACE_AVAIL;
 	}
+	bus_dmamap_sync(sc->sc_dma_tag, sc->sc_dma_map, sync_op);
+	bus_dmamap_unload(sc->sc_dma_tag, sc->sc_dma_map);
 
 	slot->offset += len;
 	sc->sc_dma_inuse = 0;
@@ -501,27 +469,22 @@ bcm_sdhci_dma_intr(int ch, void *arg)
 			    SDHCI_INT_STATUS, mask);
 
 			/* continue next DMA transfer */
+			bus_dmamap_load(sc->sc_dma_tag, sc->sc_dma_map, 
+			    (uint8_t *)slot->curcmd->data->data + 
+			    slot->offset, left, bcm_dmamap_cb, &pmem, 0);
 			if (slot->curcmd->data->flags & MMC_DATA_READ) {
-				bus_dmamap_sync(sc->sc_dma_tag, sc->sc_dma_map,
-				    BUS_DMASYNC_PREREAD);
-
-				/* DMA start */
-				if (bcm_dma_start(sc->sc_dma_ch,
-				    sc->sc_sdhci_buffer_phys,
-				    sc->sc_dma_buffer_phys, left) != 0)
-					device_printf(sc->sc_dev, "failed DMA start\n");
+				psrc = sc->sc_sdhci_buffer_phys;
+				pdst = pmem;
+				sync_op = BUS_DMASYNC_PREREAD;
 			} else {
-				buffer = (char*)slot->curcmd->data->data + slot->offset;
-				memcpy(sc->sc_dma_buffer, buffer, left);
-
-				bus_dmamap_sync(sc->sc_dma_tag,
-				    sc->sc_dma_map, BUS_DMASYNC_PREWRITE);
-
-				/* DMA start */
-				if (bcm_dma_start(sc->sc_dma_ch, 
-				    sc->sc_dma_buffer_phys,
-				    sc->sc_sdhci_buffer_phys, left) != 0)
-					device_printf(sc->sc_dev, "failed DMA start\n");
+				psrc = pmem;
+				pdst = sc->sc_sdhci_buffer_phys;
+				sync_op = BUS_DMASYNC_PREWRITE;
+			}
+			bus_dmamap_sync(sc->sc_dma_tag, sc->sc_dma_map, sync_op);
+			if (bcm_dma_start(sc->sc_dma_ch, psrc, pdst, left)) {
+				/* XXX stop xfer, other error recovery? */
+				device_printf(sc->sc_dev, "failed DMA start\n");
 			}
 		} else {
 			/* wait for next data by INT */
@@ -542,6 +505,7 @@ bcm_sdhci_read_dma(struct sdhci_slot *sl
 {
 	struct bcm_sdhci_softc *sc = device_get_softc(slot->bus);
 	size_t left;
+	bus_addr_t paddr;
 
 	if (sc->sc_dma_inuse) {
 		device_printf(sc->sc_dev, "DMA in use\n");
@@ -562,12 +526,16 @@ bcm_sdhci_read_dma(struct sdhci_slot *sl
 	    BCM_DMA_INC_ADDR,
 	    (left & 0xf) ? BCM_DMA_32BIT : BCM_DMA_128BIT);
 
+	bus_dmamap_load(sc->sc_dma_tag, sc->sc_dma_map, 
+	    (uint8_t *)slot->curcmd->data->data + slot->offset, left, 
+	    bcm_dmamap_cb, &paddr, 0);
+
 	bus_dmamap_sync(sc->sc_dma_tag, sc->sc_dma_map,
 	    BUS_DMASYNC_PREREAD);
 
 	/* DMA start */
 	if (bcm_dma_start(sc->sc_dma_ch, sc->sc_sdhci_buffer_phys,
-	    sc->sc_dma_buffer_phys, left) != 0)
+	    paddr, left) != 0)
 		device_printf(sc->sc_dev, "failed DMA start\n");
 }
 
@@ -575,8 +543,8 @@ static void
 bcm_sdhci_write_dma(struct sdhci_slot *slot)
 {
 	struct bcm_sdhci_softc *sc = device_get_softc(slot->bus);
-	char *buffer;
 	size_t left;
+	bus_addr_t paddr;
 
 	if (sc->sc_dma_inuse) {
 		device_printf(sc->sc_dev, "DMA in use\n");
@@ -591,8 +559,9 @@ bcm_sdhci_write_dma(struct sdhci_slot *s
 	KASSERT((left & 3) == 0,
 	    ("%s: len = %d, not word-aligned", __func__, left));
 
-	buffer = (char*)slot->curcmd->data->data + slot->offset;
-	memcpy(sc->sc_dma_buffer, buffer, left);
+	bus_dmamap_load(sc->sc_dma_tag, sc->sc_dma_map,
+	    (uint8_t *)slot->curcmd->data->data + slot->offset, left, 
+	    bcm_dmamap_cb, &paddr, 0);
 
 	bcm_dma_setup_src(sc->sc_dma_ch, BCM_DMA_DREQ_NONE,
 	    BCM_DMA_INC_ADDR,
@@ -604,7 +573,7 @@ bcm_sdhci_write_dma(struct sdhci_slot *s
 	    BUS_DMASYNC_PREWRITE);
 
 	/* DMA start */
-	if (bcm_dma_start(sc->sc_dma_ch, sc->sc_dma_buffer_phys,
+	if (bcm_dma_start(sc->sc_dma_ch, paddr,
 	    sc->sc_sdhci_buffer_phys, left) != 0)
 		device_printf(sc->sc_dev, "failed DMA start\n");
 }
@@ -614,11 +583,16 @@ bcm_sdhci_will_handle_transfer(device_t 
 {
 	size_t left;
 
-	/* Do not use DMA for transfers less then block size */
+	/*
+	 * Do not use DMA for transfers less than block size or with a length
+	 * that is not a multiple of four.
+	 */
 	left = min(BCM_DMA_BLOCK_SIZE,
 	    slot->curcmd->data->len - slot->offset);
 	if (left < BCM_DMA_BLOCK_SIZE)
 		return (0);
+	if (left & 0x03)
+		return (0);
 
 	return (1);
 }

Modified: projects/efika_mx/sys/arm/include/bus.h
==============================================================================
--- projects/efika_mx/sys/arm/include/bus.h	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sys/arm/include/bus.h	Mon Mar 18 15:38:15 2013	(r248469)
@@ -725,4 +725,12 @@ bs_c_8_proto(f);
 
 #include <machine/bus_dma.h>
 
+/*
+ * Get the physical address of a bus space memory-mapped resource.
+ * Doing this as a macro is a temporary solution until a more robust fix is
+ * designed.  It also serves to mark the locations needing that fix.
+ */
+#define BUS_SPACE_PHYSADDR(res, offs) \
+	((u_int)(rman_get_start(res)+(offs)))
+
 #endif /* _MACHINE_BUS_H_ */

Modified: projects/efika_mx/sys/arm/ti/cpsw/if_cpsw.c
==============================================================================
--- projects/efika_mx/sys/arm/ti/cpsw/if_cpsw.c	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sys/arm/ti/cpsw/if_cpsw.c	Mon Mar 18 15:38:15 2013	(r248469)
@@ -327,7 +327,7 @@ cpsw_debugf(const char *fmt, ...)
 #define	cpsw_cpdma_bd_offset(i)	(CPSW_CPPI_RAM_OFFSET + ((i)*16))
 
 #define	cpsw_cpdma_bd_paddr(sc, slot)				\
-	(slot->bd_offset + vtophys(rman_get_start(sc->res[0])))
+	BUS_SPACE_PHYSADDR(sc->res[0], slot->bd_offset)
 #define	cpsw_cpdma_read_bd(sc, slot, val)				\
 	bus_read_region_4(sc->res[0], slot->bd_offset, (uint32_t *) val, 4)
 #define	cpsw_cpdma_write_bd(sc, slot, val)				\

Modified: projects/efika_mx/sys/arm/ti/ti_mmchs.c
==============================================================================
--- projects/efika_mx/sys/arm/ti/ti_mmchs.c	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sys/arm/ti/ti_mmchs.c	Mon Mar 18 15:38:15 2013	(r248469)
@@ -1584,7 +1584,6 @@ static int
 ti_mmchs_activate(device_t dev)
 {
 	struct ti_mmchs_softc *sc = device_get_softc(dev);
-	unsigned long addr;
 	int rid;
 	int err;
 
@@ -1630,8 +1629,8 @@ ti_mmchs_activate(device_t dev)
 		panic("Unknown OMAP device\n");
 
 	/* Get the physical address of the MMC data register, needed for DMA */
-	addr = vtophys(rman_get_start(sc->sc_mem_res));
-	sc->sc_data_reg_paddr = addr + sc->sc_reg_off + MMCHS_DATA;
+	sc->sc_data_reg_paddr = BUS_SPACE_PHYSADDR(sc->sc_mem_res, 
+	    sc->sc_reg_off + MMCHS_DATA);
 
 	/* Set the initial power state to off */
 	sc->sc_cur_power_mode = power_off;

Modified: projects/efika_mx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
==============================================================================
--- projects/efika_mx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c	Mon Mar 18 15:38:15 2013	(r248469)
@@ -271,7 +271,7 @@ uint64_t zfs_deadman_synctime = 1000ULL;
 TUNABLE_QUAD("vfs.zfs.deadman_synctime", &zfs_deadman_synctime);
 SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, deadman_synctime, CTLFLAG_RDTUN,
     &zfs_deadman_synctime, 0,
-    "Stalled ZFS I/O expiration time in units of vfs.zfs.txg_synctime_ms");
+    "Stalled ZFS I/O expiration time in units of vfs.zfs.txg.synctime_ms");
 
 /*
  * Default value of -1 for zfs_deadman_enabled is resolved in

Modified: projects/efika_mx/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h
==============================================================================
--- projects/efika_mx/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h	Mon Mar 18 15:38:15 2013	(r248469)
@@ -2313,10 +2313,10 @@ extern int dtrace_mach_aframes(void);
 #if defined(__i386) || defined(__amd64)
 extern int dtrace_instr_size(uchar_t *instr);
 extern int dtrace_instr_size_isa(uchar_t *, model_t, int *);
-extern void dtrace_invop_add(int (*)(uintptr_t, uintptr_t *, uintptr_t));
-extern void dtrace_invop_remove(int (*)(uintptr_t, uintptr_t *, uintptr_t));
 extern void dtrace_invop_callsite(void);
 #endif
+extern void dtrace_invop_add(int (*)(uintptr_t, uintptr_t *, uintptr_t));
+extern void dtrace_invop_remove(int (*)(uintptr_t, uintptr_t *, uintptr_t));
 
 #ifdef __sparc
 extern int dtrace_blksuword32(uintptr_t, uint32_t *, int);
@@ -2349,6 +2349,15 @@ extern void dtrace_helpers_destroy(proc_
 #define	DTRACE_INVOP_NOP		4
 #define	DTRACE_INVOP_RET		5
 
+#elif defined(__powerpc__)
+
+#define DTRACE_INVOP_RET	1
+#define DTRACE_INVOP_BCTR	2
+#define DTRACE_INVOP_BLR	3
+#define DTRACE_INVOP_JUMP	4
+#define DTRACE_INVOP_MFLR_R0	5
+#define DTRACE_INVOP_NOP	6
+
 #endif
 
 #ifdef	__cplusplus

Modified: projects/efika_mx/sys/cddl/dev/dtrace/powerpc/dtrace_asm.S
==============================================================================
--- projects/efika_mx/sys/cddl/dev/dtrace/powerpc/dtrace_asm.S	Mon Mar 18 15:27:59 2013	(r248468)
+++ projects/efika_mx/sys/cddl/dev/dtrace/powerpc/dtrace_asm.S	Mon Mar 18 15:38:15 2013	(r248469)
@@ -85,10 +85,10 @@ ASENTRY_NOPROF(dtrace_cas32)
 1:
 	lwarx	%r0,0,%r3
 	cmpw	%r4,%r0
-	bne		2f
+	bne	2f
 	stwcx.	%r5,0,%r3
-	bne		1b
-2:	mr		%r3,%r0
+	bne	1b
+2:	mr	%r3,%r0
 	blr
 END(dtrace_cas32)
 
@@ -100,22 +100,15 @@ ASENTRY_NOPROF(dtrace_casptr)
 1:
 	lwarx	%r0,0,%r3
 	cmpw	%r4,%r0
-	bne		2f
+	bne	2f
 	stwcx.	%r5,0,%r3
-	bne		1b
-2:	mr		%r3,%r0
+	bne	1b
+2:	mr	%r3,%r0
 	blr
 END(dtrace_casptr)
 
 
 /*
-uintptr_t
-dtrace_fulword(void *addr)
-*/
-ASENTRY_NOPROF(dtrace_fulword)
-END(dtrace_fulword)
-
-/*
 XXX: unoptimized
 void
 dtrace_copy(uintptr_t src, uintptr_t dest, size_t size)
@@ -127,7 +120,7 @@ ASENTRY_NOPROF(dtrace_copy)
 	lbzu	%r3,1(%r7)
 	stbu	%r3,1(%r8)
 	addme	%r5,%r5
-	beq		2f
+	beq	2f
 2:
 	blr
 END(dtrace_copy)
@@ -144,42 +137,19 @@ ASENTRY_NOPROF(dtrace_copystr)
 	lbzu	%r3,1(%r7)
 	stbu	%r3,1(%r8)
 	addme	%r5,%r5
-	beq		2f
-	or		%r3,%r3,%r3
-	beq		2f
+	beq	2f
+	or	%r3,%r3,%r3
+	beq	2f
 	andi.	%r0,%r5,0x0fff
-	beq		2f
-	lwz		%r0,0(%r6)
+	beq	2f
+	lwz	%r0,0(%r6)
 	andi.	%r0,%r0,CPU_DTRACE_BADADDR
-	beq		1b
+	beq	1b
 2:
 	blr
 END(dtrace_copystr)
 
 /*
-void dtrace_invop_init(void)
-*/
-ASENTRY_NOPROF(dtrace_invop_init)
-	/* XXX: impement it properly -- implement dtrace_invop_start */

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-projects mailing list