OLD | NEW |
---|---|
1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This file is an internal atomic implementation, use atomicops.h instead. | 5 // This file is an internal atomic implementation, use atomicops.h instead. |
6 // | 6 // |
7 // LinuxKernelCmpxchg and Barrier_AtomicIncrement are from Google Gears. | 7 // LinuxKernelCmpxchg and Barrier_AtomicIncrement are from Google Gears. |
8 | 8 |
9 #ifndef V8_ATOMICOPS_INTERNALS_ARM_GCC_H_ | 9 #ifndef V8_BASE_ATOMICOPS_INTERNALS_ARM_GCC_H_ |
10 #define V8_ATOMICOPS_INTERNALS_ARM_GCC_H_ | 10 #define V8_BASE_ATOMICOPS_INTERNALS_ARM_GCC_H_ |
11 | 11 |
12 #if defined(__QNXNTO__) | 12 #if defined(__QNXNTO__) |
13 #include <sys/cpuinline.h> | 13 #include <sys/cpuinline.h> |
14 #endif | 14 #endif |
15 | 15 |
16 namespace v8 { | 16 namespace v8 { |
17 namespace internal { | 17 namespace base { |
18 | 18 |
19 // Memory barriers on ARM are funky, but the kernel is here to help: | 19 // Memory barriers on ARM are funky, but the kernel is here to help: |
20 // | 20 // |
21 // * ARMv5 didn't support SMP, there is no memory barrier instruction at | 21 // * ARMv5 didn't support SMP, there is no memory barrier instruction at |
22 // all on this architecture, or when targeting its machine code. | 22 // all on this architecture, or when targeting its machine code. |
23 // | 23 // |
24 // * Some ARMv6 CPUs support SMP. A full memory barrier can be produced by | 24 // * Some ARMv6 CPUs support SMP. A full memory barrier can be produced by |
25 // writing a random value to a very specific coprocessor register. | 25 // writing a random value to a very specific coprocessor register. |
26 // | 26 // |
27 // * On ARMv7, the "dmb" instruction is used to perform a full memory | 27 // * On ARMv7, the "dmb" instruction is used to perform a full memory |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
289 } | 289 } |
290 | 290 |
291 // Byte accessors. | 291 // Byte accessors. |
292 | 292 |
293 inline void NoBarrier_Store(volatile Atomic8* ptr, Atomic8 value) { | 293 inline void NoBarrier_Store(volatile Atomic8* ptr, Atomic8 value) { |
294 *ptr = value; | 294 *ptr = value; |
295 } | 295 } |
296 | 296 |
297 inline Atomic8 NoBarrier_Load(volatile const Atomic8* ptr) { return *ptr; } | 297 inline Atomic8 NoBarrier_Load(volatile const Atomic8* ptr) { return *ptr; } |
298 | 298 |
299 } } // namespace v8::internal | 299 } } // namespace v8::bae |
Jakob Kummerow
2014/06/05 11:49:06
nit: typo
| |
300 | 300 |
301 #endif // V8_ATOMICOPS_INTERNALS_ARM_GCC_H_ | 301 #endif // V8_BASE_ATOMICOPS_INTERNALS_ARM_GCC_H_ |
OLD | NEW |