svn commit: r289373 - head/sys/arm64/arm64

Ed Schouten ed at FreeBSD.org
Thu Oct 15 17:50:29 UTC 2015


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)
 


More information about the svn-src-head mailing list