diff options
Diffstat (limited to 'src/runtime/internal/atomic')
| -rw-r--r-- | src/runtime/internal/atomic/asm_ppc64x.s | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/src/runtime/internal/atomic/asm_ppc64x.s b/src/runtime/internal/atomic/asm_ppc64x.s index 7117aef158..a2ed4adc91 100644 --- a/src/runtime/internal/atomic/asm_ppc64x.s +++ b/src/runtime/internal/atomic/asm_ppc64x.s @@ -17,7 +17,7 @@ TEXT runtime∕internal∕atomic·Cas(SB), NOSPLIT, $0-17 MOVD ptr+0(FP), R3 MOVWZ old+8(FP), R4 MOVWZ new+12(FP), R5 - SYNC + LWSYNC cas_again: LWAR (R3), R6 CMPW R6, R4 @@ -25,7 +25,7 @@ cas_again: STWCCC R5, (R3) BNE cas_again MOVD $1, R3 - ISYNC + LWSYNC MOVB R3, ret+16(FP) RET cas_fail: @@ -44,7 +44,7 @@ TEXT runtime∕internal∕atomic·Cas64(SB), NOSPLIT, $0-25 MOVD ptr+0(FP), R3 MOVD old+8(FP), R4 MOVD new+16(FP), R5 - SYNC + LWSYNC cas64_again: LDAR (R3), R6 CMP R6, R4 @@ -52,7 +52,7 @@ cas64_again: STDCCC R5, (R3) BNE cas64_again MOVD $1, R3 - ISYNC + LWSYNC MOVB R3, ret+24(FP) RET cas64_fail: @@ -97,31 +97,29 @@ TEXT runtime∕internal∕atomic·Casp1(SB), NOSPLIT, $0-25 TEXT runtime∕internal∕atomic·Xadd(SB), NOSPLIT, $0-20 MOVD ptr+0(FP), R4 MOVW delta+8(FP), R5 - SYNC + LWSYNC LWAR (R4), R3 ADD R5, R3 STWCCC R3, (R4) BNE -3(PC) - ISYNC MOVW R3, ret+16(FP) RET TEXT runtime∕internal∕atomic·Xadd64(SB), NOSPLIT, $0-24 MOVD ptr+0(FP), R4 MOVD delta+8(FP), R5 - SYNC + LWSYNC LDAR (R4), R3 ADD R5, R3 STDCCC R3, (R4) BNE -3(PC) - ISYNC MOVD R3, ret+16(FP) RET TEXT runtime∕internal∕atomic·Xchg(SB), NOSPLIT, $0-20 MOVD ptr+0(FP), R4 MOVW new+8(FP), R5 - SYNC + LWSYNC LWAR (R4), R3 STWCCC R5, (R4) BNE -2(PC) @@ -132,7 +130,7 @@ TEXT runtime∕internal∕atomic·Xchg(SB), NOSPLIT, $0-20 TEXT runtime∕internal∕atomic·Xchg64(SB), NOSPLIT, $0-24 MOVD ptr+0(FP), R4 MOVD new+8(FP), R5 - SYNC + LWSYNC LDAR (R4), R3 STDCCC R5, (R4) BNE -2(PC) @@ -165,24 +163,22 @@ TEXT runtime∕internal∕atomic·Store64(SB), NOSPLIT, $0-16 TEXT runtime∕internal∕atomic·Or8(SB), NOSPLIT, $0-9 MOVD ptr+0(FP), R3 MOVBZ val+8(FP), R4 - SYNC + LWSYNC again: LBAR (R3), R6 OR R4, R6 STBCCC R6, (R3) BNE again - ISYNC RET // void runtime∕internal∕atomic·And8(byte volatile*, byte); TEXT runtime∕internal∕atomic·And8(SB), NOSPLIT, $0-9 MOVD ptr+0(FP), R3 MOVBZ val+8(FP), R4 - SYNC + LWSYNC again: LBAR (R3),R6 AND R4,R6 STBCCC R6,(R3) BNE again - ISYNC RET |
