10b57cec5SDimitry Andric //===------------------------- __libunwind_config.h -----------------------===// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric 90b57cec5SDimitry Andric #ifndef ____LIBUNWIND_CONFIG_H__ 100b57cec5SDimitry Andric #define ____LIBUNWIND_CONFIG_H__ 110b57cec5SDimitry Andric 120b57cec5SDimitry Andric #if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \ 130b57cec5SDimitry Andric !defined(__ARM_DWARF_EH__) 140b57cec5SDimitry Andric #define _LIBUNWIND_ARM_EHABI 150b57cec5SDimitry Andric #endif 160b57cec5SDimitry Andric 170b57cec5SDimitry Andric #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86 8 180b57cec5SDimitry Andric #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64 32 190b57cec5SDimitry Andric #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC 112 200b57cec5SDimitry Andric #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC64 116 210b57cec5SDimitry Andric #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64 95 220b57cec5SDimitry Andric #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM 287 230b57cec5SDimitry Andric #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K 32 240b57cec5SDimitry Andric #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_RISCV 95 250b57cec5SDimitry Andric #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS 65 260b57cec5SDimitry Andric #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC 31 27*480093f4SDimitry Andric #define _LIBUNWIND_HIGHEST_DWARF_REGISTER_RISCV 64 280b57cec5SDimitry Andric 290b57cec5SDimitry Andric #if defined(_LIBUNWIND_IS_NATIVE_ONLY) 300b57cec5SDimitry Andric # if defined(__i386__) 310b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_I386 320b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 8 330b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 15 340b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86 350b57cec5SDimitry Andric # elif defined(__x86_64__) 360b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_X86_64 1 370b57cec5SDimitry Andric # if defined(_WIN64) 380b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 54 390b57cec5SDimitry Andric # ifdef __SEH__ 400b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 204 410b57cec5SDimitry Andric # else 420b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 66 430b57cec5SDimitry Andric # endif 440b57cec5SDimitry Andric # else 450b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 21 460b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 33 470b57cec5SDimitry Andric # endif 480b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64 490b57cec5SDimitry Andric # elif defined(__powerpc64__) 500b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_PPC64 1 510b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 167 520b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 179 530b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC64 540b57cec5SDimitry Andric # elif defined(__ppc__) 550b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_PPC 1 560b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 117 570b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 124 580b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC 590b57cec5SDimitry Andric # elif defined(__aarch64__) 600b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_AARCH64 1 610b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 66 620b57cec5SDimitry Andric # if defined(__SEH__) 630b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 164 640b57cec5SDimitry Andric # else 650b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 78 660b57cec5SDimitry Andric # endif 670b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64 680b57cec5SDimitry Andric # elif defined(__arm__) 690b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_ARM 1 700b57cec5SDimitry Andric # if defined(__SEH__) 710b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 42 720b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 80 730b57cec5SDimitry Andric # elif defined(__ARM_WMMX) 740b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 61 750b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 68 760b57cec5SDimitry Andric # else 770b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 42 780b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 49 790b57cec5SDimitry Andric # endif 800b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM 810b57cec5SDimitry Andric # elif defined(__or1k__) 820b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_OR1K 1 830b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 16 840b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 24 850b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K 860b57cec5SDimitry Andric # elif defined(__riscv) 870b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_RISCV 1 880b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 64 890b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 76 900b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_RISCV 910b57cec5SDimitry Andric # define _LIBUNWIND_MAX_REGISTER 96 920b57cec5SDimitry Andric # elif defined(__mips__) 930b57cec5SDimitry Andric # if defined(_ABIO32) && _MIPS_SIM == _ABIO32 940b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_MIPS_O32 1 950b57cec5SDimitry Andric # if defined(__mips_hard_float) 960b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 50 970b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 57 980b57cec5SDimitry Andric # else 990b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 18 1000b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 24 1010b57cec5SDimitry Andric # endif 1020b57cec5SDimitry Andric # elif defined(_ABIN32) && _MIPS_SIM == _ABIN32 1030b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_MIPS_NEWABI 1 1040b57cec5SDimitry Andric # if defined(__mips_hard_float) 1050b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 67 1060b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 74 1070b57cec5SDimitry Andric # else 1080b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 35 1090b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 42 1100b57cec5SDimitry Andric # endif 1110b57cec5SDimitry Andric # elif defined(_ABI64) && _MIPS_SIM == _ABI64 1120b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_MIPS_NEWABI 1 1130b57cec5SDimitry Andric # if defined(__mips_hard_float) 1140b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 67 1150b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 79 1160b57cec5SDimitry Andric # else 1170b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 35 1180b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 47 1190b57cec5SDimitry Andric # endif 1200b57cec5SDimitry Andric # else 1210b57cec5SDimitry Andric # error "Unsupported MIPS ABI and/or environment" 1220b57cec5SDimitry Andric # endif 1230b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS 1240b57cec5SDimitry Andric # elif defined(__sparc__) 1250b57cec5SDimitry Andric #define _LIBUNWIND_TARGET_SPARC 1 1260b57cec5SDimitry Andric #define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC 1270b57cec5SDimitry Andric #define _LIBUNWIND_CONTEXT_SIZE 16 1288e4aef42SEd Maste #define _LIBUNWIND_CURSOR_SIZE 23 129*480093f4SDimitry Andric # elif defined(__riscv) 130*480093f4SDimitry Andric # if __riscv_xlen == 64 131*480093f4SDimitry Andric # define _LIBUNWIND_TARGET_RISCV 1 132*480093f4SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 64 133*480093f4SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 76 134*480093f4SDimitry Andric # else 135*480093f4SDimitry Andric # error "Unsupported RISC-V ABI" 136*480093f4SDimitry Andric # endif 137*480093f4SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_RISCV 1380b57cec5SDimitry Andric # else 1390b57cec5SDimitry Andric # error "Unsupported architecture." 1400b57cec5SDimitry Andric # endif 1410b57cec5SDimitry Andric #else // !_LIBUNWIND_IS_NATIVE_ONLY 1420b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_I386 1430b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_X86_64 1 1440b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_PPC 1 1450b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_PPC64 1 1460b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_AARCH64 1 1470b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_ARM 1 1480b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_OR1K 1 1490b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_MIPS_O32 1 1500b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_MIPS_NEWABI 1 1510b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_SPARC 1 152*480093f4SDimitry Andric # define _LIBUNWIND_TARGET_RISCV 1 1530b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 167 1540b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 179 1550b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER 287 1560b57cec5SDimitry Andric #endif // _LIBUNWIND_IS_NATIVE_ONLY 1570b57cec5SDimitry Andric 1580b57cec5SDimitry Andric #endif // ____LIBUNWIND_CONFIG_H__ 159