From 65085188494e0bb1a0edae36993a43e4670b9e48 Mon Sep 17 00:00:00 2001 From: Shenghou Ma Date: Fri, 3 Apr 2015 04:37:24 -0400 Subject: [PATCH] misc/cgo/test/issue9400: add arm64 implementation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I309e3df7608b9eef9339196fdc50dedf5f9439f4 Reviewed-on: https://go-review.googlesource.com/8451 Reviewed-by: David Crawshaw Reviewed-by: Aram Hăvărneanu --- misc/cgo/test/issue9400/asm_arm64.s | 33 +++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 misc/cgo/test/issue9400/asm_arm64.s diff --git a/misc/cgo/test/issue9400/asm_arm64.s b/misc/cgo/test/issue9400/asm_arm64.s new file mode 100644 index 00000000000..0c024e8333d --- /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