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