Home | History | Annotate | Download | only in interface
      1 /*
      2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #ifndef WEBRTC_SYSTEM_WRAPPERS_INTERFACE_ASM_DEFINES_H_
     12 #define WEBRTC_SYSTEM_WRAPPERS_INTERFACE_ASM_DEFINES_H_
     13 
     14 #if defined(__linux__) && defined(__ELF__)
     15 .section .note.GNU-stack,"",%progbits
     16 #endif
     17 
     18 // Define the macros used in ARM assembly code, so that for Mac or iOS builds
     19 // we add leading underscores for the function names.
     20 #ifdef __APPLE__
     21 .macro GLOBAL_FUNCTION name
     22 .global _\name
     23 .endm
     24 .macro DEFINE_FUNCTION name
     25 _\name:
     26 .endm
     27 .macro CALL_FUNCTION name
     28 bl _\name
     29 .endm
     30 .macro GLOBAL_LABEL name
     31 .global _\name
     32 .endm
     33 #else
     34 .macro GLOBAL_FUNCTION name
     35 .global \name
     36 .endm
     37 .macro DEFINE_FUNCTION name
     38 \name:
     39 .endm
     40 .macro CALL_FUNCTION name
     41 bl \name
     42 .endm
     43 .macro GLOBAL_LABEL name
     44 .global \name
     45 .endm
     46 #endif
     47 
     48 // With Apple's clang compiler, for instructions ldrb, strh, etc.,
     49 // the condition code is after the width specifier. Here we define
     50 // only the ones that are actually used in the assembly files.
     51 #if (defined __llvm__) && (defined __APPLE__)
     52 .macro streqh reg1, reg2, num
     53 strheq \reg1, \reg2, \num
     54 .endm
     55 #endif
     56 
     57 .text
     58 
     59 #endif  // WEBRTC_SYSTEM_WRAPPERS_INTERFACE_ASM_DEFINES_H_
     60