1 //===-- RegisterInfos_x86_64_with_base_shared.h -----------------*- C++ -*-===// 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 #include "Plugins/Process/Utility/lldb-x86-register-enums.h" 10 #include <stdint.h> 11 12 #ifndef lldb_RegisterInfos_x86_64_with_base_shared_h 13 #define lldb_RegisterInfos_x86_64_with_base_shared_h 14 15 #include "Plugins/Process/Utility/NativeRegisterContextRegisterInfo.h" 16 17 namespace lldb_private { 18 19 struct RegisterInfos_x86_64_with_base_shared { 20 static uint32_t g_contained_eax[]; 21 static uint32_t g_contained_ebx[]; 22 static uint32_t g_contained_ecx[]; 23 static uint32_t g_contained_edx[]; 24 static uint32_t g_contained_edi[]; 25 static uint32_t g_contained_esi[]; 26 static uint32_t g_contained_ebp[]; 27 static uint32_t g_contained_esp[]; 28 29 static uint32_t g_invalidate_eax[]; 30 static uint32_t g_invalidate_ebx[]; 31 static uint32_t g_invalidate_ecx[]; 32 static uint32_t g_invalidate_edx[]; 33 static uint32_t g_invalidate_edi[]; 34 static uint32_t g_invalidate_esi[]; 35 static uint32_t g_invalidate_ebp[]; 36 static uint32_t g_invalidate_esp[]; 37 38 static uint32_t g_contained_rax[]; 39 static uint32_t g_contained_rbx[]; 40 static uint32_t g_contained_rcx[]; 41 static uint32_t g_contained_rdx[]; 42 static uint32_t g_contained_rdi[]; 43 static uint32_t g_contained_rsi[]; 44 static uint32_t g_contained_rbp[]; 45 static uint32_t g_contained_rsp[]; 46 static uint32_t g_contained_r8[]; 47 static uint32_t g_contained_r9[]; 48 static uint32_t g_contained_r10[]; 49 static uint32_t g_contained_r11[]; 50 static uint32_t g_contained_r12[]; 51 static uint32_t g_contained_r13[]; 52 static uint32_t g_contained_r14[]; 53 static uint32_t g_contained_r15[]; 54 55 static uint32_t g_invalidate_rax[]; 56 static uint32_t g_invalidate_rbx[]; 57 static uint32_t g_invalidate_rcx[]; 58 static uint32_t g_invalidate_rdx[]; 59 static uint32_t g_invalidate_rdi[]; 60 static uint32_t g_invalidate_rsi[]; 61 static uint32_t g_invalidate_rbp[]; 62 static uint32_t g_invalidate_rsp[]; 63 static uint32_t g_invalidate_r8[]; 64 static uint32_t g_invalidate_r9[]; 65 static uint32_t g_invalidate_r10[]; 66 static uint32_t g_invalidate_r11[]; 67 static uint32_t g_invalidate_r12[]; 68 static uint32_t g_invalidate_r13[]; 69 static uint32_t g_invalidate_r14[]; 70 static uint32_t g_invalidate_r15[]; 71 72 static uint32_t g_contained_fip[]; 73 static uint32_t g_contained_fdp[]; 74 75 static uint32_t g_invalidate_fip[]; 76 static uint32_t g_invalidate_fdp[]; 77 78 static uint32_t g_contained_st0_32[]; 79 static uint32_t g_contained_st1_32[]; 80 static uint32_t g_contained_st2_32[]; 81 static uint32_t g_contained_st3_32[]; 82 static uint32_t g_contained_st4_32[]; 83 static uint32_t g_contained_st5_32[]; 84 static uint32_t g_contained_st6_32[]; 85 static uint32_t g_contained_st7_32[]; 86 87 static uint32_t g_invalidate_st0_32[]; 88 static uint32_t g_invalidate_st1_32[]; 89 static uint32_t g_invalidate_st2_32[]; 90 static uint32_t g_invalidate_st3_32[]; 91 static uint32_t g_invalidate_st4_32[]; 92 static uint32_t g_invalidate_st5_32[]; 93 static uint32_t g_invalidate_st6_32[]; 94 static uint32_t g_invalidate_st7_32[]; 95 96 static uint32_t g_contained_st0_64[]; 97 static uint32_t g_contained_st1_64[]; 98 static uint32_t g_contained_st2_64[]; 99 static uint32_t g_contained_st3_64[]; 100 static uint32_t g_contained_st4_64[]; 101 static uint32_t g_contained_st5_64[]; 102 static uint32_t g_contained_st6_64[]; 103 static uint32_t g_contained_st7_64[]; 104 105 static uint32_t g_invalidate_st0_64[]; 106 static uint32_t g_invalidate_st1_64[]; 107 static uint32_t g_invalidate_st2_64[]; 108 static uint32_t g_invalidate_st3_64[]; 109 static uint32_t g_invalidate_st4_64[]; 110 static uint32_t g_invalidate_st5_64[]; 111 static uint32_t g_invalidate_st6_64[]; 112 static uint32_t g_invalidate_st7_64[]; 113 }; 114 115 struct RegInfo { 116 uint32_t num_registers; 117 uint32_t num_gpr_registers; 118 uint32_t num_fpr_registers; 119 uint32_t num_avx_registers; 120 121 uint32_t last_gpr; 122 uint32_t first_fpr; 123 uint32_t last_fpr; 124 125 uint32_t first_st; 126 uint32_t last_st; 127 uint32_t first_mm; 128 uint32_t last_mm; 129 uint32_t first_xmm; 130 uint32_t last_xmm; 131 uint32_t first_ymm; 132 uint32_t last_ymm; 133 134 uint32_t first_dr; 135 uint32_t gpr_flags; 136 }; 137 138 RegInfo &GetRegInfoShared(llvm::Triple::ArchType arch_type, bool with_base); 139 140 } // namespace lldb_private 141 142 #endif // ifndef lldb_RegisterInfos_x86_64_with_base_shared_h 143