Author: ed
Date: Thu Oct 15 17:50:28 2015
New Revision: 289373
URL: https://svnweb.freebsd.org/changeset/base/289373

Log:
  Properly set the return value for casueword to 0 upon success.
  
  While trying to get multithreading working for CloudABI on aarch64, I
  noticed that compare-and-exchange operations in kernelspace would always
  fail. It turns out that we don't properly set the return value to 0 when
  the compare and exchange succeeds.
  
  Approved by:  andrew
  Differential Revision:        https://reviews.freebsd.org/D3899

Modified:
  head/sys/arm64/arm64/support.S

Modified: head/sys/arm64/arm64/support.S
==============================================================================
--- head/sys/arm64/arm64/support.S      Thu Oct 15 17:40:39 2015        
(r289372)
+++ head/sys/arm64/arm64/support.S      Thu Oct 15 17:50:28 2015        
(r289373)
@@ -59,6 +59,7 @@ ENTRY(casueword32)
        ldrb    w0, [x0]                /* Try loading the data */
 2:     SET_FAULT_HANDLER(xzr, x5)      /* Reset the fault handler */
        str     w4, [x2]                /* Store the read data */
+       mov     x0, #0                  /* Success */
        ret                             /* Return */
 END(casueword32)
 
@@ -76,6 +77,7 @@ ENTRY(casueword)
        ldrb    w0, [x0]                /* Try loading the data */
 2:     SET_FAULT_HANDLER(xzr, x5)      /* Reset the fault handler */
        str     x4, [x2]                /* Store the read data */
+       mov     x0, #0                  /* Success */
        ret                             /* Return */
 END(casueword)
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to