1061da546Spatrick //===-- MachRegisterStatesI386.h --------------------------------*- C++ -*-===// 2061da546Spatrick // 3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information. 5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6061da546Spatrick // 7061da546Spatrick //===----------------------------------------------------------------------===// 8061da546Spatrick // 9061da546Spatrick // Created by Sean Callanan on 3/16/11. 10061da546Spatrick // 11061da546Spatrick //===----------------------------------------------------------------------===// 12061da546Spatrick 13dda28197Spatrick #ifndef LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_I386_MACHREGISTERSTATESI386_H 14dda28197Spatrick #define LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_I386_MACHREGISTERSTATESI386_H 15061da546Spatrick 16*be691f3bSpatrick #include <cinttypes> 17061da546Spatrick 18061da546Spatrick #define __i386_THREAD_STATE 1 19061da546Spatrick #define __i386_FLOAT_STATE 2 20061da546Spatrick #define __i386_EXCEPTION_STATE 3 21061da546Spatrick #define __i386_DEBUG_STATE 10 22061da546Spatrick #define __i386_AVX_STATE 16 23061da546Spatrick #define __i386_AVX512F_STATE 19 24061da546Spatrick 25061da546Spatrick typedef struct { 26061da546Spatrick uint32_t __eax; 27061da546Spatrick uint32_t __ebx; 28061da546Spatrick uint32_t __ecx; 29061da546Spatrick uint32_t __edx; 30061da546Spatrick uint32_t __edi; 31061da546Spatrick uint32_t __esi; 32061da546Spatrick uint32_t __ebp; 33061da546Spatrick uint32_t __esp; 34061da546Spatrick uint32_t __ss; 35061da546Spatrick uint32_t __eflags; 36061da546Spatrick uint32_t __eip; 37061da546Spatrick uint32_t __cs; 38061da546Spatrick uint32_t __ds; 39061da546Spatrick uint32_t __es; 40061da546Spatrick uint32_t __fs; 41061da546Spatrick uint32_t __gs; 42061da546Spatrick } __i386_thread_state_t; 43061da546Spatrick 44061da546Spatrick typedef struct { 45061da546Spatrick uint16_t __invalid : 1; 46061da546Spatrick uint16_t __denorm : 1; 47061da546Spatrick uint16_t __zdiv : 1; 48061da546Spatrick uint16_t __ovrfl : 1; 49061da546Spatrick uint16_t __undfl : 1; 50061da546Spatrick uint16_t __precis : 1; 51061da546Spatrick uint16_t __PAD1 : 2; 52061da546Spatrick uint16_t __pc : 2; 53061da546Spatrick uint16_t __rc : 2; 54061da546Spatrick uint16_t __PAD2 : 1; 55061da546Spatrick uint16_t __PAD3 : 3; 56061da546Spatrick } __i386_fp_control_t; 57061da546Spatrick 58061da546Spatrick typedef struct { 59061da546Spatrick uint16_t __invalid : 1; 60061da546Spatrick uint16_t __denorm : 1; 61061da546Spatrick uint16_t __zdiv : 1; 62061da546Spatrick uint16_t __ovrfl : 1; 63061da546Spatrick uint16_t __undfl : 1; 64061da546Spatrick uint16_t __precis : 1; 65061da546Spatrick uint16_t __stkflt : 1; 66061da546Spatrick uint16_t __errsumm : 1; 67061da546Spatrick uint16_t __c0 : 1; 68061da546Spatrick uint16_t __c1 : 1; 69061da546Spatrick uint16_t __c2 : 1; 70061da546Spatrick uint16_t __tos : 3; 71061da546Spatrick uint16_t __c3 : 1; 72061da546Spatrick uint16_t __busy : 1; 73061da546Spatrick } __i386_fp_status_t; 74061da546Spatrick 75061da546Spatrick typedef struct { 76061da546Spatrick uint8_t __mmst_reg[10]; 77061da546Spatrick uint8_t __mmst_rsrv[6]; 78061da546Spatrick } __i386_mmst_reg; 79061da546Spatrick 80061da546Spatrick typedef struct { uint8_t __xmm_reg[16]; } __i386_xmm_reg; 81061da546Spatrick 82061da546Spatrick typedef struct { 83061da546Spatrick uint32_t __fpu_reserved[2]; 84061da546Spatrick __i386_fp_control_t __fpu_fcw; 85061da546Spatrick __i386_fp_status_t __fpu_fsw; 86061da546Spatrick uint8_t __fpu_ftw; 87061da546Spatrick uint8_t __fpu_rsrv1; 88061da546Spatrick uint16_t __fpu_fop; 89061da546Spatrick uint32_t __fpu_ip; 90061da546Spatrick uint16_t __fpu_cs; 91061da546Spatrick uint16_t __fpu_rsrv2; 92061da546Spatrick uint32_t __fpu_dp; 93061da546Spatrick uint16_t __fpu_ds; 94061da546Spatrick uint16_t __fpu_rsrv3; 95061da546Spatrick uint32_t __fpu_mxcsr; 96061da546Spatrick uint32_t __fpu_mxcsrmask; 97061da546Spatrick __i386_mmst_reg __fpu_stmm0; 98061da546Spatrick __i386_mmst_reg __fpu_stmm1; 99061da546Spatrick __i386_mmst_reg __fpu_stmm2; 100061da546Spatrick __i386_mmst_reg __fpu_stmm3; 101061da546Spatrick __i386_mmst_reg __fpu_stmm4; 102061da546Spatrick __i386_mmst_reg __fpu_stmm5; 103061da546Spatrick __i386_mmst_reg __fpu_stmm6; 104061da546Spatrick __i386_mmst_reg __fpu_stmm7; 105061da546Spatrick __i386_xmm_reg __fpu_xmm0; 106061da546Spatrick __i386_xmm_reg __fpu_xmm1; 107061da546Spatrick __i386_xmm_reg __fpu_xmm2; 108061da546Spatrick __i386_xmm_reg __fpu_xmm3; 109061da546Spatrick __i386_xmm_reg __fpu_xmm4; 110061da546Spatrick __i386_xmm_reg __fpu_xmm5; 111061da546Spatrick __i386_xmm_reg __fpu_xmm6; 112061da546Spatrick __i386_xmm_reg __fpu_xmm7; 113061da546Spatrick uint8_t __fpu_rsrv4[14 * 16]; 114061da546Spatrick uint32_t __fpu_reserved1; 115061da546Spatrick } __i386_float_state_t; 116061da546Spatrick 117061da546Spatrick typedef struct { 118061da546Spatrick uint32_t __fpu_reserved[2]; 119061da546Spatrick __i386_fp_control_t __fpu_fcw; 120061da546Spatrick __i386_fp_status_t __fpu_fsw; 121061da546Spatrick uint8_t __fpu_ftw; 122061da546Spatrick uint8_t __fpu_rsrv1; 123061da546Spatrick uint16_t __fpu_fop; 124061da546Spatrick uint32_t __fpu_ip; 125061da546Spatrick uint16_t __fpu_cs; 126061da546Spatrick uint16_t __fpu_rsrv2; 127061da546Spatrick uint32_t __fpu_dp; 128061da546Spatrick uint16_t __fpu_ds; 129061da546Spatrick uint16_t __fpu_rsrv3; 130061da546Spatrick uint32_t __fpu_mxcsr; 131061da546Spatrick uint32_t __fpu_mxcsrmask; 132061da546Spatrick __i386_mmst_reg __fpu_stmm0; 133061da546Spatrick __i386_mmst_reg __fpu_stmm1; 134061da546Spatrick __i386_mmst_reg __fpu_stmm2; 135061da546Spatrick __i386_mmst_reg __fpu_stmm3; 136061da546Spatrick __i386_mmst_reg __fpu_stmm4; 137061da546Spatrick __i386_mmst_reg __fpu_stmm5; 138061da546Spatrick __i386_mmst_reg __fpu_stmm6; 139061da546Spatrick __i386_mmst_reg __fpu_stmm7; 140061da546Spatrick __i386_xmm_reg __fpu_xmm0; 141061da546Spatrick __i386_xmm_reg __fpu_xmm1; 142061da546Spatrick __i386_xmm_reg __fpu_xmm2; 143061da546Spatrick __i386_xmm_reg __fpu_xmm3; 144061da546Spatrick __i386_xmm_reg __fpu_xmm4; 145061da546Spatrick __i386_xmm_reg __fpu_xmm5; 146061da546Spatrick __i386_xmm_reg __fpu_xmm6; 147061da546Spatrick __i386_xmm_reg __fpu_xmm7; 148061da546Spatrick uint8_t __fpu_rsrv4[14 * 16]; 149061da546Spatrick uint32_t __fpu_reserved1; 150061da546Spatrick uint8_t __avx_reserved1[64]; 151061da546Spatrick __i386_xmm_reg __fpu_ymmh0; 152061da546Spatrick __i386_xmm_reg __fpu_ymmh1; 153061da546Spatrick __i386_xmm_reg __fpu_ymmh2; 154061da546Spatrick __i386_xmm_reg __fpu_ymmh3; 155061da546Spatrick __i386_xmm_reg __fpu_ymmh4; 156061da546Spatrick __i386_xmm_reg __fpu_ymmh5; 157061da546Spatrick __i386_xmm_reg __fpu_ymmh6; 158061da546Spatrick __i386_xmm_reg __fpu_ymmh7; 159061da546Spatrick } __i386_avx_state_t; 160061da546Spatrick 161061da546Spatrick typedef struct { uint8_t __ymm_reg[32]; } __i386_ymm_reg; 162061da546Spatrick typedef struct { uint8_t __opmask_reg[8]; } __i386_opmask_reg; 163061da546Spatrick 164061da546Spatrick typedef struct { 165061da546Spatrick uint32_t __fpu_reserved[2]; 166061da546Spatrick __i386_fp_control_t __fpu_fcw; 167061da546Spatrick __i386_fp_status_t __fpu_fsw; 168061da546Spatrick uint8_t __fpu_ftw; 169061da546Spatrick uint8_t __fpu_rsrv1; 170061da546Spatrick uint16_t __fpu_fop; 171061da546Spatrick uint32_t __fpu_ip; 172061da546Spatrick uint16_t __fpu_cs; 173061da546Spatrick uint16_t __fpu_rsrv2; 174061da546Spatrick uint32_t __fpu_dp; 175061da546Spatrick uint16_t __fpu_ds; 176061da546Spatrick uint16_t __fpu_rsrv3; 177061da546Spatrick uint32_t __fpu_mxcsr; 178061da546Spatrick uint32_t __fpu_mxcsrmask; 179061da546Spatrick __i386_mmst_reg __fpu_stmm0; 180061da546Spatrick __i386_mmst_reg __fpu_stmm1; 181061da546Spatrick __i386_mmst_reg __fpu_stmm2; 182061da546Spatrick __i386_mmst_reg __fpu_stmm3; 183061da546Spatrick __i386_mmst_reg __fpu_stmm4; 184061da546Spatrick __i386_mmst_reg __fpu_stmm5; 185061da546Spatrick __i386_mmst_reg __fpu_stmm6; 186061da546Spatrick __i386_mmst_reg __fpu_stmm7; 187061da546Spatrick __i386_xmm_reg __fpu_xmm0; 188061da546Spatrick __i386_xmm_reg __fpu_xmm1; 189061da546Spatrick __i386_xmm_reg __fpu_xmm2; 190061da546Spatrick __i386_xmm_reg __fpu_xmm3; 191061da546Spatrick __i386_xmm_reg __fpu_xmm4; 192061da546Spatrick __i386_xmm_reg __fpu_xmm5; 193061da546Spatrick __i386_xmm_reg __fpu_xmm6; 194061da546Spatrick __i386_xmm_reg __fpu_xmm7; 195061da546Spatrick uint8_t __fpu_rsrv4[14 * 16]; 196061da546Spatrick uint32_t __fpu_reserved1; 197061da546Spatrick uint8_t __avx_reserved1[64]; 198061da546Spatrick __i386_xmm_reg __fpu_ymmh0; 199061da546Spatrick __i386_xmm_reg __fpu_ymmh1; 200061da546Spatrick __i386_xmm_reg __fpu_ymmh2; 201061da546Spatrick __i386_xmm_reg __fpu_ymmh3; 202061da546Spatrick __i386_xmm_reg __fpu_ymmh4; 203061da546Spatrick __i386_xmm_reg __fpu_ymmh5; 204061da546Spatrick __i386_xmm_reg __fpu_ymmh6; 205061da546Spatrick __i386_xmm_reg __fpu_ymmh7; 206061da546Spatrick __i386_opmask_reg __fpu_k0; 207061da546Spatrick __i386_opmask_reg __fpu_k1; 208061da546Spatrick __i386_opmask_reg __fpu_k2; 209061da546Spatrick __i386_opmask_reg __fpu_k3; 210061da546Spatrick __i386_opmask_reg __fpu_k4; 211061da546Spatrick __i386_opmask_reg __fpu_k5; 212061da546Spatrick __i386_opmask_reg __fpu_k6; 213061da546Spatrick __i386_opmask_reg __fpu_k7; 214061da546Spatrick __i386_ymm_reg __fpu_zmmh0; 215061da546Spatrick __i386_ymm_reg __fpu_zmmh1; 216061da546Spatrick __i386_ymm_reg __fpu_zmmh2; 217061da546Spatrick __i386_ymm_reg __fpu_zmmh3; 218061da546Spatrick __i386_ymm_reg __fpu_zmmh4; 219061da546Spatrick __i386_ymm_reg __fpu_zmmh5; 220061da546Spatrick __i386_ymm_reg __fpu_zmmh6; 221061da546Spatrick __i386_ymm_reg __fpu_zmmh7; 222061da546Spatrick } __i386_avx512f_state_t; 223061da546Spatrick 224061da546Spatrick typedef struct { 225061da546Spatrick uint32_t __trapno; 226061da546Spatrick uint32_t __err; 227061da546Spatrick uint32_t __faultvaddr; 228061da546Spatrick } __i386_exception_state_t; 229061da546Spatrick 230061da546Spatrick typedef struct { 231061da546Spatrick uint32_t __dr0; 232061da546Spatrick uint32_t __dr1; 233061da546Spatrick uint32_t __dr2; 234061da546Spatrick uint32_t __dr3; 235061da546Spatrick uint32_t __dr4; 236061da546Spatrick uint32_t __dr5; 237061da546Spatrick uint32_t __dr6; 238061da546Spatrick uint32_t __dr7; 239061da546Spatrick } __i386_debug_state_t; 240061da546Spatrick 241061da546Spatrick #endif 242