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 TPIDR TPIDR_EL0
14 #define MRS_TPIDR_R0 WORD $0xd53bd040 // MRS TPIDR_EL0, R0
15 #endif
16
17 #ifdef GOOS_darwin
18 #define TLS_darwin
19 #endif
20 #ifdef GOOS_ios
21 #define TLS_darwin
22 #endif
23 #ifdef TLS_darwin
24 #define TPIDR TPIDRRO_EL0
25 #define TLSG_IS_VARIABLE
26 #define MRS_TPIDR_R0 WORD $0xd53bd060 // MRS TPIDRRO_EL0, R0
27 #endif
28
29 #ifdef GOOS_freebsd
30 #define TPIDR TPIDR_EL0
31 #define MRS_TPIDR_R0 WORD $0xd53bd040 // MRS TPIDR_EL0, R0
32 #endif
33
34 #ifdef GOOS_netbsd
35 #define TPIDR TPIDRRO_EL0
36 #define MRS_TPIDR_R0 WORD $0xd53bd040 // MRS TPIDRRO_EL0, R0
37 #endif
38
39 #ifdef GOOS_openbsd
40 #define TPIDR TPIDR_EL0
41 #define MRS_TPIDR_R0 WORD $0xd53bd040 // MRS TPIDR_EL0, R0
42 #endif
43
44 #ifdef GOOS_windows
45 #define TLS_windows
46 #endif
47 #ifdef TLS_windows
48 #define TLSG_IS_VARIABLE
49 #define MRS_TPIDR_R0 MOVD R18_PLATFORM, R0
50 #endif
51
52 // Define something that will break the build if
53 // the GOOS is unknown.
54 #ifndef MRS_TPIDR_R0
55 #define MRS_TPIDR_R0 unknown_TLS_implementation_in_tls_arm64_h
56 #endif
57
View as plain text