1 //===------------------------- __libunwind_config.h -----------------------===//
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
7 //===----------------------------------------------------------------------===//
9 #ifndef ____LIBUNWIND_CONFIG_H__
10 #define ____LIBUNWIND_CONFIG_H__
12 #if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \
13 !defined(__ARM_DWARF_EH__)
14 #define _LIBUNWIND_ARM_EHABI
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 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_HEXAGON 34
27 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_RISCV 64
29 #if defined(_LIBUNWIND_IS_NATIVE_ONLY)
30 # if defined(__i386__)
31 # define _LIBUNWIND_TARGET_I386
32 # define _LIBUNWIND_CONTEXT_SIZE 8
33 # define _LIBUNWIND_CURSOR_SIZE 15
34 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86
35 # elif defined(__x86_64__)
36 # define _LIBUNWIND_TARGET_X86_64 1
38 # define _LIBUNWIND_CONTEXT_SIZE 54
40 # define _LIBUNWIND_CURSOR_SIZE 204
42 # define _LIBUNWIND_CURSOR_SIZE 66
45 # define _LIBUNWIND_CONTEXT_SIZE 21
46 # define _LIBUNWIND_CURSOR_SIZE 33
48 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64
49 # elif defined(__powerpc64__)
50 # define _LIBUNWIND_TARGET_PPC64 1
51 # define _LIBUNWIND_CONTEXT_SIZE 167
52 # define _LIBUNWIND_CURSOR_SIZE 179
53 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC64
54 # elif defined(__ppc__)
55 # define _LIBUNWIND_TARGET_PPC 1
56 # define _LIBUNWIND_CONTEXT_SIZE 117
57 # define _LIBUNWIND_CURSOR_SIZE 124
58 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC
59 # elif defined(__aarch64__)
60 # define _LIBUNWIND_TARGET_AARCH64 1
61 # define _LIBUNWIND_CONTEXT_SIZE 66
63 # define _LIBUNWIND_CURSOR_SIZE 164
65 # define _LIBUNWIND_CURSOR_SIZE 78
67 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64
68 # elif defined(__arm__)
69 # define _LIBUNWIND_TARGET_ARM 1
71 # define _LIBUNWIND_CONTEXT_SIZE 42
72 # define _LIBUNWIND_CURSOR_SIZE 80
73 # elif defined(__ARM_WMMX)
74 # define _LIBUNWIND_CONTEXT_SIZE 61
75 # define _LIBUNWIND_CURSOR_SIZE 68
77 # define _LIBUNWIND_CONTEXT_SIZE 42
78 # define _LIBUNWIND_CURSOR_SIZE 49
80 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM
81 # elif defined(__or1k__)
82 # define _LIBUNWIND_TARGET_OR1K 1
83 # define _LIBUNWIND_CONTEXT_SIZE 16
84 # define _LIBUNWIND_CURSOR_SIZE 24
85 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K
86 # elif defined(__hexagon__)
87 # define _LIBUNWIND_TARGET_HEXAGON 1
88 // Values here change when : Registers.hpp - hexagon_thread_state_t change
89 # define _LIBUNWIND_CONTEXT_SIZE 18
90 # define _LIBUNWIND_CURSOR_SIZE 24
91 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_HEXAGON
92 # elif defined(__mips__)
93 # if defined(_ABIO32) && _MIPS_SIM == _ABIO32
94 # define _LIBUNWIND_TARGET_MIPS_O32 1
95 # if defined(__mips_hard_float)
96 # define _LIBUNWIND_CONTEXT_SIZE 50
97 # define _LIBUNWIND_CURSOR_SIZE 57
99 # define _LIBUNWIND_CONTEXT_SIZE 18
100 # define _LIBUNWIND_CURSOR_SIZE 24
102 # elif defined(_ABIN32) && _MIPS_SIM == _ABIN32
103 # define _LIBUNWIND_TARGET_MIPS_NEWABI 1
104 # if defined(__mips_hard_float)
105 # define _LIBUNWIND_CONTEXT_SIZE 67
106 # define _LIBUNWIND_CURSOR_SIZE 74
108 # define _LIBUNWIND_CONTEXT_SIZE 35
109 # define _LIBUNWIND_CURSOR_SIZE 42
111 # elif defined(_ABI64) && _MIPS_SIM == _ABI64
112 # define _LIBUNWIND_TARGET_MIPS_NEWABI 1
113 # if defined(__mips_hard_float)
114 # define _LIBUNWIND_CONTEXT_SIZE 67
115 # define _LIBUNWIND_CURSOR_SIZE 79
117 # define _LIBUNWIND_CONTEXT_SIZE 35
118 # define _LIBUNWIND_CURSOR_SIZE 47
121 # error "Unsupported MIPS ABI and/or environment"
123 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS
124 # elif defined(__sparc__)
125 #define _LIBUNWIND_TARGET_SPARC 1
126 #define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC
127 #define _LIBUNWIND_CONTEXT_SIZE 16
128 #define _LIBUNWIND_CURSOR_SIZE 23
129 # elif defined(__riscv)
130 # if __riscv_xlen == 64
131 # define _LIBUNWIND_TARGET_RISCV 1
132 # define _LIBUNWIND_CONTEXT_SIZE 64
133 # define _LIBUNWIND_CURSOR_SIZE 76
135 # error "Unsupported RISC-V ABI"
137 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_RISCV
139 # error "Unsupported architecture."
141 #else // !_LIBUNWIND_IS_NATIVE_ONLY
142 # define _LIBUNWIND_TARGET_I386
143 # define _LIBUNWIND_TARGET_X86_64 1
144 # define _LIBUNWIND_TARGET_PPC 1
145 # define _LIBUNWIND_TARGET_PPC64 1
146 # define _LIBUNWIND_TARGET_AARCH64 1
147 # define _LIBUNWIND_TARGET_ARM 1
148 # define _LIBUNWIND_TARGET_OR1K 1
149 # define _LIBUNWIND_TARGET_MIPS_O32 1
150 # define _LIBUNWIND_TARGET_MIPS_NEWABI 1
151 # define _LIBUNWIND_TARGET_SPARC 1
152 # define _LIBUNWIND_TARGET_HEXAGON 1
153 # define _LIBUNWIND_TARGET_RISCV 1
154 # define _LIBUNWIND_CONTEXT_SIZE 167
155 # define _LIBUNWIND_CURSOR_SIZE 179
156 # define _LIBUNWIND_HIGHEST_DWARF_REGISTER 287
157 #endif // _LIBUNWIND_IS_NATIVE_ONLY
159 #endif // ____LIBUNWIND_CONFIG_H__