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