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