OLD | NEW |
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ | 1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ |
2 /* This Source Code Form is subject to the terms of the Mozilla Public | 2 /* This Source Code Form is subject to the terms of the Mozilla Public |
3 * License, v. 2.0. If a copy of the MPL was not distributed with this | 3 * License, v. 2.0. If a copy of the MPL was not distributed with this |
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
5 | 5 |
6 /* | 6 /* |
7 * This file is used by not only Linux but also other glibc systems | 7 * This file is used by not only Linux but also other glibc systems |
8 * such as GNU/Hurd and GNU/k*BSD. | 8 * such as GNU/Hurd and GNU/k*BSD. |
9 */ | 9 */ |
10 | 10 |
(...skipping 23 matching lines...) Expand all Loading... |
34 #elif defined(__sparc__) && defined(__arch64__) | 34 #elif defined(__sparc__) && defined(__arch64__) |
35 #define _PR_SI_ARCHITECTURE "sparc64" | 35 #define _PR_SI_ARCHITECTURE "sparc64" |
36 #elif defined(__sparc__) | 36 #elif defined(__sparc__) |
37 #define _PR_SI_ARCHITECTURE "sparc" | 37 #define _PR_SI_ARCHITECTURE "sparc" |
38 #elif defined(__i386__) | 38 #elif defined(__i386__) |
39 #define _PR_SI_ARCHITECTURE "x86" | 39 #define _PR_SI_ARCHITECTURE "x86" |
40 #elif defined(__mips__) | 40 #elif defined(__mips__) |
41 #define _PR_SI_ARCHITECTURE "mips" | 41 #define _PR_SI_ARCHITECTURE "mips" |
42 #elif defined(__arm__) | 42 #elif defined(__arm__) |
43 #define _PR_SI_ARCHITECTURE "arm" | 43 #define _PR_SI_ARCHITECTURE "arm" |
| 44 #elif defined(__aarch64__) |
| 45 #define _PR_SI_ARCHITECTURE "aarch64" |
44 #elif defined(__hppa__) | 46 #elif defined(__hppa__) |
45 #define _PR_SI_ARCHITECTURE "hppa" | 47 #define _PR_SI_ARCHITECTURE "hppa" |
46 #elif defined(__s390x__) | 48 #elif defined(__s390x__) |
47 #define _PR_SI_ARCHITECTURE "s390x" | 49 #define _PR_SI_ARCHITECTURE "s390x" |
48 #elif defined(__s390__) | 50 #elif defined(__s390__) |
49 #define _PR_SI_ARCHITECTURE "s390" | 51 #define _PR_SI_ARCHITECTURE "s390" |
50 #elif defined(__sh__) | 52 #elif defined(__sh__) |
51 #define _PR_SI_ARCHITECTURE "sh" | 53 #define _PR_SI_ARCHITECTURE "sh" |
52 #elif defined(__avr32__) | 54 #elif defined(__avr32__) |
53 #define _PR_SI_ARCHITECTURE "avr32" | 55 #define _PR_SI_ARCHITECTURE "avr32" |
54 #elif defined(__m32r__) | 56 #elif defined(__m32r__) |
55 #define _PR_SI_ARCHITECTURE "m32r" | 57 #define _PR_SI_ARCHITECTURE "m32r" |
56 #else | 58 #else |
57 #error "Unknown CPU architecture" | 59 #error "Unknown CPU architecture" |
58 #endif | 60 #endif |
59 #define PR_DLL_SUFFIX ".so" | 61 #define PR_DLL_SUFFIX ".so" |
60 | 62 |
61 #define _PR_VMBASE 0x30000000 | 63 #define _PR_VMBASE 0x30000000 |
62 #define _PR_STACK_VMBASE 0x50000000 | 64 #define _PR_STACK_VMBASE 0x50000000 |
63 #define _MD_DEFAULT_STACK_SIZE 65536L | 65 #define _MD_DEFAULT_STACK_SIZE 65536L |
64 #define _MD_MMAP_FLAGS MAP_PRIVATE | 66 #define _MD_MMAP_FLAGS MAP_PRIVATE |
65 | 67 |
| 68 #if defined(__aarch64__) |
| 69 #define _MD_MINIMUM_STACK_SIZE 0x20000 |
| 70 #endif |
| 71 |
66 #undef HAVE_STACK_GROWING_UP | 72 #undef HAVE_STACK_GROWING_UP |
67 | 73 |
68 /* | 74 /* |
69 * Elf linux supports dl* functions | 75 * Elf linux supports dl* functions |
70 */ | 76 */ |
71 #define HAVE_DLL | 77 #define HAVE_DLL |
72 #define USE_DLFCN | 78 #define USE_DLFCN |
73 #if defined(ANDROID) | 79 #if defined(ANDROID) |
74 #define NO_DLOPEN_NULL | 80 #define NO_DLOPEN_NULL |
75 #endif | 81 #endif |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 "2: br 1b \n" \ | 185 "2: br 1b \n" \ |
180 ".previous" \ | 186 ".previous" \ |
181 : [ret] "=&r" (__atomic_ret), \ | 187 : [ret] "=&r" (__atomic_ret), \ |
182 [tmp] "=&r"(__atomic_tmp), \ | 188 [tmp] "=&r"(__atomic_tmp), \ |
183 [val] "=m" (*ptr) \ | 189 [val] "=m" (*ptr) \ |
184 : [newval] "Ir" (n), "m" (*ptr)); \ | 190 : [newval] "Ir" (n), "m" (*ptr)); \ |
185 __atomic_ret; \ | 191 __atomic_ret; \ |
186 }) | 192 }) |
187 #endif | 193 #endif |
188 | 194 |
189 #if defined(__arm__) | 195 #if defined(__arm__) || defined(__aarch64__) |
190 #if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) | 196 #if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) |
191 /* Use GCC built-in functions */ | 197 /* Use GCC built-in functions */ |
192 #define _PR_HAVE_ATOMIC_OPS | 198 #define _PR_HAVE_ATOMIC_OPS |
193 #define _MD_INIT_ATOMIC() | 199 #define _MD_INIT_ATOMIC() |
194 | 200 |
195 #define _MD_ATOMIC_INCREMENT(ptr) __sync_add_and_fetch(ptr, 1) | 201 #define _MD_ATOMIC_INCREMENT(ptr) __sync_add_and_fetch(ptr, 1) |
196 #define _MD_ATOMIC_DECREMENT(ptr) __sync_sub_and_fetch(ptr, 1) | 202 #define _MD_ATOMIC_DECREMENT(ptr) __sync_sub_and_fetch(ptr, 1) |
197 #define _MD_ATOMIC_SET(ptr, nv) __sync_lock_test_and_set(ptr, nv) | 203 #define _MD_ATOMIC_SET(ptr, nv) __sync_lock_test_and_set(ptr, nv) |
198 #define _MD_ATOMIC_ADD(ptr, i) __sync_add_and_fetch(ptr, i) | 204 #define _MD_ATOMIC_ADD(ptr, i) __sync_add_and_fetch(ptr, i) |
199 | 205 |
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
643 int timeout); | 649 int timeout); |
644 #define _MD_POLL __syscall_poll | 650 #define _MD_POLL __syscall_poll |
645 #endif | 651 #endif |
646 | 652 |
647 /* For writev() */ | 653 /* For writev() */ |
648 #include <sys/uio.h> | 654 #include <sys/uio.h> |
649 | 655 |
650 extern void _MD_linux_map_sendfile_error(int err); | 656 extern void _MD_linux_map_sendfile_error(int err); |
651 | 657 |
652 #endif /* nspr_linux_defs_h___ */ | 658 #endif /* nspr_linux_defs_h___ */ |
OLD | NEW |