1 //===-- MachRegisterStatesX86_64.h --------------------------------*- C++ 2 //-*-===// 3 // 4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5 // See https://llvm.org/LICENSE.txt for license information. 6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // Created by Sean Callanan on 3/16/11. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #ifndef LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_X86_64_MACHREGISTERSTATESX86_64_H 15 #define LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_X86_64_MACHREGISTERSTATESX86_64_H 16 17 #include <cinttypes> 18 19 #define __x86_64_THREAD_STATE 4 20 #define __x86_64_FLOAT_STATE 5 21 #define __x86_64_EXCEPTION_STATE 6 22 #define __x86_64_DEBUG_STATE 11 23 #define __x86_64_AVX_STATE 17 24 #define __x86_64_AVX512F_STATE 20 25 #define __x86_64_THREAD_FULL_STATE 23 26 27 typedef struct { 28 uint64_t __rax; 29 uint64_t __rbx; 30 uint64_t __rcx; 31 uint64_t __rdx; 32 uint64_t __rdi; 33 uint64_t __rsi; 34 uint64_t __rbp; 35 uint64_t __rsp; 36 uint64_t __r8; 37 uint64_t __r9; 38 uint64_t __r10; 39 uint64_t __r11; 40 uint64_t __r12; 41 uint64_t __r13; 42 uint64_t __r14; 43 uint64_t __r15; 44 uint64_t __rip; 45 uint64_t __rflags; 46 uint64_t __cs; 47 uint64_t __fs; 48 uint64_t __gs; 49 uint64_t __ds; 50 uint64_t __es; 51 uint64_t __ss; 52 uint64_t __gsbase; 53 } __x86_64_thread_state_t; 54 55 typedef struct { 56 uint16_t __invalid : 1; 57 uint16_t __denorm : 1; 58 uint16_t __zdiv : 1; 59 uint16_t __ovrfl : 1; 60 uint16_t __undfl : 1; 61 uint16_t __precis : 1; 62 uint16_t __PAD1 : 2; 63 uint16_t __pc : 2; 64 uint16_t __rc : 2; 65 uint16_t __PAD2 : 1; 66 uint16_t __PAD3 : 3; 67 } __x86_64_fp_control_t; 68 69 typedef struct { 70 uint16_t __invalid : 1; 71 uint16_t __denorm : 1; 72 uint16_t __zdiv : 1; 73 uint16_t __ovrfl : 1; 74 uint16_t __undfl : 1; 75 uint16_t __precis : 1; 76 uint16_t __stkflt : 1; 77 uint16_t __errsumm : 1; 78 uint16_t __c0 : 1; 79 uint16_t __c1 : 1; 80 uint16_t __c2 : 1; 81 uint16_t __tos : 3; 82 uint16_t __c3 : 1; 83 uint16_t __busy : 1; 84 } __x86_64_fp_status_t; 85 86 typedef struct { 87 uint8_t __mmst_reg[10]; 88 uint8_t __mmst_rsrv[6]; 89 } __x86_64_mmst_reg; 90 91 typedef struct { uint8_t __xmm_reg[16]; } __x86_64_xmm_reg; 92 93 typedef struct { 94 uint32_t __fpu_reserved[2]; 95 __x86_64_fp_control_t __fpu_fcw; 96 __x86_64_fp_status_t __fpu_fsw; 97 uint8_t __fpu_ftw; 98 uint8_t __fpu_rsrv1; 99 uint16_t __fpu_fop; 100 uint32_t __fpu_ip; 101 uint16_t __fpu_cs; 102 uint16_t __fpu_rsrv2; 103 uint32_t __fpu_dp; 104 uint16_t __fpu_ds; 105 uint16_t __fpu_rsrv3; 106 uint32_t __fpu_mxcsr; 107 uint32_t __fpu_mxcsrmask; 108 __x86_64_mmst_reg __fpu_stmm0; 109 __x86_64_mmst_reg __fpu_stmm1; 110 __x86_64_mmst_reg __fpu_stmm2; 111 __x86_64_mmst_reg __fpu_stmm3; 112 __x86_64_mmst_reg __fpu_stmm4; 113 __x86_64_mmst_reg __fpu_stmm5; 114 __x86_64_mmst_reg __fpu_stmm6; 115 __x86_64_mmst_reg __fpu_stmm7; 116 __x86_64_xmm_reg __fpu_xmm0; 117 __x86_64_xmm_reg __fpu_xmm1; 118 __x86_64_xmm_reg __fpu_xmm2; 119 __x86_64_xmm_reg __fpu_xmm3; 120 __x86_64_xmm_reg __fpu_xmm4; 121 __x86_64_xmm_reg __fpu_xmm5; 122 __x86_64_xmm_reg __fpu_xmm6; 123 __x86_64_xmm_reg __fpu_xmm7; 124 __x86_64_xmm_reg __fpu_xmm8; 125 __x86_64_xmm_reg __fpu_xmm9; 126 __x86_64_xmm_reg __fpu_xmm10; 127 __x86_64_xmm_reg __fpu_xmm11; 128 __x86_64_xmm_reg __fpu_xmm12; 129 __x86_64_xmm_reg __fpu_xmm13; 130 __x86_64_xmm_reg __fpu_xmm14; 131 __x86_64_xmm_reg __fpu_xmm15; 132 uint8_t __fpu_rsrv4[6 * 16]; 133 uint32_t __fpu_reserved1; 134 } __x86_64_float_state_t; 135 136 typedef struct { 137 uint32_t __fpu_reserved[2]; 138 __x86_64_fp_control_t __fpu_fcw; 139 __x86_64_fp_status_t __fpu_fsw; 140 uint8_t __fpu_ftw; 141 uint8_t __fpu_rsrv1; 142 uint16_t __fpu_fop; 143 uint32_t __fpu_ip; 144 uint16_t __fpu_cs; 145 uint16_t __fpu_rsrv2; 146 uint32_t __fpu_dp; 147 uint16_t __fpu_ds; 148 uint16_t __fpu_rsrv3; 149 uint32_t __fpu_mxcsr; 150 uint32_t __fpu_mxcsrmask; 151 __x86_64_mmst_reg __fpu_stmm0; 152 __x86_64_mmst_reg __fpu_stmm1; 153 __x86_64_mmst_reg __fpu_stmm2; 154 __x86_64_mmst_reg __fpu_stmm3; 155 __x86_64_mmst_reg __fpu_stmm4; 156 __x86_64_mmst_reg __fpu_stmm5; 157 __x86_64_mmst_reg __fpu_stmm6; 158 __x86_64_mmst_reg __fpu_stmm7; 159 __x86_64_xmm_reg __fpu_xmm0; 160 __x86_64_xmm_reg __fpu_xmm1; 161 __x86_64_xmm_reg __fpu_xmm2; 162 __x86_64_xmm_reg __fpu_xmm3; 163 __x86_64_xmm_reg __fpu_xmm4; 164 __x86_64_xmm_reg __fpu_xmm5; 165 __x86_64_xmm_reg __fpu_xmm6; 166 __x86_64_xmm_reg __fpu_xmm7; 167 __x86_64_xmm_reg __fpu_xmm8; 168 __x86_64_xmm_reg __fpu_xmm9; 169 __x86_64_xmm_reg __fpu_xmm10; 170 __x86_64_xmm_reg __fpu_xmm11; 171 __x86_64_xmm_reg __fpu_xmm12; 172 __x86_64_xmm_reg __fpu_xmm13; 173 __x86_64_xmm_reg __fpu_xmm14; 174 __x86_64_xmm_reg __fpu_xmm15; 175 uint8_t __fpu_rsrv4[6 * 16]; 176 uint32_t __fpu_reserved1; 177 uint8_t __avx_reserved1[64]; 178 __x86_64_xmm_reg __fpu_ymmh0; 179 __x86_64_xmm_reg __fpu_ymmh1; 180 __x86_64_xmm_reg __fpu_ymmh2; 181 __x86_64_xmm_reg __fpu_ymmh3; 182 __x86_64_xmm_reg __fpu_ymmh4; 183 __x86_64_xmm_reg __fpu_ymmh5; 184 __x86_64_xmm_reg __fpu_ymmh6; 185 __x86_64_xmm_reg __fpu_ymmh7; 186 __x86_64_xmm_reg __fpu_ymmh8; 187 __x86_64_xmm_reg __fpu_ymmh9; 188 __x86_64_xmm_reg __fpu_ymmh10; 189 __x86_64_xmm_reg __fpu_ymmh11; 190 __x86_64_xmm_reg __fpu_ymmh12; 191 __x86_64_xmm_reg __fpu_ymmh13; 192 __x86_64_xmm_reg __fpu_ymmh14; 193 __x86_64_xmm_reg __fpu_ymmh15; 194 } __x86_64_avx_state_t; 195 196 typedef struct { uint8_t __ymm_reg[32]; } __x86_64_ymm_reg; 197 typedef struct { uint8_t __zmm_reg[64]; } __x86_64_zmm_reg; 198 typedef struct { uint8_t __opmask_reg[8]; } __x86_64_opmask_reg; 199 200 typedef struct { 201 uint32_t __fpu_reserved[2]; 202 __x86_64_fp_control_t __fpu_fcw; 203 __x86_64_fp_status_t __fpu_fsw; 204 uint8_t __fpu_ftw; 205 uint8_t __fpu_rsrv1; 206 uint16_t __fpu_fop; 207 uint32_t __fpu_ip; 208 uint16_t __fpu_cs; 209 uint16_t __fpu_rsrv2; 210 uint32_t __fpu_dp; 211 uint16_t __fpu_ds; 212 uint16_t __fpu_rsrv3; 213 uint32_t __fpu_mxcsr; 214 uint32_t __fpu_mxcsrmask; 215 __x86_64_mmst_reg __fpu_stmm0; 216 __x86_64_mmst_reg __fpu_stmm1; 217 __x86_64_mmst_reg __fpu_stmm2; 218 __x86_64_mmst_reg __fpu_stmm3; 219 __x86_64_mmst_reg __fpu_stmm4; 220 __x86_64_mmst_reg __fpu_stmm5; 221 __x86_64_mmst_reg __fpu_stmm6; 222 __x86_64_mmst_reg __fpu_stmm7; 223 __x86_64_xmm_reg __fpu_xmm0; 224 __x86_64_xmm_reg __fpu_xmm1; 225 __x86_64_xmm_reg __fpu_xmm2; 226 __x86_64_xmm_reg __fpu_xmm3; 227 __x86_64_xmm_reg __fpu_xmm4; 228 __x86_64_xmm_reg __fpu_xmm5; 229 __x86_64_xmm_reg __fpu_xmm6; 230 __x86_64_xmm_reg __fpu_xmm7; 231 __x86_64_xmm_reg __fpu_xmm8; 232 __x86_64_xmm_reg __fpu_xmm9; 233 __x86_64_xmm_reg __fpu_xmm10; 234 __x86_64_xmm_reg __fpu_xmm11; 235 __x86_64_xmm_reg __fpu_xmm12; 236 __x86_64_xmm_reg __fpu_xmm13; 237 __x86_64_xmm_reg __fpu_xmm14; 238 __x86_64_xmm_reg __fpu_xmm15; 239 uint8_t __fpu_rsrv4[6 * 16]; 240 uint32_t __fpu_reserved1; 241 uint8_t __avx_reserved1[64]; 242 __x86_64_xmm_reg __fpu_ymmh0; 243 __x86_64_xmm_reg __fpu_ymmh1; 244 __x86_64_xmm_reg __fpu_ymmh2; 245 __x86_64_xmm_reg __fpu_ymmh3; 246 __x86_64_xmm_reg __fpu_ymmh4; 247 __x86_64_xmm_reg __fpu_ymmh5; 248 __x86_64_xmm_reg __fpu_ymmh6; 249 __x86_64_xmm_reg __fpu_ymmh7; 250 __x86_64_xmm_reg __fpu_ymmh8; 251 __x86_64_xmm_reg __fpu_ymmh9; 252 __x86_64_xmm_reg __fpu_ymmh10; 253 __x86_64_xmm_reg __fpu_ymmh11; 254 __x86_64_xmm_reg __fpu_ymmh12; 255 __x86_64_xmm_reg __fpu_ymmh13; 256 __x86_64_xmm_reg __fpu_ymmh14; 257 __x86_64_xmm_reg __fpu_ymmh15; 258 __x86_64_opmask_reg __fpu_k0; 259 __x86_64_opmask_reg __fpu_k1; 260 __x86_64_opmask_reg __fpu_k2; 261 __x86_64_opmask_reg __fpu_k3; 262 __x86_64_opmask_reg __fpu_k4; 263 __x86_64_opmask_reg __fpu_k5; 264 __x86_64_opmask_reg __fpu_k6; 265 __x86_64_opmask_reg __fpu_k7; 266 __x86_64_ymm_reg __fpu_zmmh0; 267 __x86_64_ymm_reg __fpu_zmmh1; 268 __x86_64_ymm_reg __fpu_zmmh2; 269 __x86_64_ymm_reg __fpu_zmmh3; 270 __x86_64_ymm_reg __fpu_zmmh4; 271 __x86_64_ymm_reg __fpu_zmmh5; 272 __x86_64_ymm_reg __fpu_zmmh6; 273 __x86_64_ymm_reg __fpu_zmmh7; 274 __x86_64_ymm_reg __fpu_zmmh8; 275 __x86_64_ymm_reg __fpu_zmmh9; 276 __x86_64_ymm_reg __fpu_zmmh10; 277 __x86_64_ymm_reg __fpu_zmmh11; 278 __x86_64_ymm_reg __fpu_zmmh12; 279 __x86_64_ymm_reg __fpu_zmmh13; 280 __x86_64_ymm_reg __fpu_zmmh14; 281 __x86_64_ymm_reg __fpu_zmmh15; 282 __x86_64_zmm_reg __fpu_zmm16; 283 __x86_64_zmm_reg __fpu_zmm17; 284 __x86_64_zmm_reg __fpu_zmm18; 285 __x86_64_zmm_reg __fpu_zmm19; 286 __x86_64_zmm_reg __fpu_zmm20; 287 __x86_64_zmm_reg __fpu_zmm21; 288 __x86_64_zmm_reg __fpu_zmm22; 289 __x86_64_zmm_reg __fpu_zmm23; 290 __x86_64_zmm_reg __fpu_zmm24; 291 __x86_64_zmm_reg __fpu_zmm25; 292 __x86_64_zmm_reg __fpu_zmm26; 293 __x86_64_zmm_reg __fpu_zmm27; 294 __x86_64_zmm_reg __fpu_zmm28; 295 __x86_64_zmm_reg __fpu_zmm29; 296 __x86_64_zmm_reg __fpu_zmm30; 297 __x86_64_zmm_reg __fpu_zmm31; 298 299 } __x86_64_avx512f_state_t; 300 301 typedef struct { 302 uint32_t __trapno; 303 uint32_t __err; 304 uint64_t __faultvaddr; 305 } __x86_64_exception_state_t; 306 307 typedef struct { 308 uint64_t __dr0; 309 uint64_t __dr1; 310 uint64_t __dr2; 311 uint64_t __dr3; 312 uint64_t __dr4; 313 uint64_t __dr5; 314 uint64_t __dr6; 315 uint64_t __dr7; 316 } __x86_64_debug_state_t; 317 318 #endif 319