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 28bl _\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 41bl \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 53strheq \reg1, \reg2, \num 54.endm 55#endif 56 57.text 58 59#endif // WEBRTC_SYSTEM_WRAPPERS_INTERFACE_ASM_DEFINES_H_ 60