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