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_INTERFACE_ASM_DEFINES_H_
12#define WEBRTC_SYSTEM_WRAPPERS_INTERFACE_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.endm
24.macro DEFINE_FUNCTION name
25_\name:
26.endm
27.macro CALL_FUNCTION name
28bl _\name
29.endm
30.macro GLOBAL_LABEL name
31.global _\name
32.endm
33#else
34.macro GLOBAL_FUNCTION name
35.global \name
36.endm
37.macro DEFINE_FUNCTION name
38\name:
39.endm
40.macro CALL_FUNCTION name
41bl \name
42.endm
43.macro GLOBAL_LABEL name
44.global \name
45.endm
46#endif
47
48// With Apple's clang compiler, for instructions ldrb, strh, etc.,
49// the condition code is after the width specifier. Here we define
50// only the ones that are actually used in the assembly files.
51#if (defined __llvm__) && (defined __APPLE__)
52.macro streqh reg1, reg2, num
53strheq \reg1, \reg2, \num
54.endm
55#endif
56
57.text
58
59#endif  // WEBRTC_SYSTEM_WRAPPERS_INTERFACE_ASM_DEFINES_H_
60