| /* |
| * 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 WEBRTC_SYSTEM_WRAPPERS_INCLUDE_ASM_DEFINES_H_ |
| #define WEBRTC_SYSTEM_WRAPPERS_INCLUDE_ASM_DEFINES_H_ |
| |
| #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 |
| |
| #endif // WEBRTC_SYSTEM_WRAPPERS_INCLUDE_ASM_DEFINES_H_ |