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
This commit is contained in:
Ed Schouten 2015-10-15 17:50:28 +00:00
parent 97140827bb
commit 632b5263c5

View File

@ -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)