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_INCLUDE_ASM_DEFINES_H_ 12 #define WEBRTC_SYSTEM_WRAPPERS_INCLUDE_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 .private_extern _\name 24 .endm 25 .macro DEFINE_FUNCTION name 26 _\name: 27 .endm 28 .macro CALL_FUNCTION name 29 bl _\name 30 .endm 31 .macro GLOBAL_LABEL name 32 .global _\name 33 .private_extern _\name 34 .endm 35 #else 36 .macro GLOBAL_FUNCTION name 37 .global \name 38 .hidden \name 39 .endm 40 .macro DEFINE_FUNCTION name 41 #if defined(__linux__) && defined(__ELF__) 42 .type \name,%function 43 #endif 44 \name: 45 .endm 46 .macro CALL_FUNCTION name 47 bl \name 48 .endm 49 .macro GLOBAL_LABEL name 50 .global \name 51 .hidden \name 52 .endm 53 #endif 54 55 // With Apple's clang compiler, for instructions ldrb, strh, etc., 56 // the condition code is after the width specifier. Here we define 57 // only the ones that are actually used in the assembly files. 58 #if (defined __llvm__) && (defined __APPLE__) 59 .macro streqh reg1, reg2, num 60 strheq \reg1, \reg2, \num 61 .endm 62 #endif 63 64 .text 65 66 #endif // WEBRTC_SYSTEM_WRAPPERS_INCLUDE_ASM_DEFINES_H_ 67