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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 #elif defined(__s390x__) | 48 #elif defined(__s390x__) |
49 #define _PR_SI_ARCHITECTURE "s390x" | 49 #define _PR_SI_ARCHITECTURE "s390x" |
50 #elif defined(__s390__) | 50 #elif defined(__s390__) |
51 #define _PR_SI_ARCHITECTURE "s390" | 51 #define _PR_SI_ARCHITECTURE "s390" |
52 #elif defined(__sh__) | 52 #elif defined(__sh__) |
53 #define _PR_SI_ARCHITECTURE "sh" | 53 #define _PR_SI_ARCHITECTURE "sh" |
54 #elif defined(__avr32__) | 54 #elif defined(__avr32__) |
55 #define _PR_SI_ARCHITECTURE "avr32" | 55 #define _PR_SI_ARCHITECTURE "avr32" |
56 #elif defined(__m32r__) | 56 #elif defined(__m32r__) |
57 #define _PR_SI_ARCHITECTURE "m32r" | 57 #define _PR_SI_ARCHITECTURE "m32r" |
| 58 #elif defined(__or1k__) |
| 59 #define _PR_SI_ARCHITECTURE "or1k" |
58 #else | 60 #else |
59 #error "Unknown CPU architecture" | 61 #error "Unknown CPU architecture" |
60 #endif | 62 #endif |
61 #define PR_DLL_SUFFIX ".so" | 63 #define PR_DLL_SUFFIX ".so" |
62 | 64 |
63 #define _PR_VMBASE 0x30000000 | 65 #define _PR_VMBASE 0x30000000 |
64 #define _PR_STACK_VMBASE 0x50000000 | 66 #define _PR_STACK_VMBASE 0x50000000 |
65 #define _MD_DEFAULT_STACK_SIZE 65536L | 67 #define _MD_DEFAULT_STACK_SIZE 65536L |
66 #define _MD_MMAP_FLAGS MAP_PRIVATE | 68 #define _MD_MMAP_FLAGS MAP_PRIVATE |
67 | 69 |
68 #if defined(__aarch64__) | 70 #if defined(__aarch64__) || defined(__mips__) |
69 #define _MD_MINIMUM_STACK_SIZE 0x20000 | 71 #define _MD_MINIMUM_STACK_SIZE 0x20000 |
70 #endif | 72 #endif |
71 | 73 |
72 #undef HAVE_STACK_GROWING_UP | 74 #undef HAVE_STACK_GROWING_UP |
73 | 75 |
74 /* | 76 /* |
75 * Elf linux supports dl* functions | 77 * Elf linux supports dl* functions |
76 */ | 78 */ |
77 #define HAVE_DLL | 79 #define HAVE_DLL |
78 #define USE_DLFCN | 80 #define USE_DLFCN |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
116 extern PRInt32 _PR_x86_64_AtomicIncrement(PRInt32 *val); | 118 extern PRInt32 _PR_x86_64_AtomicIncrement(PRInt32 *val); |
117 #define _MD_ATOMIC_INCREMENT _PR_x86_64_AtomicIncrement | 119 #define _MD_ATOMIC_INCREMENT _PR_x86_64_AtomicIncrement |
118 extern PRInt32 _PR_x86_64_AtomicDecrement(PRInt32 *val); | 120 extern PRInt32 _PR_x86_64_AtomicDecrement(PRInt32 *val); |
119 #define _MD_ATOMIC_DECREMENT _PR_x86_64_AtomicDecrement | 121 #define _MD_ATOMIC_DECREMENT _PR_x86_64_AtomicDecrement |
120 extern PRInt32 _PR_x86_64_AtomicAdd(PRInt32 *ptr, PRInt32 val); | 122 extern PRInt32 _PR_x86_64_AtomicAdd(PRInt32 *ptr, PRInt32 val); |
121 #define _MD_ATOMIC_ADD _PR_x86_64_AtomicAdd | 123 #define _MD_ATOMIC_ADD _PR_x86_64_AtomicAdd |
122 extern PRInt32 _PR_x86_64_AtomicSet(PRInt32 *val, PRInt32 newval); | 124 extern PRInt32 _PR_x86_64_AtomicSet(PRInt32 *val, PRInt32 newval); |
123 #define _MD_ATOMIC_SET _PR_x86_64_AtomicSet | 125 #define _MD_ATOMIC_SET _PR_x86_64_AtomicSet |
124 #endif | 126 #endif |
125 | 127 |
| 128 #if defined(__or1k__) |
| 129 #if defined(__GNUC__) |
| 130 /* Use GCC built-in functions */ |
| 131 #define _PR_HAVE_ATOMIC_OPS |
| 132 #define _MD_INIT_ATOMIC() |
| 133 #define _MD_ATOMIC_INCREMENT(ptr) __sync_add_and_fetch(ptr, 1) |
| 134 #define _MD_ATOMIC_DECREMENT(ptr) __sync_sub_and_fetch(ptr, 1) |
| 135 #define _MD_ATOMIC_ADD(ptr, i) __sync_add_and_fetch(ptr, i) |
| 136 #define _MD_ATOMIC_SET(ptr, nv) __sync_lock_test_and_set(ptr, nv) |
| 137 #endif |
| 138 #endif |
| 139 |
126 #if defined(__powerpc__) && !defined(__powerpc64__) | 140 #if defined(__powerpc__) && !defined(__powerpc64__) |
127 #define _PR_HAVE_ATOMIC_OPS | 141 #define _PR_HAVE_ATOMIC_OPS |
128 #define _MD_INIT_ATOMIC() | 142 #define _MD_INIT_ATOMIC() |
129 extern PRInt32 _PR_ppc_AtomicIncrement(PRInt32 *val); | 143 extern PRInt32 _PR_ppc_AtomicIncrement(PRInt32 *val); |
130 #define _MD_ATOMIC_INCREMENT _PR_ppc_AtomicIncrement | 144 #define _MD_ATOMIC_INCREMENT _PR_ppc_AtomicIncrement |
131 extern PRInt32 _PR_ppc_AtomicDecrement(PRInt32 *val); | 145 extern PRInt32 _PR_ppc_AtomicDecrement(PRInt32 *val); |
132 #define _MD_ATOMIC_DECREMENT _PR_ppc_AtomicDecrement | 146 #define _MD_ATOMIC_DECREMENT _PR_ppc_AtomicDecrement |
133 extern PRInt32 _PR_ppc_AtomicAdd(PRInt32 *ptr, PRInt32 val); | 147 extern PRInt32 _PR_ppc_AtomicAdd(PRInt32 *ptr, PRInt32 val); |
134 #define _MD_ATOMIC_ADD _PR_ppc_AtomicAdd | 148 #define _MD_ATOMIC_ADD _PR_ppc_AtomicAdd |
135 extern PRInt32 _PR_ppc_AtomicSet(PRInt32 *val, PRInt32 newval); | 149 extern PRInt32 _PR_ppc_AtomicSet(PRInt32 *val, PRInt32 newval); |
136 #define _MD_ATOMIC_SET _PR_ppc_AtomicSet | 150 #define _MD_ATOMIC_SET _PR_ppc_AtomicSet |
137 #endif | 151 #endif |
138 | 152 |
139 #if defined(__powerpc64__) | 153 #if defined(__powerpc64__) |
140 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) | 154 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) |
141 /* Use GCC built-in functions */ | 155 /* Use GCC built-in functions */ |
142 #define _PR_HAVE_ATOMIC_OPS | 156 #define _PR_HAVE_ATOMIC_OPS |
143 #define _MD_INIT_ATOMIC() | 157 #define _MD_INIT_ATOMIC() |
144 #define _MD_ATOMIC_INCREMENT(ptr) __sync_add_and_fetch(ptr, 1) | 158 #define _MD_ATOMIC_INCREMENT(ptr) __sync_add_and_fetch(ptr, 1) |
145 #define _MD_ATOMIC_DECREMENT(ptr) __sync_sub_and_fetch(ptr, 1) | 159 #define _MD_ATOMIC_DECREMENT(ptr) __sync_sub_and_fetch(ptr, 1) |
146 #define _MD_ATOMIC_ADD(ptr, i) __sync_add_and_fetch(ptr, i) | 160 #define _MD_ATOMIC_ADD(ptr, i) __sync_add_and_fetch(ptr, i) |
147 #define _MD_ATOMIC_SET(ptr, nv) __sync_lock_test_and_set(ptr, nv) | 161 #define _MD_ATOMIC_SET(ptr, nv) __sync_lock_test_and_set(ptr, nv) |
148 #endif | 162 #endif |
149 #endif | 163 #endif |
150 | 164 |
| 165 #if defined(__mips__) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) |
| 166 /* Use GCC built-in functions */ |
| 167 #define _PR_HAVE_ATOMIC_OPS |
| 168 #define _MD_INIT_ATOMIC() |
| 169 #define _MD_ATOMIC_INCREMENT(ptr) __sync_add_and_fetch(ptr, 1) |
| 170 #define _MD_ATOMIC_DECREMENT(ptr) __sync_sub_and_fetch(ptr, 1) |
| 171 #define _MD_ATOMIC_ADD(ptr, i) __sync_add_and_fetch(ptr, i) |
| 172 #define _MD_ATOMIC_SET(ptr, nv) __sync_lock_test_and_set(ptr, nv) |
| 173 #endif |
| 174 |
151 #if defined(__alpha) | 175 #if defined(__alpha) |
152 #define _PR_HAVE_ATOMIC_OPS | 176 #define _PR_HAVE_ATOMIC_OPS |
153 #define _MD_INIT_ATOMIC() | 177 #define _MD_INIT_ATOMIC() |
154 #define _MD_ATOMIC_ADD(ptr, i) ({ \ | 178 #define _MD_ATOMIC_ADD(ptr, i) ({ \ |
155 PRInt32 __atomic_tmp, __atomic_ret; \ | 179 PRInt32 __atomic_tmp, __atomic_ret; \ |
156 __asm__ __volatile__( \ | 180 __asm__ __volatile__( \ |
157 "1: ldl_l %[ret], %[val] \n" \ | 181 "1: ldl_l %[ret], %[val] \n" \ |
158 " addl %[ret], %[inc], %[tmp] \n" \ | 182 " addl %[ret], %[inc], %[tmp] \n" \ |
159 " addl %[ret], %[inc], %[ret] \n" \ | 183 " addl %[ret], %[inc], %[ret] \n" \ |
160 " stl_c %[tmp], %[val] \n" \ | 184 " stl_c %[tmp], %[val] \n" \ |
(...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
661 int timeout); | 685 int timeout); |
662 #define _MD_POLL __syscall_poll | 686 #define _MD_POLL __syscall_poll |
663 #endif | 687 #endif |
664 | 688 |
665 /* For writev() */ | 689 /* For writev() */ |
666 #include <sys/uio.h> | 690 #include <sys/uio.h> |
667 | 691 |
668 extern void _MD_linux_map_sendfile_error(int err); | 692 extern void _MD_linux_map_sendfile_error(int err); |
669 | 693 |
670 #endif /* nspr_linux_defs_h___ */ | 694 #endif /* nspr_linux_defs_h___ */ |
OLD | NEW |