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:
parent
97140827bb
commit
632b5263c5
@ -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)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user