Home | History | Annotate | Download | only in ports
      1 /*
      2  * Copyright 2014 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #ifndef SkBarriers_arm_DEFINED
      9 #define SkBarriers_arm_DEFINED
     10 
     11 static inline void sk_compiler_barrier() { asm volatile("" : : : "memory"); }
     12 
     13 template <typename T>
     14 T sk_acquire_load(T* ptr) {
     15     T val = *ptr;
     16     __sync_synchronize();  // Issue a full barrier, which is an overkill acquire barrier.
     17     return val;
     18 }
     19 
     20 template <typename T>
     21 void sk_release_store(T* ptr, T val) {
     22     __sync_synchronize();  // Issue a full barrier, which is an overkill release barrier.
     23     *ptr = val;
     24 }
     25 
     26 #endif//SkBarriers_x86_DEFINED
     27