|
@@ -640,7 +640,8 @@ cas_action:
|
|
|
sub,<> %r28, %r25, %r0
|
|
|
2: stw %r24, 0(%r26)
|
|
|
/* Free lock */
|
|
|
- stw,ma %r20, 0(%sr2,%r20)
|
|
|
+ sync
|
|
|
+ stw %r20, 0(%sr2,%r20)
|
|
|
#if ENABLE_LWS_DEBUG
|
|
|
/* Clear thread register indicator */
|
|
|
stw %r0, 4(%sr2,%r20)
|
|
@@ -654,7 +655,8 @@ cas_action:
|
|
|
3:
|
|
|
/* Error occurred on load or store */
|
|
|
/* Free lock */
|
|
|
- stw,ma %r20, 0(%sr2,%r20)
|
|
|
+ sync
|
|
|
+ stw %r20, 0(%sr2,%r20)
|
|
|
#if ENABLE_LWS_DEBUG
|
|
|
stw %r0, 4(%sr2,%r20)
|
|
|
#endif
|
|
@@ -855,7 +857,8 @@ cas2_action:
|
|
|
|
|
|
cas2_end:
|
|
|
/* Free lock */
|
|
|
- stw,ma %r20, 0(%sr2,%r20)
|
|
|
+ sync
|
|
|
+ stw %r20, 0(%sr2,%r20)
|
|
|
/* Enable interrupts */
|
|
|
ssm PSW_SM_I, %r0
|
|
|
/* Return to userspace, set no error */
|
|
@@ -865,7 +868,8 @@ cas2_end:
|
|
|
22:
|
|
|
/* Error occurred on load or store */
|
|
|
/* Free lock */
|
|
|
- stw,ma %r20, 0(%sr2,%r20)
|
|
|
+ sync
|
|
|
+ stw %r20, 0(%sr2,%r20)
|
|
|
ssm PSW_SM_I, %r0
|
|
|
ldo 1(%r0),%r28
|
|
|
b lws_exit
|