BVB Source Codes

mars Show caps_gcc_arm.hpp Source code

Return Download mars: download caps_gcc_arm.hpp Source code - Download mars Source code - Type:.hpp
  1. /*
  2.  * Distributed under the Boost Software License, Version 1.0.
  3.  * (See accompanying file LICENSE_1_0.txt or copy at
  4.  * http://www.boost.org/LICENSE_1_0.txt)
  5.  *
  6.  * Copyright (c) 2009 Helge Bahmann
  7.  * Copyright (c) 2009 Phil Endecott
  8.  * Copyright (c) 2013 Tim Blechmann
  9.  * ARM Code by Phil Endecott, based on other architectures.
  10.  * Copyright (c) 2014 Andrey Semashev
  11.  */
  12. /*!
  13.  * \file   atomic/detail/caps_gcc_arm.hpp
  14.  *
  15.  * This header defines feature capabilities macros
  16.  */
  17.  
  18. #ifndef BOOST_ATOMIC_DETAIL_CAPS_GCC_ARM_HPP_INCLUDED_
  19. #define BOOST_ATOMIC_DETAIL_CAPS_GCC_ARM_HPP_INCLUDED_
  20.  
  21. #include <boost/atomic/detail/config.hpp>
  22.  
  23. #ifdef BOOST_HAS_PRAGMA_ONCE
  24. #pragma once
  25. #endif
  26.  
  27. #if !(defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6ZK__))
  28. // ARMv7 and later have dmb instruction
  29. #define BOOST_ATOMIC_DETAIL_ARM_HAS_DMB 1
  30. #endif
  31.  
  32. #if !(defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6Z__))
  33. // ARMv6k and ARMv7 have 8 and 16 ldrex/strex variants
  34. #define BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXB_STREXB 1
  35. #define BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXH_STREXH 1
  36. #if !(((defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6ZK__)) && defined(__thumb__)) || defined(__ARM_ARCH_7M__))
  37. // ARMv6k and ARMv7 except ARMv7-M have 64-bit ldrex/strex variants.
  38. // Unfortunately, GCC (at least 4.7.3 on Ubuntu) does not allocate register pairs properly when targeting ARMv6k Thumb,
  39. // which is required for ldrexd/strexd instructions, so we disable 64-bit support. When targeting ARMv6k ARM
  40. // or ARMv7 (both ARM and Thumb 2) it works as expected.
  41. #define BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXD_STREXD 1
  42. #endif
  43. #endif
  44.  
  45. #define BOOST_ATOMIC_INT8_LOCK_FREE 2
  46. #define BOOST_ATOMIC_INT16_LOCK_FREE 2
  47. #define BOOST_ATOMIC_INT32_LOCK_FREE 2
  48. #if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXD_STREXD)
  49. #define BOOST_ATOMIC_INT64_LOCK_FREE 2
  50. #endif
  51. #define BOOST_ATOMIC_POINTER_LOCK_FREE 2
  52.  
  53. #define BOOST_ATOMIC_THREAD_FENCE 2
  54. #define BOOST_ATOMIC_SIGNAL_FENCE 2
  55.  
  56. #endif // BOOST_ATOMIC_DETAIL_CAPS_GCC_ARM_HPP_INCLUDED_
  57.  
downloadcaps_gcc_arm.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top