Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 25 Apr 2012 22:44:07 +0000 (UTC)
From:      Stanislav Sedov <stas@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r234688 - head/sys/arm/arm
Message-ID:  <201204252244.q3PMi7Wf017948@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: stas
Date: Wed Apr 25 22:44:07 2012
New Revision: 234688
URL: http://svn.freebsd.org/changeset/base/234688

Log:
  - Disable MMU before reconfiguring the pagetables in the trampoline code.
    Otherwise we might end up overwriting the PTEs we're currently using
    for some reason.
  
  Reviewed by:	cognet

Modified:
  head/sys/arm/arm/elf_trampoline.c

Modified: head/sys/arm/arm/elf_trampoline.c
==============================================================================
--- head/sys/arm/arm/elf_trampoline.c	Wed Apr 25 21:59:56 2012	(r234687)
+++ head/sys/arm/arm/elf_trampoline.c	Wed Apr 25 22:44:07 2012	(r234688)
@@ -614,6 +614,17 @@ __start(void)
 		    (unsigned int)&func_end + 800 , 0);
 		if (altdst > dst)
 			dst = altdst;
+
+		/*
+		 * Disable MMU.  Otherwise, setup_pagetables call below
+		 * might overwrite the L1 table we are currently using.
+		 */
+		cpu_idcache_wbinv_all();
+		cpu_l2cache_wbinv_all();
+		__asm __volatile("mrc p15, 0, %0, c1, c0, 0\n"
+		  "bic %0, %0, #1\n" /* MMU_DISABLE */
+		  "mcr p15, 0, %0, c1, c0, 0\n"
+		  :"=r" (pt_addr));
 	} else
 #endif
 		dst = 4 + load_kernel((unsigned int)&kernel_start, 



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