From owner-svn-src-head@FreeBSD.ORG Fri Apr 4 17:39:05 2014 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C59B8C1F; Fri, 4 Apr 2014 17:39:05 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B3365B10; Fri, 4 Apr 2014 17:39:05 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s34Hd5LN006650; Fri, 4 Apr 2014 17:39:05 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s34Hd5cY006649; Fri, 4 Apr 2014 17:39:05 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201404041739.s34Hd5cY006649@svn.freebsd.org> From: Ian Lepore Date: Fri, 4 Apr 2014 17:39:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r264128 - head/sys/arm/arm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 Apr 2014 17:39:05 -0000 Author: ian Date: Fri Apr 4 17:39:05 2014 New Revision: 264128 URL: http://svnweb.freebsd.org/changeset/base/264128 Log: Fix TTB set operation for armv7. Perform sychronization (by "isb" barrier) after TTB is set. This is done to ensure that TLB invalidation always executes after TTB modification and operates on valid CP15 data (per specification). Submitted by: Wojciech Macek Reviewed by: ian@, cognet@ Modified: head/sys/arm/arm/cpufunc_asm_armv7.S Modified: head/sys/arm/arm/cpufunc_asm_armv7.S ============================================================================== --- head/sys/arm/arm/cpufunc_asm_armv7.S Fri Apr 4 17:01:49 2014 (r264127) +++ head/sys/arm/arm/cpufunc_asm_armv7.S Fri Apr 4 17:39:05 2014 (r264128) @@ -71,6 +71,7 @@ ENTRY(armv7_setttb) orr r0, r0, #PT_ATTR mcr p15, 0, r0, c2, c0, 0 /* Translation Table Base Register 0 (TTBR0) */ + isb #ifdef SMP mcr p15, 0, r0, c8, c3, 0 /* invalidate I+D TLBs Inner Shareable*/ #else @@ -273,6 +274,7 @@ ENTRY(armv7_context_switch) orr r0, r0, #PT_ATTR mcr p15, 0, r0, c2, c0, 0 /* set the new TTB */ + isb #ifdef SMP mcr p15, 0, r0, c8, c3, 0 /* and flush the I+D tlbs Inner Sharable */ #else