Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Oct 2015 17:50:28 +0000 (UTC)
From:      Ed Schouten <ed@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r289373 - head/sys/arm64/arm64
Message-ID:  <201510151750.t9FHoS7n077896@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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)
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201510151750.t9FHoS7n077896>