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