1//===------------------------- __libunwind_config.h -----------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef ____LIBUNWIND_CONFIG_H__
10#define ____LIBUNWIND_CONFIG_H__
11
12#if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \
13 !defined(__ARM_DWARF_EH__)
14#define _LIBUNWIND_ARM_EHABI
15#endif
16
17#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86 8
18#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64 32
19#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC 112
20#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC64 116
21#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64 95
22#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM 287
23#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K 32
24#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS 65
25#define _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC 31
26
27#if defined(_LIBUNWIND_IS_NATIVE_ONLY)
28# if defined(__i386__)
29# define _LIBUNWIND_TARGET_I386
30# define _LIBUNWIND_CONTEXT_SIZE 8
31# define _LIBUNWIND_CURSOR_SIZE 15
32# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86
33# elif defined(__x86_64__)
34# define _LIBUNWIND_TARGET_X86_64 1
35# if defined(_WIN64)
36# define _LIBUNWIND_CONTEXT_SIZE 54
37# ifdef __SEH__
38# define _LIBUNWIND_CURSOR_SIZE 204
39# else
40# define _LIBUNWIND_CURSOR_SIZE 66
41# endif
42# else
43# define _LIBUNWIND_CONTEXT_SIZE 21
44# define _LIBUNWIND_CURSOR_SIZE 33
45# endif
46# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64
47# elif defined(__powerpc64__)
48# define _LIBUNWIND_TARGET_PPC64 1
49# define _LIBUNWIND_CONTEXT_SIZE 167
50# define _LIBUNWIND_CURSOR_SIZE 179
51# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC64
52# elif defined(__ppc__)
53# define _LIBUNWIND_TARGET_PPC 1
54# define _LIBUNWIND_CONTEXT_SIZE 117
55# define _LIBUNWIND_CURSOR_SIZE 124
56# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC
57# elif defined(__aarch64__)
58# define _LIBUNWIND_TARGET_AARCH64 1
59# define _LIBUNWIND_CONTEXT_SIZE 66
60# if defined(__SEH__)
61# define _LIBUNWIND_CURSOR_SIZE 164
62# else
63# define _LIBUNWIND_CURSOR_SIZE 78
64# endif
65# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64
66# elif defined(__arm__)
67# define _LIBUNWIND_TARGET_ARM 1
68# if defined(__SEH__)
69# define _LIBUNWIND_CONTEXT_SIZE 42
70# define _LIBUNWIND_CURSOR_SIZE 80
71# elif defined(__ARM_WMMX)
72# define _LIBUNWIND_CONTEXT_SIZE 61
73# define _LIBUNWIND_CURSOR_SIZE 68
74# else
75# define _LIBUNWIND_CONTEXT_SIZE 42
76# define _LIBUNWIND_CURSOR_SIZE 49
77# endif
78# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM
79# elif defined(__or1k__)
80# define _LIBUNWIND_TARGET_OR1K 1
81# define _LIBUNWIND_CONTEXT_SIZE 16
82# define _LIBUNWIND_CURSOR_SIZE 24
83# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K
84# elif defined(__mips__)
85# if defined(_ABIO32) && _MIPS_SIM == _ABIO32
86# define _LIBUNWIND_TARGET_MIPS_O32 1
87# if defined(__mips_hard_float)
88# define _LIBUNWIND_CONTEXT_SIZE 50
89# define _LIBUNWIND_CURSOR_SIZE 57
90# else
91# define _LIBUNWIND_CONTEXT_SIZE 18
92# define _LIBUNWIND_CURSOR_SIZE 24
93# endif
94# elif defined(_ABIN32) && _MIPS_SIM == _ABIN32
95# define _LIBUNWIND_TARGET_MIPS_NEWABI 1
96# if defined(__mips_hard_float)
97# define _LIBUNWIND_CONTEXT_SIZE 67
98# define _LIBUNWIND_CURSOR_SIZE 74
99# else
100# define _LIBUNWIND_CONTEXT_SIZE 35
101# define _LIBUNWIND_CURSOR_SIZE 42
102# endif
103# elif defined(_ABI64) && _MIPS_SIM == _ABI64
104# define _LIBUNWIND_TARGET_MIPS_NEWABI 1
105# if defined(__mips_hard_float)
106# define _LIBUNWIND_CONTEXT_SIZE 67
107# define _LIBUNWIND_CURSOR_SIZE 79
108# else
109# define _LIBUNWIND_CONTEXT_SIZE 35
110# define _LIBUNWIND_CURSOR_SIZE 47
111# endif
112# else
113# error "Unsupported MIPS ABI and/or environment"
114# endif
115# define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS
116# elif defined(__sparc__)
117 #define _LIBUNWIND_TARGET_SPARC 1
118 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC
119 #define _LIBUNWIND_CONTEXT_SIZE 16
120 #define _LIBUNWIND_CURSOR_SIZE 23
121# else
122# error "Unsupported architecture."
123# endif
124#else // !_LIBUNWIND_IS_NATIVE_ONLY
125# define _LIBUNWIND_TARGET_I386
126# define _LIBUNWIND_TARGET_X86_64 1
127# define _LIBUNWIND_TARGET_PPC 1
128# define _LIBUNWIND_TARGET_PPC64 1
129# define _LIBUNWIND_TARGET_AARCH64 1
130# define _LIBUNWIND_TARGET_ARM 1
131# define _LIBUNWIND_TARGET_OR1K 1
132# define _LIBUNWIND_TARGET_MIPS_O32 1
133# define _LIBUNWIND_TARGET_MIPS_NEWABI 1
134# define _LIBUNWIND_TARGET_SPARC 1
135# define _LIBUNWIND_CONTEXT_SIZE 167
136# define _LIBUNWIND_CURSOR_SIZE 179
137# define _LIBUNWIND_HIGHEST_DWARF_REGISTER 287
138#endif // _LIBUNWIND_IS_NATIVE_ONLY
139
140#endif // ____LIBUNWIND_CONFIG_H__
141