| // Copyright 2015 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| #ifdef GOOS_android |
| #define TLS_linux |
| #define TLSG_IS_VARIABLE |
| #endif |
| #ifdef GOOS_linux |
| #define TLS_linux |
| #endif |
| #ifdef TLS_linux |
| #define MRS_TPIDR_R0 WORD $0xd53bd040 // MRS TPIDR_EL0, R0 |
| #endif |
| |
| #ifdef GOOS_darwin |
| #define TLS_darwin |
| #endif |
| #ifdef GOOS_ios |
| #define TLS_darwin |
| #endif |
| #ifdef TLS_darwin |
| #define TLSG_IS_VARIABLE |
| #define MRS_TPIDR_R0 WORD $0xd53bd060 // MRS TPIDRRO_EL0, R0 |
| #endif |
| |
| #ifdef GOOS_freebsd |
| #define MRS_TPIDR_R0 WORD $0xd53bd040 // MRS TPIDR_EL0, R0 |
| #endif |
| |
| #ifdef GOOS_netbsd |
| #define MRS_TPIDR_R0 WORD $0xd53bd040 // MRS TPIDRRO_EL0, R0 |
| #endif |
| |
| #ifdef GOOS_openbsd |
| #define MRS_TPIDR_R0 WORD $0xd53bd040 // MRS TPIDR_EL0, R0 |
| #endif |
| |
| #ifdef GOOS_windows |
| #define TLS_windows |
| #endif |
| #ifdef TLS_windows |
| #define TLSG_IS_VARIABLE |
| #define MRS_TPIDR_R0 MOVD R18_PLATFORM, R0 |
| #endif |
| |
| // Define something that will break the build if |
| // the GOOS is unknown. |
| #ifndef MRS_TPIDR_R0 |
| #define MRS_TPIDR_R0 unknown_TLS_implementation_in_tls_arm64_h |
| #endif |