Text file
src/runtime/tls_arm64.h
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
52
View as plain text