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