| /* | |
| * 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_ |