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
29 bl _\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
47 bl \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
60 strheq \reg1, \reg2, \num
61 .endm
62 #endif
63 
64 .text
65 
66 #endif  // WEBRTC_SYSTEM_WRAPPERS_INCLUDE_ASM_DEFINES_H_
67