|  | /* | 
|  | *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 
|  | * | 
|  | *  Use of this source code is governed by a BSD-style license | 
|  | *  that can be found in the LICENSE file in the root of the source | 
|  | *  tree. An additional intellectual property rights grant can be found | 
|  | *  in the file PATENTS.  All contributing project authors may | 
|  | *  be found in the AUTHORS file in the root of the source tree. | 
|  | */ | 
|  |  | 
|  | #ifndef RTC_BASE_SYSTEM_ASM_DEFINES_H_ | 
|  | #define RTC_BASE_SYSTEM_ASM_DEFINES_H_ | 
|  |  | 
|  | // clang-format off | 
|  | // clang formatting breaks everything here, e.g. concatenating directives, | 
|  | // due to absence of context via asm keyword. | 
|  |  | 
|  | #if defined(__linux__) && defined(__ELF__) | 
|  | .section .note.GNU-stack,"",%progbits | 
|  | #endif | 
|  |  | 
|  | // Define the macros used in ARM assembly code, so that for Mac or iOS builds | 
|  | // we add leading underscores for the function names. | 
|  | #ifdef __APPLE__ | 
|  | .macro GLOBAL_FUNCTION name | 
|  | .global _\name | 
|  | .private_extern _\name | 
|  | .endm | 
|  | .macro DEFINE_FUNCTION name | 
|  | _\name: | 
|  | .endm | 
|  | .macro CALL_FUNCTION name | 
|  | bl _\name | 
|  | .endm | 
|  | .macro GLOBAL_LABEL name | 
|  | .global _\name | 
|  | .private_extern _\name | 
|  | .endm | 
|  | #else | 
|  | .macro GLOBAL_FUNCTION name | 
|  | .global \name | 
|  | .hidden \name | 
|  | .endm | 
|  | .macro DEFINE_FUNCTION name | 
|  | #if defined(__linux__) && defined(__ELF__) | 
|  | .type \name,%function | 
|  | #endif | 
|  | \name: | 
|  | .endm | 
|  | .macro CALL_FUNCTION name | 
|  | bl \name | 
|  | .endm | 
|  | .macro GLOBAL_LABEL name | 
|  | .global \name | 
|  | .hidden \name | 
|  | .endm | 
|  | #endif | 
|  |  | 
|  | // With Apple's clang compiler, for instructions ldrb, strh, etc., | 
|  | // the condition code is after the width specifier. Here we define | 
|  | // only the ones that are actually used in the assembly files. | 
|  | #if (defined __llvm__) && (defined __APPLE__) | 
|  | .macro streqh reg1, reg2, num | 
|  | strheq \reg1, \reg2, \num | 
|  | .endm | 
|  | #endif | 
|  |  | 
|  | .text | 
|  |  | 
|  | // clang-format on | 
|  |  | 
|  | #endif  // RTC_BASE_SYSTEM_ASM_DEFINES_H_ |