177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao/* ===-- assembly.h - compiler-rt assembler support macros -----------------=== 277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao * 377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao * The LLVM Compiler Infrastructure 477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao * 577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao * This file is distributed under the University of Illinois Open Source 677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao * License. See LICENSE.TXT for details. 777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao * 877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao * ===----------------------------------------------------------------------=== 977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao * 1077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao * This file defines macros for use in compiler-rt assembler source. 1177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao * This file is not part of the interface of this library. 1277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao * 1377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao * ===----------------------------------------------------------------------=== 1477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao */ 1577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 1677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#ifndef COMPILERRT_ASSEMBLY_H 1777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#define COMPILERRT_ASSEMBLY_H 1877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 1977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#if defined(__POWERPC__) || defined(__powerpc__) || defined(__ppc__) 2077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#define SEPARATOR @ 2177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#else 2277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#define SEPARATOR ; 2377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#endif 2477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 2577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao/* We can't use __USER_LABEL_PREFIX__ here, it isn't possible to concatenate the 2677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao *values* of two macros. This is quite brittle, though. */ 2777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#if defined(__APPLE__) 2877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#define SYMBOL_NAME(name) _##name 2977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#else 3077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#define SYMBOL_NAME(name) name 3177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#endif 3277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 3377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#ifdef VISIBILITY_HIDDEN 3477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#define DEFINE_COMPILERRT_FUNCTION(name) \ 3577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao .globl SYMBOL_NAME(name) SEPARATOR \ 3677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao .private_extern SYMBOL_NAME(name) SEPARATOR \ 3777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao SYMBOL_NAME(name): 3877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#else 3977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#define DEFINE_COMPILERRT_FUNCTION(name) \ 4077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao .globl SYMBOL_NAME(name) SEPARATOR \ 4177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao SYMBOL_NAME(name): 4277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#endif 4377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 4477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#define DEFINE_COMPILERRT_PRIVATE_FUNCTION(name) \ 4577ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao .globl SYMBOL_NAME(name) SEPARATOR \ 4677ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao .private_extern SYMBOL_NAME(name) SEPARATOR \ 4777ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao SYMBOL_NAME(name): 4877ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 4977ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#define DEFINE_COMPILERRT_PRIVATE_FUNCTION_UNMANGLED(name) \ 5077ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao .globl name SEPARATOR \ 5177ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao .private_extern name SEPARATOR \ 5277ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao name: 5377ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao 5477ed6142daed1e068fbda64405d0de9845e40e1Shih-wei Liao#endif /* COMPILERRT_ASSEMBLY_H */ 55