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]
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to