| // 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 |