aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/tls_arm64.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/tls_arm64.s')
-rw-r--r--src/runtime/tls_arm64.s14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/runtime/tls_arm64.s b/src/runtime/tls_arm64.s
index 999914d655..3f02974d5b 100644
--- a/src/runtime/tls_arm64.s
+++ b/src/runtime/tls_arm64.s
@@ -9,33 +9,35 @@
#include "tls_arm64.h"
TEXT runtime·load_g(SB),NOSPLIT,$0
+#ifndef TLS_darwin
MOVB runtime·iscgo(SB), R0
CBZ R0, nocgo
+#endif
MRS_TPIDR_R0
-#ifdef GOOS_darwin
+#ifdef TLS_darwin
// Darwin sometimes returns unaligned pointers
AND $0xfffffffffffffff8, R0
#endif
MOVD runtime·tls_g(SB), R27
- ADD R27, R0
- MOVD 0(R0), g
+ MOVD (R0)(R27), g
nocgo:
RET
TEXT runtime·save_g(SB),NOSPLIT,$0
+#ifndef TLS_darwin
MOVB runtime·iscgo(SB), R0
CBZ R0, nocgo
+#endif
MRS_TPIDR_R0
-#ifdef GOOS_darwin
+#ifdef TLS_darwin
// Darwin sometimes returns unaligned pointers
AND $0xfffffffffffffff8, R0
#endif
MOVD runtime·tls_g(SB), R27
- ADD R27, R0
- MOVD g, 0(R0)
+ MOVD g, (R0)(R27)
nocgo:
RET