svn commit: r279810 - head/sys/arm/arm

Ian Lepore ian at FreeBSD.org
Mon Mar 9 14:42:26 UTC 2015


Author: ian
Date: Mon Mar  9 14:42:25 2015
New Revision: 279810
URL: https://svnweb.freebsd.org/changeset/base/279810

Log:
  Clean data cache before instruction cache in armv7_icache_sync_range().
  Also ensure dsb precedes isb in all icache maintenance routines (first
  do a data sync, then stall the instruction stream until it finishes).
  
  Submitted by:	Michal Meloun

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	Mon Mar  9 14:01:35 2015	(r279809)
+++ head/sys/arm/arm/cpufunc_asm_armv7.S	Mon Mar  9 14:42:25 2015	(r279810)
@@ -247,8 +247,8 @@ ENTRY(armv7_idcache_wbinv_range)
 	add	r0, r0, ip
 	subs	r1, r1, ip
 	bhi	.Larmv7_id_wbinv_next
-	isb				/* instruction synchronization barrier */
 	dsb				/* data synchronization barrier */
+	isb				/* instruction synchronization barrier */
 	RET
 END(armv7_idcache_wbinv_range)
 
@@ -258,8 +258,8 @@ ENTRY_NP(armv7_icache_sync_all)
 #else
 	mcr	CP15_ICIALLU
 #endif
-	isb				/* instruction synchronization barrier */
 	dsb				/* data synchronization barrier */
+	isb				/* instruction synchronization barrier */
 	RET
 END(armv7_icache_sync_all)
 
@@ -267,13 +267,13 @@ ENTRY_NP(armv7_icache_sync_range)
 	ldr	ip, .Larmv7_icache_line_size
 	ldr	ip, [ip]
 .Larmv7_sync_next:
-	mcr	CP15_ICIMVAU(r0)
 	mcr	CP15_DCCMVAC(r0)
+	mcr	CP15_ICIMVAU(r0)
 	add	r0, r0, ip
 	subs	r1, r1, ip
 	bhi	.Larmv7_sync_next
-	isb				/* instruction synchronization barrier */
 	dsb				/* data synchronization barrier */
+	isb				/* instruction synchronization barrier */
 	RET
 END(armv7_icache_sync_range)
 


More information about the svn-src-all mailing list