73 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
| /*
 | |
|  *  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 RTC_BASE_SYSTEM_ASM_DEFINES_H_
 | |
| #define RTC_BASE_SYSTEM_ASM_DEFINES_H_
 | |
| 
 | |
| // clang-format off
 | |
| // clang formatting breaks everything here, e.g. concatenating directives,
 | |
| // due to absence of context via asm keyword.
 | |
| 
 | |
| #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
 | |
| 
 | |
| // clang-format on
 | |
| 
 | |
| #endif  // RTC_BASE_SYSTEM_ASM_DEFINES_H_
 |