Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 25 Nov 2016 19:36:27 +0000 (UTC)
From:      Justin Hibbits <jhibbits@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r309167 - head/sys/powerpc/include
Message-ID:  <201611251936.uAPJaRg0084670@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhibbits
Date: Fri Nov 25 19:36:27 2016
New Revision: 309167
URL: https://svnweb.freebsd.org/changeset/base/309167

Log:
  Add an isync to after mtsrin, required by the MPC750 errata
  
  MPC750 User Manual Errata (rev 1) adds a note to C.4.2.2 noting that mtsr,
  mtsrin, and mtmsr all require a isync after the instruction and before data
  address translation uses any of the segment registers.  This should make FreeBSD
  run correctly on the G3 again.
  
  Reported by:	Mark Millard
  MFC after:	1 week

Modified:
  head/sys/powerpc/include/cpufunc.h

Modified: head/sys/powerpc/include/cpufunc.h
==============================================================================
--- head/sys/powerpc/include/cpufunc.h	Fri Nov 25 19:25:20 2016	(r309166)
+++ head/sys/powerpc/include/cpufunc.h	Fri Nov 25 19:36:27 2016	(r309167)
@@ -82,7 +82,7 @@ static __inline void
 mtsrin(vm_offset_t va, register_t value)
 {
 
-	__asm __volatile ("mtsrin %0,%1" :: "r"(value), "r"(va));
+	__asm __volatile ("mtsrin %0,%1; isync" :: "r"(value), "r"(va));
 }
 
 static __inline register_t



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