VirtualBox

Changeset 35312 in vbox for trunk/include/VBox


Ignore:
Timestamp:
Dec 23, 2010 4:40:16 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
69165
Message:

DBGF/IMachineDebugger: Work in progress on register querying and naming.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/dbgf.h

    r34902 r35312  
    10621062    DBGFREG_R15D = DBGFREG_R15,
    10631063
    1064     DBGFREG_AH,
    1065     DBGFREG_CH,
    1066     DBGFREG_DH,
    1067     DBGFREG_BH,
    1068 
    10691064    /* Segments and other special registers: */
    10701065    DBGFREG_CS,
     1066    DBGFREG_CS_ATTR,
     1067    DBGFREG_CS_BASE,
     1068    DBGFREG_CS_LIMIT,
     1069
    10711070    DBGFREG_DS,
     1071    DBGFREG_DS_ATTR,
     1072    DBGFREG_DS_BASE,
     1073    DBGFREG_DS_LIMIT,
     1074
    10721075    DBGFREG_ES,
     1076    DBGFREG_ES_ATTR,
     1077    DBGFREG_ES_BASE,
     1078    DBGFREG_ES_LIMIT,
     1079
    10731080    DBGFREG_FS,
     1081    DBGFREG_FS_ATTR,
     1082    DBGFREG_FS_BASE,
     1083    DBGFREG_FS_LIMIT,
     1084
    10741085    DBGFREG_GS,
     1086    DBGFREG_GS_ATTR,
     1087    DBGFREG_GS_BASE,
     1088    DBGFREG_GS_LIMIT,
     1089
    10751090    DBGFREG_SS,
    1076 
    1077     DBGFREG_CS_ATTR,
    1078     DBGFREG_DS_ATTR,
    1079     DBGFREG_ES_ATTR,
    1080     DBGFREG_FS_ATTR,
    1081     DBGFREG_GS_ATTR,
    10821091    DBGFREG_SS_ATTR,
    1083 
    1084     DBGFREG_CS_BASE,
    1085     DBGFREG_DS_BASE,
    1086     DBGFREG_ES_BASE,
    1087     DBGFREG_FS_BASE,
    1088     DBGFREG_GS_BASE,
    10891092    DBGFREG_SS_BASE,
    1090 
    1091     DBGFREG_CS_LIMIT,
    1092     DBGFREG_DS_LIMIT,
    1093     DBGFREG_ES_LIMIT,
    1094     DBGFREG_FS_LIMIT,
    1095     DBGFREG_GS_LIMIT,
    10961093    DBGFREG_SS_LIMIT,
    10971094
     
    11051102
    11061103    /* FPU: */
    1107     DBGFREG_ST0,
    1108     DBGFREG_ST1,
    1109     DBGFREG_ST2,
    1110     DBGFREG_ST3,
    1111     DBGFREG_ST4,
    1112     DBGFREG_ST5,
    1113     DBGFREG_ST6,
    1114     DBGFREG_ST7,
    1115 
    1116     DBGFREG_MM0,
    1117     DBGFREG_MM1,
    1118     DBGFREG_MM2,
    1119     DBGFREG_MM3,
    1120     DBGFREG_MM4,
    1121     DBGFREG_MM5,
    1122     DBGFREG_MM6,
    1123     DBGFREG_MM7,
    1124 
    11251104    DBGFREG_FCW,
    11261105    DBGFREG_FSW,
     
    11331112    DBGFREG_MXCSR,
    11341113    DBGFREG_MXCSR_MASK,
     1114
     1115    DBGFREG_ST0,
     1116    DBGFREG_ST1,
     1117    DBGFREG_ST2,
     1118    DBGFREG_ST3,
     1119    DBGFREG_ST4,
     1120    DBGFREG_ST5,
     1121    DBGFREG_ST6,
     1122    DBGFREG_ST7,
     1123
     1124    DBGFREG_MM0,
     1125    DBGFREG_MM1,
     1126    DBGFREG_MM2,
     1127    DBGFREG_MM3,
     1128    DBGFREG_MM4,
     1129    DBGFREG_MM5,
     1130    DBGFREG_MM6,
     1131    DBGFREG_MM7,
    11351132
    11361133    /* SSE: */
     
    11541151
    11551152    /* System registers: */
    1156     DBGFREG_GDTR,
    11571153    DBGFREG_GDTR_BASE,
    11581154    DBGFREG_GDTR_LIMIT,
    1159     DBGFREG_IDTR,
    11601155    DBGFREG_IDTR_BASE,
    11611156    DBGFREG_IDTR_LIMIT,
     
    12001195    DBGFREG_MSR_K8_TSC_AUX,
    12011196
     1197    /** The number of registers to pass to DBGFR3RegQueryAll. */
     1198    DBGFREG_ALL_COUNT,
     1199
     1200    /* Misc aliases that doesn't need be part of the 'all' query: */
     1201    DBGFREG_AH = DBGFREG_ALL_COUNT,
     1202    DBGFREG_CH,
     1203    DBGFREG_DH,
     1204    DBGFREG_BH,
     1205    DBGFREG_GDTR,
     1206    DBGFREG_IDTR,
     1207
    12021208    /** The end of the registers.  */
    12031209    DBGFREG_END,
     
    12051211    DBGFREG_32BIT_HACK = 0x7fffffff
    12061212} DBGFREG;
     1213/** Pointer to a register identifier. */
     1214typedef DBGFREG *PDBGFREG;
     1215/** Pointer to a const register identifier. */
     1216typedef DBGFREG const *PCDBGFREG;
     1217
     1218/**
     1219 * Register value type.
     1220 */
     1221typedef enum DBGFREGVALTYPE
     1222{
     1223    DBGFREGVALTYPE_INVALID = 0,
     1224    /** Unsigned 8-bit register value. */
     1225    DBGFREGVALTYPE_U8,
     1226    /** Unsigned 16-bit register value. */
     1227    DBGFREGVALTYPE_U16,
     1228    /** Unsigned 32-bit register value. */
     1229    DBGFREGVALTYPE_U32,
     1230    /** Unsigned 64-bit register value. */
     1231    DBGFREGVALTYPE_U64,
     1232    /** Unsigned 128-bit register value. */
     1233    DBGFREGVALTYPE_U128,
     1234    /** 80-bit register value. */
     1235    DBGFREGVALTYPE_80,
     1236    /** Long double register value. */
     1237    DBGFREGVALTYPE_LRD,
     1238    /** Descriptor table register value. */
     1239    DBGFREGVALTYPE_DTR,
     1240    /** End of the valid register value types. */
     1241    DBGFREGVALTYPE_END,
     1242    /** The usual 32-bit type hack. */
     1243    DBGFREGVALTYPE_32BIT_HACK = 0x7fffffff
     1244} DBGFREGVALTYPE;
     1245
     1246
     1247/**
     1248 * Entry in a batch query or set operation.
     1249 */
     1250typedef struct DBGFREGENTRY
     1251{
     1252    /** The register identifier. */
     1253    DBGFREG         enmReg;
     1254    /** The size of the value in bytes. */
     1255    DBGFREGVALTYPE  enmType;
     1256    /** The register value. The valid view is indicated by enmType. */
     1257    union DBGFREGVAL
     1258    {
     1259        uint8_t     u8;             /**< The 8-bit view. */
     1260        uint16_t    u16;            /**< The 16-bit view. */
     1261        uint32_t    u32;            /**< The 32-bit view. */
     1262        uint64_t    u64;            /**< The 64-bit view. */
     1263        uint128_t   u128;           /**< The 128-bit view. */
     1264        long double lrd;            /**< The long double view. */
     1265        /** GDTR or LDTR (DBGFREGVALTYPE_DTR). */
     1266        struct
     1267        {
     1268            /** The table address. */
     1269            uint64_t u64Base;
     1270            /** The table limit (length minus 1). */
     1271            uint32_t u32Limit;
     1272        }           dtr;
     1273
     1274        uint8_t     au8[16];        /**< The 8-bit array view.  */
     1275        uint16_t    au16[8];        /**< The 16-bit array view.  */
     1276        uint32_t    au32[4];        /**< The 32-bit array view.  */
     1277        uint64_t    au64[2];        /**< The 64-bit array view.  */
     1278        RTUINT128U  u;
     1279    } Val;
     1280} DBGFREGENTRY;
     1281/** Pointer to a register entry in a batch operation. */
     1282typedef DBGFREGENTRY *PDBGFREGENTRY;
     1283/** Pointer to a const register entry in a batch operation. */
     1284typedef DBGFREGENTRY const *PCDBGFREGENTRY;
    12071285
    12081286VMMR3DECL(int) DBGFR3RegQueryU8(  PVM pVM, VMCPUID idCpu, DBGFREG enmReg, uint8_t     *pu8);
     
    12121290VMMR3DECL(int) DBGFR3RegQueryU128(PVM pVM, VMCPUID idCpu, DBGFREG enmReg, uint128_t   *pu128);
    12131291VMMR3DECL(int) DBGFR3RegQueryLrd( PVM pVM, VMCPUID idCpu, DBGFREG enmReg, long double *plrd);
    1214 VMMR3DECL(int) DBGFR3RegQueryXdtr( PVM pVM, VMCPUID idCpu, DBGFREG enmReg, uint64_t *pu64Base, uint16_t *pu16Limit);
    1215 
    1216 VMMR3DECL(int) DBGFR3RegSetU8(  PVM pVM, VMCPUID idCpu, DBGFREG enmReg, uint8_t     u8);
    1217 VMMR3DECL(int) DBGFR3RegSetU16( PVM pVM, VMCPUID idCpu, DBGFREG enmReg, uint16_t    u16);
    1218 VMMR3DECL(int) DBGFR3RegSetU32( PVM pVM, VMCPUID idCpu, DBGFREG enmReg, uint32_t    u32);
    1219 VMMR3DECL(int) DBGFR3RegSetU64( PVM pVM, VMCPUID idCpu, DBGFREG enmReg, uint64_t    u64);
    1220 VMMR3DECL(int) DBGFR3RegSetU128(PVM pVM, VMCPUID idCpu, DBGFREG enmReg, uint128_t   u128);
    1221 VMMR3DECL(int) DBGFR3RegSetLrd( PVM pVM, VMCPUID idCpu, DBGFREG enmReg, long double lrd);
     1292VMMR3DECL(int) DBGFR3RegQueryXdtr(PVM pVM, VMCPUID idCpu, DBGFREG enmReg, uint64_t *pu64Base, uint16_t *pu16Limit);
     1293VMMR3DECL(int) DBGFR3RegQueryBatch(PVM pVM,VMCPUID idCpu, PDBGFREGENTRY paRegs, size_t cRegs);
     1294VMMR3DECL(int) DBGFR3RegQueryAll( PVM pVM, VMCPUID idCpu, PDBGFREGENTRY paRegs, size_t cRegs);
     1295
     1296VMMR3DECL(int) DBGFR3RegSetU8(    PVM pVM, VMCPUID idCpu, DBGFREG enmReg, uint8_t     u8);
     1297VMMR3DECL(int) DBGFR3RegSetU16(   PVM pVM, VMCPUID idCpu, DBGFREG enmReg, uint16_t    u16);
     1298VMMR3DECL(int) DBGFR3RegSetU32(   PVM pVM, VMCPUID idCpu, DBGFREG enmReg, uint32_t    u32);
     1299VMMR3DECL(int) DBGFR3RegSetU64(   PVM pVM, VMCPUID idCpu, DBGFREG enmReg, uint64_t    u64);
     1300VMMR3DECL(int) DBGFR3RegSetU128(  PVM pVM, VMCPUID idCpu, DBGFREG enmReg, uint128_t   u128);
     1301VMMR3DECL(int) DBGFR3RegSetLrd(   PVM pVM, VMCPUID idCpu, DBGFREG enmReg, long double lrd);
     1302VMMR3DECL(int) DBGFR3RegSetBatch( PVM pVM, VMCPUID idCpu, PCDBGFREGENTRY paRegs, size_t cbRegs);
     1303
     1304VMMR3DECL(const char *) DBGFR3RegName(DBGFREG enmReg, DBGFREGVALTYPE enmType);
    12221305
    12231306
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette