github.com/twelsh-aw/go/src@v0.0.0-20230516233729-a56fe86a7c81/runtime/tls_arm64.h (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 #ifdef GOOS_android 6 #define TLS_linux 7 #define TLSG_IS_VARIABLE 8 #endif 9 #ifdef GOOS_linux 10 #define TLS_linux 11 #endif 12 #ifdef TLS_linux 13 #define MRS_TPIDR_R0 WORD $0xd53bd040 // MRS TPIDR_EL0, R0 14 #endif 15 16 #ifdef GOOS_darwin 17 #define TLS_darwin 18 #endif 19 #ifdef GOOS_ios 20 #define TLS_darwin 21 #endif 22 #ifdef TLS_darwin 23 #define TLSG_IS_VARIABLE 24 #define MRS_TPIDR_R0 WORD $0xd53bd060 // MRS TPIDRRO_EL0, R0 25 #endif 26 27 #ifdef GOOS_freebsd 28 #define MRS_TPIDR_R0 WORD $0xd53bd040 // MRS TPIDR_EL0, R0 29 #endif 30 31 #ifdef GOOS_netbsd 32 #define MRS_TPIDR_R0 WORD $0xd53bd040 // MRS TPIDRRO_EL0, R0 33 #endif 34 35 #ifdef GOOS_openbsd 36 #define MRS_TPIDR_R0 WORD $0xd53bd040 // MRS TPIDR_EL0, R0 37 #endif 38 39 #ifdef GOOS_windows 40 #define TLS_windows 41 #endif 42 #ifdef TLS_windows 43 #define TLSG_IS_VARIABLE 44 #define MRS_TPIDR_R0 MOVD R18_PLATFORM, R0 45 #endif 46 47 // Define something that will break the build if 48 // the GOOS is unknown. 49 #ifndef MRS_TPIDR_R0 50 #define MRS_TPIDR_R0 unknown_TLS_implementation_in_tls_arm64_h 51 #endif