blob: fe4c05effcd2ee6543b2061db25f3fff887fba94 [file] [log] [blame]
kma@webrtc.org55cd78c2012-11-17 00:22:46 +00001/*
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
kjellanderd56d68c2015-11-02 02:12:41 -080011#ifndef WEBRTC_SYSTEM_WRAPPERS_INCLUDE_ASM_DEFINES_H_
12#define WEBRTC_SYSTEM_WRAPPERS_INCLUDE_ASM_DEFINES_H_
kma@webrtc.org55cd78c2012-11-17 00:22:46 +000013
kma@webrtc.org7877b0f2012-12-12 23:22:13 +000014#if defined(__linux__) && defined(__ELF__)
15.section .note.GNU-stack,"",%progbits
16#endif
17
kma@webrtc.org55cd78c2012-11-17 00:22:46 +000018// 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
andrew@webrtc.orga3823e22015-03-09 23:21:25 +000023.private_extern _\name
kma@webrtc.org55cd78c2012-11-17 00:22:46 +000024.endm
25.macro DEFINE_FUNCTION name
26_\name:
27.endm
kma@webrtc.org47829112013-01-24 01:37:33 +000028.macro CALL_FUNCTION name
29bl _\name
30.endm
kma@webrtc.org16d540e2013-01-25 03:18:05 +000031.macro GLOBAL_LABEL name
32.global _\name
andrew@webrtc.orga3823e22015-03-09 23:21:25 +000033.private_extern _\name
kma@webrtc.org16d540e2013-01-25 03:18:05 +000034.endm
kma@webrtc.org55cd78c2012-11-17 00:22:46 +000035#else
36.macro GLOBAL_FUNCTION name
37.global \name
andrew@webrtc.orga3823e22015-03-09 23:21:25 +000038.hidden \name
kma@webrtc.org55cd78c2012-11-17 00:22:46 +000039.endm
40.macro DEFINE_FUNCTION name
Wei Zhong80154f62015-04-28 13:51:53 -070041#if defined(__linux__) && defined(__ELF__)
42.type \name,%function
43#endif
kma@webrtc.org55cd78c2012-11-17 00:22:46 +000044\name:
45.endm
kma@webrtc.org47829112013-01-24 01:37:33 +000046.macro CALL_FUNCTION name
47bl \name
48.endm
kma@webrtc.org16d540e2013-01-25 03:18:05 +000049.macro GLOBAL_LABEL name
50.global \name
andrew@webrtc.orga3823e22015-03-09 23:21:25 +000051.hidden \name
kma@webrtc.org16d540e2013-01-25 03:18:05 +000052.endm
kma@webrtc.org55cd78c2012-11-17 00:22:46 +000053#endif
54
kma@webrtc.orga0936a62013-03-01 00:20:10 +000055// With Apple's clang compiler, for instructions ldrb, strh, etc.,
kma@webrtc.org2f9bd242013-02-23 04:16:59 +000056// the condition code is after the width specifier. Here we define
57// only the ones that are actually used in the assembly files.
kma@webrtc.orga0936a62013-03-01 00:20:10 +000058#if (defined __llvm__) && (defined __APPLE__)
kma@webrtc.org2f9bd242013-02-23 04:16:59 +000059.macro streqh reg1, reg2, num
60strheq \reg1, \reg2, \num
61.endm
62#endif
63
kma@webrtc.org7877b0f2012-12-12 23:22:13 +000064.text
65
kjellanderd56d68c2015-11-02 02:12:41 -080066#endif // WEBRTC_SYSTEM_WRAPPERS_INCLUDE_ASM_DEFINES_H_