Home | History | Annotate | Download | only in include
      1 //===------------------------- __libunwind_config.h -----------------------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is dual licensed under the MIT and the University of Illinois Open
      6 // Source Licenses. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 #ifndef ____LIBUNWIND_CONFIG_H__
     11 #define ____LIBUNWIND_CONFIG_H__
     12 
     13 #if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \
     14     !defined(__ARM_DWARF_EH__)
     15 #define _LIBUNWIND_ARM_EHABI
     16 #endif
     17 
     18 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86       8
     19 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64    32
     20 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC       112
     21 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64     95
     22 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM       287
     23 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K      31
     24 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS      65
     25 
     26 #if defined(_LIBUNWIND_IS_NATIVE_ONLY)
     27 # if defined(__i386__)
     28 #  define _LIBUNWIND_TARGET_I386
     29 #  define _LIBUNWIND_CONTEXT_SIZE 8
     30 #  define _LIBUNWIND_CURSOR_SIZE 15
     31 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86
     32 # elif defined(__x86_64__)
     33 #  define _LIBUNWIND_TARGET_X86_64 1
     34 #  if defined(_WIN64)
     35 #    define _LIBUNWIND_CONTEXT_SIZE 54
     36 #    define _LIBUNWIND_CURSOR_SIZE 66
     37 #  else
     38 #    define _LIBUNWIND_CONTEXT_SIZE 21
     39 #    define _LIBUNWIND_CURSOR_SIZE 33
     40 #  endif
     41 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64
     42 # elif defined(__ppc__)
     43 #  define _LIBUNWIND_TARGET_PPC 1
     44 #  define _LIBUNWIND_CONTEXT_SIZE 117
     45 #  define _LIBUNWIND_CURSOR_SIZE 124
     46 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC
     47 # elif defined(__aarch64__)
     48 #  define _LIBUNWIND_TARGET_AARCH64 1
     49 #  define _LIBUNWIND_CONTEXT_SIZE 66
     50 #  define _LIBUNWIND_CURSOR_SIZE 78
     51 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64
     52 # elif defined(__arm__)
     53 #  define _LIBUNWIND_TARGET_ARM 1
     54 #  if defined(__ARM_WMMX)
     55 #    define _LIBUNWIND_CONTEXT_SIZE 61
     56 #    define _LIBUNWIND_CURSOR_SIZE 68
     57 #  else
     58 #    define _LIBUNWIND_CONTEXT_SIZE 42
     59 #    define _LIBUNWIND_CURSOR_SIZE 49
     60 #  endif
     61 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM
     62 # elif defined(__or1k__)
     63 #  define _LIBUNWIND_TARGET_OR1K 1
     64 #  define _LIBUNWIND_CONTEXT_SIZE 16
     65 #  define _LIBUNWIND_CURSOR_SIZE 24
     66 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K
     67 # elif defined(__mips__)
     68 #  if defined(_ABIO32) && defined(__mips_soft_float)
     69 #    define _LIBUNWIND_TARGET_MIPS_O32 1
     70 #    define _LIBUNWIND_CONTEXT_SIZE 18
     71 #    define _LIBUNWIND_CURSOR_SIZE 24
     72 #  elif defined(_ABI64) && defined(__mips_soft_float)
     73 #    define _LIBUNWIND_TARGET_MIPS_N64 1
     74 #    define _LIBUNWIND_CONTEXT_SIZE 35
     75 #    define _LIBUNWIND_CURSOR_SIZE 47
     76 #  else
     77 #    error "Unsupported MIPS ABI and/or environment"
     78 #  endif
     79 #  define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS
     80 # else
     81 #  error "Unsupported architecture."
     82 # endif
     83 #else // !_LIBUNWIND_IS_NATIVE_ONLY
     84 # define _LIBUNWIND_TARGET_I386
     85 # define _LIBUNWIND_TARGET_X86_64 1
     86 # define _LIBUNWIND_TARGET_PPC 1
     87 # define _LIBUNWIND_TARGET_AARCH64 1
     88 # define _LIBUNWIND_TARGET_ARM 1
     89 # define _LIBUNWIND_TARGET_OR1K 1
     90 # define _LIBUNWIND_TARGET_MIPS_O32 1
     91 # define _LIBUNWIND_TARGET_MIPS_N64 1
     92 # define _LIBUNWIND_CONTEXT_SIZE 128
     93 # define _LIBUNWIND_CURSOR_SIZE 140
     94 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER 287
     95 #endif // _LIBUNWIND_IS_NATIVE_ONLY
     96 
     97 #endif // ____LIBUNWIND_CONFIG_H__
     98