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