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