From: Shenghou Ma Date: Fri, 3 Apr 2015 08:37:24 +0000 (-0400) Subject: misc/cgo/test/issue9400: add arm64 implementation X-Git-Tag: go1.5beta1~1254 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=65085188494e0bb1a0edae36993a43e4670b9e48;p=gostls13.git misc/cgo/test/issue9400: add arm64 implementation Change-Id: I309e3df7608b9eef9339196fdc50dedf5f9439f4 Reviewed-on: https://go-review.googlesource.com/8451 Reviewed-by: David Crawshaw Reviewed-by: Aram Hăvărneanu --- diff --git a/misc/cgo/test/issue9400/asm_arm64.s b/misc/cgo/test/issue9400/asm_arm64.s new file mode 100644 index 0000000000..0c024e8333 --- /dev/null +++ b/misc/cgo/test/issue9400/asm_arm64.s @@ -0,0 +1,33 @@ +#include "textflag.h" + +TEXT ·RewindAndSetgid(SB),NOSPLIT,$-8-0 + // Save link register + MOVD R30, R9 + + // Rewind stack pointer so anything that happens on the stack + // will clobber the test pattern created by the caller + ADD $(1024 * 8), RSP + + // Ask signaller to setgid + MOVD $·Baton(SB), R0 + MOVD $1, R1 +storeloop: + LDAXRW (R0), R2 + STLXRW R1, (R0), R3 + CBNZ R3, storeloop + + // Wait for setgid completion + MOVW $0, R1 + MOVW $0, R2 +loop: + LDAXRW (R0), R3 + CMPW R1, R3 + BNE loop + STLXRW R2, (R0), R3 + CBNZ R3, loop + + // Restore stack + SUB $(1024 * 8), RSP + + MOVD R9, R30 + RET