Chromium Code Reviews| 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 |