/* $Id$
 *
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements. See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to you under the Apache License, Version
 * 2.0 (the "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#if defined(OS_LINUX)
  #if defined(ARCH_X86_32)
    #include "Linux_X86_32/AtomicOperation.inc"
  #elif defined(ARCH_X86_64)
    #include "Linux_X86_64/AtomicOperation.inc"
  #elif defined(ARCH_ARMV7L)
    #include "Linux_ARM_V7L/AtomicOperation.inc"
  #endif
#elif defined(OS_WINDOWS)
  #if defined(ARCH_X86_32)
    #include "Windows_X86_32/AtomicOperation.inc"
  #elif defined(ARCH_X86_64)
    #include "Windows_X86_64/AtomicOperation.inc"
  #endif
#elif defined(OS_INTEGRITY)
  #if defined(ARCH_ARMV7L)
    #include "Integrity_ARM_V7L/AtomicOperation.inc"
  #endif
#elif defined(OS_QNX)
  #if defined(ARCH_X86_32)
    #include "Linux_X86_32/AtomicOperation.inc"
  #endif
#endif

