Commit cb4f5e19 authored by Dave Cheney's avatar Dave Cheney

[dev.power64] runtime: fix cas64 on power64x

cas64 was jumping to the wrong offset.

LGTM=minux, rsc
R=rsc, austin, minux
CC=golang-codereviews
https://golang.org/cl/158710043
parent 1b130a08
...@@ -409,17 +409,19 @@ TEXT runtime·cas(SB), NOSPLIT, $0-17 ...@@ -409,17 +409,19 @@ TEXT runtime·cas(SB), NOSPLIT, $0-17
MOVD p+0(FP), R3 MOVD p+0(FP), R3
MOVW old+8(FP), R4 MOVW old+8(FP), R4
MOVW new+12(FP), R5 MOVW new+12(FP), R5
cas_again:
SYNC SYNC
LWAR (R3), R6 LWAR (R3), R6
CMPW R6, R4 CMPW R6, R4
BNE 8(PC) BNE cas_fail
STWCCC R5, (R3) STWCCC R5, (R3)
BNE -5(PC) BNE cas_again
MOVD $1, R3 MOVD $1, R3
SYNC SYNC
ISYNC ISYNC
MOVB R3, ret+16(FP) MOVB R3, ret+16(FP)
RETURN RETURN
cas_fail:
MOVD $0, R3 MOVD $0, R3
BR -5(PC) BR -5(PC)
...@@ -435,19 +437,21 @@ TEXT runtime·cas64(SB), NOSPLIT, $0-25 ...@@ -435,19 +437,21 @@ TEXT runtime·cas64(SB), NOSPLIT, $0-25
MOVD p+0(FP), R3 MOVD p+0(FP), R3
MOVD old+8(FP), R4 MOVD old+8(FP), R4
MOVD new+16(FP), R5 MOVD new+16(FP), R5
cas64_again:
SYNC SYNC
LDAR (R3), R6 LDAR (R3), R6
CMP R6, R4 CMP R6, R4
BNE 7(PC) BNE cas64_fail
STDCCC R5, (R3) STDCCC R5, (R3)
BNE -5(PC) BNE cas64_again
MOVD $1, R3 MOVD $1, R3
SYNC SYNC
ISYNC ISYNC
MOVB R3, ret+24(FP) MOVB R3, ret+24(FP)
RETURN RETURN
cas64_fail:
MOVD $0, R3 MOVD $0, R3
BR -4(PC) BR -5(PC)
TEXT runtime·casuintptr(SB), NOSPLIT, $0-25 TEXT runtime·casuintptr(SB), NOSPLIT, $0-25
BR runtime·cas64(SB) BR runtime·cas64(SB)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment