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 29bl _\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 47bl \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 60strheq \reg1, \reg2, \num 61.endm 62#endif 63 64.text 65 66#endif // WEBRTC_SYSTEM_WRAPPERS_INCLUDE_ASM_DEFINES_H_ 67