Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 8 Jun 2018 18:32:27 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r334851 - head/sys/arm64/arm64
Message-ID:  <201806081832.w58IWRth024945@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Fri Jun  8 18:32:26 2018
New Revision: 334851
URL: https://svnweb.freebsd.org/changeset/base/334851

Log:
  Restore release semantic for the old thread unlock on arm64.
  
  With the introduction of pmap_switch(), the DSB instruction on the
  address map switch is not necessary executed, which is fixed by
  changing the unlock store to release.  Also remove comment which
  documented pre-pmap_switch() code.
  
  Reviewed by:	andrew
  Sponsored by:	The FreeBSD Foundation
  MFC after:	1 week

Modified:
  head/sys/arm64/arm64/swtch.S

Modified: head/sys/arm64/arm64/swtch.S
==============================================================================
--- head/sys/arm64/arm64/swtch.S	Fri Jun  8 18:24:46 2018	(r334850)
+++ head/sys/arm64/arm64/swtch.S	Fri Jun  8 18:32:26 2018	(r334851)
@@ -165,10 +165,9 @@ ENTRY(cpu_switch)
 	mov	x0, x19
 
 	/*
-	 * Release the old thread. This doesn't need to be a store-release
-	 * as the above dsb instruction will provide release semantics.
+	 * Release the old thread.
 	 */
-	str	x2, [x0, #TD_LOCK]
+	stlr	x2, [x0, #TD_LOCK]
 #if defined(SCHED_ULE) && defined(SMP)
 	/* Spin if TD_LOCK points to a blocked_lock */
 	ldr	x2, =_C_LABEL(blocked_lock)



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