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

Olivier Houchard cognet at FreeBSD.org
Thu Oct 17 17:11:16 UTC 2013


Author: cognet
Date: Thu Oct 17 17:11:15 2013
New Revision: 256691
URL: http://svnweb.freebsd.org/changeset/base/256691

Log:
  Make casuword() atomic for armv6

Modified:
  head/sys/arm/arm/fusu.S

Modified: head/sys/arm/arm/fusu.S
==============================================================================
--- head/sys/arm/arm/fusu.S	Thu Oct 17 16:18:43 2013	(r256690)
+++ head/sys/arm/arm/fusu.S	Thu Oct 17 17:11:15 2013	(r256691)
@@ -67,11 +67,27 @@ ENTRY(casuword)
 	stmfd	sp!, {r4, r5}
 	adr	r4, .Lcasuwordfault
 	str	r4, [r3, #PCB_ONFAULT]
+#ifdef _ARM_ARCH_6
+1:    
+	cmp     r0, #KERNBASE
+	mvnge   r0, #0
+	bge     2f
+	
+	ldrex   r5, [r0]
+	cmp     r5, r1
+	movne   r0, r5
+	bne     2f
+	strex   r5, r2, [r0]
+	cmp     r5, #0
+	bne     1b
+#else
 	ldrt	r5, [r0]
 	cmp	r5, r1
 	movne	r0, r5
 	streqt	r2, [r0]
+#endif
 	moveq	r0, r1
+2:
 	ldmfd	sp!, {r4, r5}
 	mov	r1, #0x00000000
 	str	r1, [r3, #PCB_ONFAULT]


More information about the svn-src-all mailing list