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 270b57cec5SDimitry Andric 280b57cec5SDimitry Andric #if defined(_LIBUNWIND_IS_NATIVE_ONLY) 290b57cec5SDimitry Andric # if defined(__i386__) 300b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_I386 310b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 8 320b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 15 330b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86 340b57cec5SDimitry Andric # elif defined(__x86_64__) 350b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_X86_64 1 360b57cec5SDimitry Andric # if defined(_WIN64) 370b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 54 380b57cec5SDimitry Andric # ifdef __SEH__ 390b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 204 400b57cec5SDimitry Andric # else 410b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 66 420b57cec5SDimitry Andric # endif 430b57cec5SDimitry Andric # else 440b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 21 450b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 33 460b57cec5SDimitry Andric # endif 470b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_X86_64 480b57cec5SDimitry Andric # elif defined(__powerpc64__) 490b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_PPC64 1 500b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 167 510b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 179 520b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC64 530b57cec5SDimitry Andric # elif defined(__ppc__) 540b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_PPC 1 550b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 117 560b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 124 570b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_PPC 580b57cec5SDimitry Andric # elif defined(__aarch64__) 590b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_AARCH64 1 600b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 66 610b57cec5SDimitry Andric # if defined(__SEH__) 620b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 164 630b57cec5SDimitry Andric # else 640b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 78 650b57cec5SDimitry Andric # endif 660b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM64 670b57cec5SDimitry Andric # elif defined(__arm__) 680b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_ARM 1 690b57cec5SDimitry Andric # if defined(__SEH__) 700b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 42 710b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 80 720b57cec5SDimitry Andric # elif defined(__ARM_WMMX) 730b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 61 740b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 68 750b57cec5SDimitry Andric # else 760b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 42 770b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 49 780b57cec5SDimitry Andric # endif 790b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_ARM 800b57cec5SDimitry Andric # elif defined(__or1k__) 810b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_OR1K 1 820b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 16 830b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 24 840b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_OR1K 850b57cec5SDimitry Andric # elif defined(__riscv) 860b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_RISCV 1 870b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 64 880b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 76 890b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_RISCV 900b57cec5SDimitry Andric # define _LIBUNWIND_MAX_REGISTER 96 910b57cec5SDimitry Andric # elif defined(__mips__) 920b57cec5SDimitry Andric # if defined(_ABIO32) && _MIPS_SIM == _ABIO32 930b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_MIPS_O32 1 940b57cec5SDimitry Andric # if defined(__mips_hard_float) 950b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 50 960b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 57 970b57cec5SDimitry Andric # else 980b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 18 990b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 24 1000b57cec5SDimitry Andric # endif 1010b57cec5SDimitry Andric # elif defined(_ABIN32) && _MIPS_SIM == _ABIN32 1020b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_MIPS_NEWABI 1 1030b57cec5SDimitry Andric # if defined(__mips_hard_float) 1040b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 67 1050b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 74 1060b57cec5SDimitry Andric # else 1070b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 35 1080b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 42 1090b57cec5SDimitry Andric # endif 1100b57cec5SDimitry Andric # elif defined(_ABI64) && _MIPS_SIM == _ABI64 1110b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_MIPS_NEWABI 1 1120b57cec5SDimitry Andric # if defined(__mips_hard_float) 1130b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 67 1140b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 79 1150b57cec5SDimitry Andric # else 1160b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 35 1170b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 47 1180b57cec5SDimitry Andric # endif 1190b57cec5SDimitry Andric # else 1200b57cec5SDimitry Andric # error "Unsupported MIPS ABI and/or environment" 1210b57cec5SDimitry Andric # endif 1220b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_MIPS 1230b57cec5SDimitry Andric # elif defined(__sparc__) 1240b57cec5SDimitry Andric #define _LIBUNWIND_TARGET_SPARC 1 1250b57cec5SDimitry Andric #define _LIBUNWIND_HIGHEST_DWARF_REGISTER _LIBUNWIND_HIGHEST_DWARF_REGISTER_SPARC 1260b57cec5SDimitry Andric #define _LIBUNWIND_CONTEXT_SIZE 16 127*8e4aef42SEd Maste #define _LIBUNWIND_CURSOR_SIZE 23 1280b57cec5SDimitry Andric # else 1290b57cec5SDimitry Andric # error "Unsupported architecture." 1300b57cec5SDimitry Andric # endif 1310b57cec5SDimitry Andric #else // !_LIBUNWIND_IS_NATIVE_ONLY 1320b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_I386 1330b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_X86_64 1 1340b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_PPC 1 1350b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_PPC64 1 1360b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_AARCH64 1 1370b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_ARM 1 1380b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_OR1K 1 1390b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_MIPS_O32 1 1400b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_MIPS_NEWABI 1 1410b57cec5SDimitry Andric # define _LIBUNWIND_TARGET_SPARC 1 1420b57cec5SDimitry Andric # define _LIBUNWIND_CONTEXT_SIZE 167 1430b57cec5SDimitry Andric # define _LIBUNWIND_CURSOR_SIZE 179 1440b57cec5SDimitry Andric # define _LIBUNWIND_HIGHEST_DWARF_REGISTER 287 1450b57cec5SDimitry Andric #endif // _LIBUNWIND_IS_NATIVE_ONLY 1460b57cec5SDimitry Andric 1470b57cec5SDimitry Andric #endif // ____LIBUNWIND_CONFIG_H__ 148