Changeset 66885 in vbox
- Timestamp:
- May 12, 2017 7:59:22 PM (8 years ago)
- svn:sync-xref-src-repo-rev:
- 115390
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/dbgf.h
r64770 r66885 1682 1682 /** @todo add XMM aliases. */ 1683 1683 1684 /* AVX: */ 1685 DBGFREG_YMM0, 1686 DBGFREG_YMM1, 1687 DBGFREG_YMM2, 1688 DBGFREG_YMM3, 1689 DBGFREG_YMM4, 1690 DBGFREG_YMM5, 1691 DBGFREG_YMM6, 1692 DBGFREG_YMM7, 1693 DBGFREG_YMM8, 1694 DBGFREG_YMM9, 1695 DBGFREG_YMM10, 1696 DBGFREG_YMM11, 1697 DBGFREG_YMM12, 1698 DBGFREG_YMM13, 1699 DBGFREG_YMM14, 1700 DBGFREG_YMM15, 1701 1684 1702 /* System registers: */ 1685 1703 DBGFREG_GDTR_BASE, … … 1764 1782 /** Unsigned 128-bit register value. */ 1765 1783 DBGFREGVALTYPE_U128, 1784 /** Unsigned 256-bit register value. */ 1785 DBGFREGVALTYPE_U256, 1786 /** Unsigned 512-bit register value. */ 1787 DBGFREGVALTYPE_U512, 1766 1788 /** Long double register value. */ 1767 1789 DBGFREGVALTYPE_R80, … … 1781 1803 typedef union DBGFREGVAL 1782 1804 { 1783 uint64_t au64[ 2]; /**< The 64-bit array view. First because of the initializer. */1784 uint32_t au32[ 4];/**< The 32-bit array view. */1785 uint16_t au16[ 8];/**< The 16-bit array view. */1786 uint8_t au8[ 16]; /**< The 8-bit array view. */1805 uint64_t au64[8]; /**< The 64-bit array view. First because of the initializer. */ 1806 uint32_t au32[16]; /**< The 32-bit array view. */ 1807 uint16_t au16[32]; /**< The 16-bit array view. */ 1808 uint8_t au8[64]; /**< The 8-bit array view. */ 1787 1809 1788 1810 uint8_t u8; /**< The 8-bit view. */ … … 1791 1813 uint64_t u64; /**< The 64-bit view. */ 1792 1814 RTUINT128U u128; /**< The 128-bit view. */ 1815 RTUINT256U u256; /**< The 256-bit view. */ 1816 RTUINT512U u512; /**< The 512-bit view. */ 1793 1817 RTFLOAT80U r80; /**< The 80-bit floating point view. */ 1794 1818 RTFLOAT80U2 r80Ex; /**< The 80-bit floating point view v2. */ … … 1801 1825 uint32_t u32Limit; 1802 1826 } dtr; 1803 1804 RTUINT128U u;1805 1827 } DBGFREGVAL; 1806 1828 /** Pointer to a generic register value type. */ … … 1810 1832 1811 1833 /** Initialize a DBGFREGVAL variable to all zeros. */ 1812 #define DBGFREGVAL_INITIALIZE_ZERO { { 0, 0 } }1834 #define DBGFREGVAL_INITIALIZE_ZERO { { 0, 0, 0, 0, 0, 0, 0, 0 } } 1813 1835 /** Initialize a DBGFREGVAL variable to all bits set . */ 1814 #define DBGFREGVAL_INITIALIZE_FFFF { { UINT64_MAX, UINT64_MAX } }1836 #define DBGFREGVAL_INITIALIZE_FFFF { { UINT64_MAX, UINT64_MAX, UINT64_MAX, UINT64_MAX, UINT64_MAX, UINT64_MAX, UINT64_MAX, UINT64_MAX } } 1815 1837 1816 1838 -
trunk/src/VBox/Debugger/DBGCOps.cpp
r65645 r66885 470 470 return VINF_SUCCESS; 471 471 472 case DBGFREGVALTYPE_U256: 473 DBGCVAR_INIT_NUMBER(pResult, Value.u256.QWords.qw0); 474 return VINF_SUCCESS; 475 476 case DBGFREGVALTYPE_U512: 477 DBGCVAR_INIT_NUMBER(pResult, Value.u512.QWords.qw0); 478 return VINF_SUCCESS; 479 472 480 case DBGFREGVALTYPE_R80: 473 481 #ifdef RT_COMPILER_WITH_80BIT_LONG_DOUBLE -
trunk/src/VBox/VMM/VMMR3/CPUMDbg.cpp
r64655 r66885 51 51 case DBGFREGVALTYPE_U64: pValue->u64 = *(uint64_t const *)pv; return VINF_SUCCESS; 52 52 case DBGFREGVALTYPE_U128: pValue->u128 = *(PCRTUINT128U )pv; return VINF_SUCCESS; 53 case DBGFREGVALTYPE_U256: pValue->u256 = *(PCRTUINT256U )pv; return VINF_SUCCESS; 54 case DBGFREGVALTYPE_U512: pValue->u512 = *(PCRTUINT512U )pv; return VINF_SUCCESS; 53 55 default: 54 56 AssertMsgFailedReturn(("%d %s\n", pDesc->enmType, pDesc->pszName), VERR_IPE_NOT_REACHED_DEFAULT_CASE); … … 342 344 } 343 345 346 347 /** 348 * @interface_method_impl{DBGFREGDESC,pfnGet} 349 */ 350 static DECLCALLBACK(int) cpumR3RegGet_ymm(void *pvUser, PCDBGFREGDESC pDesc, PDBGFREGVAL pValue) 351 { 352 PVMCPU pVCpu = (PVMCPU)pvUser; 353 uint32_t iReg = pDesc->offRegister; 354 355 Assert(pDesc->enmType == DBGFREGVALTYPE_U256); 356 VMCPU_ASSERT_EMT(pVCpu); 357 358 if (iReg < 16) 359 { 360 pValue->u256.DQWords.dqw0 = pVCpu->cpum.s.Guest.pXStateR3->x87.aXMM[iReg].uXmm; 361 pValue->u256.DQWords.dqw1 = pVCpu->cpum.s.Guest.pXStateR3->u.YmmHi.aYmmHi[iReg].uXmm; 362 return VINF_SUCCESS; 363 } 364 return VERR_NOT_IMPLEMENTED; 365 } 366 367 368 /** 369 * @interface_method_impl{DBGFREGDESC,pfnSet} 370 */ 371 static DECLCALLBACK(int) cpumR3RegSet_ymm(void *pvUser, PCDBGFREGDESC pDesc, PCDBGFREGVAL pValue, PCDBGFREGVAL pfMask) 372 { 373 PVMCPU pVCpu = (PVMCPU)pvUser; 374 uint32_t iReg = pDesc->offRegister; 375 376 Assert(pDesc->enmType == DBGFREGVALTYPE_U256); 377 VMCPU_ASSERT_EMT(pVCpu); 378 379 if (iReg < 16) 380 { 381 RTUINT128U Val; 382 RTUInt128AssignAnd(&pVCpu->cpum.s.Guest.pXStateR3->x87.aXMM[iReg].uXmm, 383 RTUInt128AssignBitwiseNot(RTUInt128Assign(&Val, &pfMask->u256.DQWords.dqw0))); 384 RTUInt128AssignOr(&pVCpu->cpum.s.Guest.pXStateR3->u.YmmHi.aYmmHi[iReg].uXmm, 385 RTUInt128AssignAnd(RTUInt128Assign(&Val, &pValue->u128), &pfMask->u128)); 386 387 } 388 return VERR_NOT_IMPLEMENTED; 389 } 344 390 345 391 … … 949 995 }; 950 996 997 #if 0 /* needs special accessor, too lazy for that now. */ 998 /** Sub-fields for the YMM registers. */ 999 static DBGFREGSUBFIELD const g_aCpumRegFields_ymmN[] = 1000 { 1001 DBGFREGSUBFIELD_RW("r0", 0, 32, 0), 1002 DBGFREGSUBFIELD_RW("r0.man", 0+ 0, 23, 0), 1003 DBGFREGSUBFIELD_RW("r0.exp", 0+23, 8, 0), 1004 DBGFREGSUBFIELD_RW("r0.sig", 0+31, 1, 0), 1005 DBGFREGSUBFIELD_RW("r1", 32, 32, 0), 1006 DBGFREGSUBFIELD_RW("r1.man", 32+ 0, 23, 0), 1007 DBGFREGSUBFIELD_RW("r1.exp", 32+23, 8, 0), 1008 DBGFREGSUBFIELD_RW("r1.sig", 32+31, 1, 0), 1009 DBGFREGSUBFIELD_RW("r2", 64, 32, 0), 1010 DBGFREGSUBFIELD_RW("r2.man", 64+ 0, 23, 0), 1011 DBGFREGSUBFIELD_RW("r2.exp", 64+23, 8, 0), 1012 DBGFREGSUBFIELD_RW("r2.sig", 64+31, 1, 0), 1013 DBGFREGSUBFIELD_RW("r3", 96, 32, 0), 1014 DBGFREGSUBFIELD_RW("r3.man", 96+ 0, 23, 0), 1015 DBGFREGSUBFIELD_RW("r3.exp", 96+23, 8, 0), 1016 DBGFREGSUBFIELD_RW("r3.sig", 96+31, 1, 0), 1017 DBGFREGSUBFIELD_RW("r4", 128, 32, 0), 1018 DBGFREGSUBFIELD_RW("r4.man", 128+ 0, 23, 0), 1019 DBGFREGSUBFIELD_RW("r4.exp", 128+23, 8, 0), 1020 DBGFREGSUBFIELD_RW("r4.sig", 128+31, 1, 0), 1021 DBGFREGSUBFIELD_RW("r5", 160, 32, 0), 1022 DBGFREGSUBFIELD_RW("r5.man", 160+ 0, 23, 0), 1023 DBGFREGSUBFIELD_RW("r5.exp", 160+23, 8, 0), 1024 DBGFREGSUBFIELD_RW("r5.sig", 160+31, 1, 0), 1025 DBGFREGSUBFIELD_RW("r6", 192, 32, 0), 1026 DBGFREGSUBFIELD_RW("r6.man", 192+ 0, 23, 0), 1027 DBGFREGSUBFIELD_RW("r6.exp", 192+23, 8, 0), 1028 DBGFREGSUBFIELD_RW("r6.sig", 192+31, 1, 0), 1029 DBGFREGSUBFIELD_RW("r7", 224, 32, 0), 1030 DBGFREGSUBFIELD_RW("r7.man", 224+ 0, 23, 0), 1031 DBGFREGSUBFIELD_RW("r7.exp", 224+23, 8, 0), 1032 DBGFREGSUBFIELD_RW("r7.sig", 224+31, 1, 0), 1033 DBGFREGSUBFIELD_TERMINATOR() 1034 }; 1035 #endif 1036 951 1037 /** Sub-fields for the CR0 register. */ 952 1038 static DBGFREGSUBFIELD const g_aCpumRegFields_cr0[] = … … 1111 1197 1112 1198 #define CPU_REG_MM(n) \ 1113 CPU_REG_XS_RW_AS("mm" #n, MM##n, U64, x87.aRegs[n].mmx, cpumR3RegGet_XStateGeneric, cpumR3RegSet_XStateGeneric, NULL, 1199 CPU_REG_XS_RW_AS("mm" #n, MM##n, U64, x87.aRegs[n].mmx, cpumR3RegGet_XStateGeneric, cpumR3RegSet_XStateGeneric, NULL, g_aCpumRegFields_mmN) 1114 1200 1115 1201 #define CPU_REG_XMM(n) \ 1116 CPU_REG_XS_RW_AS("xmm" #n, XMM##n, U128, x87.aXMM[n].xmm, cpumR3RegGet_XStateGeneric, cpumR3RegSet_XStateGeneric, NULL, g_aCpumRegFields_xmmN) 1202 CPU_REG_XS_RW_AS("xmm" #n, XMM##n, U128, x87.aXMM[n].xmm, cpumR3RegGet_XStateGeneric, cpumR3RegSet_XStateGeneric, NULL, g_aCpumRegFields_xmmN) 1203 1204 #define CPU_REG_YMM(n) \ 1205 { "ymm" #n, DBGFREG_YMM##n, DBGFREGVALTYPE_U256, 0 /*fFlags*/, n, cpumR3RegGet_ymm, cpumR3RegSet_ymm, NULL /*paAliases*/, NULL /*paSubFields*/ } 1206 1117 1207 /** @} */ 1118 1208 … … 1202 1292 CPU_REG_XMM(14), 1203 1293 CPU_REG_XMM(15), 1294 CPU_REG_YMM(0), 1295 CPU_REG_YMM(1), 1296 CPU_REG_YMM(2), 1297 CPU_REG_YMM(3), 1298 CPU_REG_YMM(4), 1299 CPU_REG_YMM(5), 1300 CPU_REG_YMM(6), 1301 CPU_REG_YMM(7), 1302 CPU_REG_YMM(8), 1303 CPU_REG_YMM(9), 1304 CPU_REG_YMM(10), 1305 CPU_REG_YMM(11), 1306 CPU_REG_YMM(12), 1307 CPU_REG_YMM(13), 1308 CPU_REG_YMM(14), 1309 CPU_REG_YMM(15), 1204 1310 CPU_REG_RW_AS("gdtr_base", GDTR_BASE, U64, gdtr.pGdt, cpumR3RegGet_Generic, cpumR3RegSet_Generic, NULL, NULL ), 1205 1311 CPU_REG_RW_AS("gdtr_lim", GDTR_LIMIT, U16, gdtr.cbGdt, cpumR3RegGet_Generic, cpumR3RegSet_Generic, NULL, NULL ), … … 1330 1436 CPU_REG_DUMMY("xmm14", XMM14, U128), 1331 1437 CPU_REG_DUMMY("xmm15", XMM15, U128), 1438 CPU_REG_DUMMY("ymm0", YMM0, U256), 1439 CPU_REG_DUMMY("ymm1", YMM1, U256), 1440 CPU_REG_DUMMY("ymm2", YMM2, U256), 1441 CPU_REG_DUMMY("ymm3", YMM3, U256), 1442 CPU_REG_DUMMY("ymm4", YMM4, U256), 1443 CPU_REG_DUMMY("ymm5", YMM5, U256), 1444 CPU_REG_DUMMY("ymm6", YMM6, U256), 1445 CPU_REG_DUMMY("ymm7", YMM7, U256), 1446 CPU_REG_DUMMY("ymm8", YMM8, U256), 1447 CPU_REG_DUMMY("ymm9", YMM9, U256), 1448 CPU_REG_DUMMY("ymm10", YMM10, U256), 1449 CPU_REG_DUMMY("ymm11", YMM11, U256), 1450 CPU_REG_DUMMY("ymm12", YMM12, U256), 1451 CPU_REG_DUMMY("ymm13", YMM13, U256), 1452 CPU_REG_DUMMY("ymm14", YMM14, U256), 1453 CPU_REG_DUMMY("ymm15", YMM15, U256), 1332 1454 CPU_REG_RW_AS("gdtr_base", GDTR_BASE, U64, gdtr.pGdt, cpumR3RegGet_Generic, cpumR3RegSet_Generic, NULL, NULL ), 1333 1455 CPU_REG_RW_AS("gdtr_lim", GDTR_LIMIT, U16, gdtr.cbGdt, cpumR3RegGet_Generic, cpumR3RegSet_Generic, NULL, NULL ), -
trunk/src/VBox/VMM/VMMR3/DBGFReg.cpp
r62637 r66885 552 552 pValue->au64[0] = 0; 553 553 pValue->au64[1] = 0; 554 pValue->au64[2] = 0; 555 pValue->au64[3] = 0; 556 pValue->au64[4] = 0; 557 pValue->au64[5] = 0; 558 pValue->au64[6] = 0; 559 pValue->au64[7] = 0; 554 560 } 555 561 … … 648 654 case DBGFREGVALTYPE_U64: pValue->u64 = InVal.u8; return VINF_DBGF_ZERO_EXTENDED_REGISTER; 649 655 case DBGFREGVALTYPE_U128: pValue->u128.s.Lo = InVal.u8; return VINF_DBGF_ZERO_EXTENDED_REGISTER; 656 case DBGFREGVALTYPE_U256: pValue->u256.Words.w0 = InVal.u8; return VINF_DBGF_ZERO_EXTENDED_REGISTER; 657 case DBGFREGVALTYPE_U512: pValue->u512.Words.w0 = InVal.u8; return VINF_DBGF_ZERO_EXTENDED_REGISTER; 650 658 case DBGFREGVALTYPE_R80: dbgfR3RegValR80SetU64(pValue, InVal.u8); return VINF_DBGF_ZERO_EXTENDED_REGISTER; 651 659 case DBGFREGVALTYPE_DTR: return VERR_DBGF_UNSUPPORTED_CAST; … … 666 674 case DBGFREGVALTYPE_U64: pValue->u64 = InVal.u16; return VINF_DBGF_ZERO_EXTENDED_REGISTER; 667 675 case DBGFREGVALTYPE_U128: pValue->u128.s.Lo = InVal.u16; return VINF_DBGF_ZERO_EXTENDED_REGISTER; 676 case DBGFREGVALTYPE_U256: pValue->u256.Words.w0 = InVal.u16; return VINF_DBGF_ZERO_EXTENDED_REGISTER; 677 case DBGFREGVALTYPE_U512: pValue->u512.Words.w0 = InVal.u16; return VINF_DBGF_ZERO_EXTENDED_REGISTER; 668 678 case DBGFREGVALTYPE_R80: dbgfR3RegValR80SetU64(pValue, InVal.u16); return VINF_DBGF_ZERO_EXTENDED_REGISTER; 669 679 case DBGFREGVALTYPE_DTR: return VERR_DBGF_UNSUPPORTED_CAST; … … 684 694 case DBGFREGVALTYPE_U64: pValue->u64 = InVal.u32; return VINF_DBGF_ZERO_EXTENDED_REGISTER; 685 695 case DBGFREGVALTYPE_U128: pValue->u128.s.Lo = InVal.u32; return VINF_DBGF_ZERO_EXTENDED_REGISTER; 696 case DBGFREGVALTYPE_U256: pValue->u256.DWords.dw0 = InVal.u32; return VINF_DBGF_ZERO_EXTENDED_REGISTER; 697 case DBGFREGVALTYPE_U512: pValue->u512.DWords.dw0 = InVal.u32; return VINF_DBGF_ZERO_EXTENDED_REGISTER; 686 698 case DBGFREGVALTYPE_R80: dbgfR3RegValR80SetU64(pValue, InVal.u32); return VINF_DBGF_ZERO_EXTENDED_REGISTER; 687 699 case DBGFREGVALTYPE_DTR: return VERR_DBGF_UNSUPPORTED_CAST; … … 702 714 case DBGFREGVALTYPE_U64: pValue->u64 = InVal.u64; return VINF_SUCCESS; 703 715 case DBGFREGVALTYPE_U128: pValue->u128.s.Lo = InVal.u64; return VINF_DBGF_TRUNCATED_REGISTER; 716 case DBGFREGVALTYPE_U256: pValue->u256.QWords.qw0 = InVal.u64; return VINF_DBGF_TRUNCATED_REGISTER; 717 case DBGFREGVALTYPE_U512: pValue->u512.QWords.qw0 = InVal.u64; return VINF_DBGF_TRUNCATED_REGISTER; 704 718 case DBGFREGVALTYPE_R80: dbgfR3RegValR80SetU64(pValue, InVal.u64); return VINF_DBGF_TRUNCATED_REGISTER; 705 719 case DBGFREGVALTYPE_DTR: return VERR_DBGF_UNSUPPORTED_CAST; … … 720 734 case DBGFREGVALTYPE_U64: pValue->u64 = InVal.u128.s.Lo; return VINF_DBGF_TRUNCATED_REGISTER; 721 735 case DBGFREGVALTYPE_U128: pValue->u128 = InVal.u128; return VINF_SUCCESS; 736 case DBGFREGVALTYPE_U256: pValue->u256.DQWords.dqw0 = InVal.u128; return VINF_SUCCESS; 737 case DBGFREGVALTYPE_U512: pValue->u512.DQWords.dqw0 = InVal.u128; return VINF_SUCCESS; 722 738 case DBGFREGVALTYPE_R80: dbgfR3RegValR80SetU128(pValue, InVal.u128); return VINF_DBGF_TRUNCATED_REGISTER; 723 739 case DBGFREGVALTYPE_DTR: return VERR_DBGF_UNSUPPORTED_CAST; 740 741 case DBGFREGVALTYPE_32BIT_HACK: 742 case DBGFREGVALTYPE_END: 743 case DBGFREGVALTYPE_INVALID: 744 break; 745 } 746 break; 747 748 case DBGFREGVALTYPE_U256: 749 switch (enmToType) 750 { 751 case DBGFREGVALTYPE_U8: pValue->u8 = InVal.u256.Words.w0; return VINF_DBGF_TRUNCATED_REGISTER; 752 case DBGFREGVALTYPE_U16: pValue->u16 = InVal.u256.Words.w0; return VINF_DBGF_TRUNCATED_REGISTER; 753 case DBGFREGVALTYPE_U32: pValue->u32 = InVal.u256.DWords.dw0; return VINF_DBGF_TRUNCATED_REGISTER; 754 case DBGFREGVALTYPE_U64: pValue->u64 = InVal.u256.QWords.qw0; return VINF_DBGF_TRUNCATED_REGISTER; 755 case DBGFREGVALTYPE_U128: pValue->u128 = InVal.u256.DQWords.dqw0; return VINF_DBGF_TRUNCATED_REGISTER; 756 case DBGFREGVALTYPE_U256: pValue->u256 = InVal.u256; return VINF_SUCCESS; 757 case DBGFREGVALTYPE_U512: pValue->u512.OWords.ow0 = InVal.u256; return VINF_SUCCESS; 758 case DBGFREGVALTYPE_R80: dbgfR3RegValR80SetU128(pValue, InVal.u256.DQWords.dqw0); return VINF_DBGF_TRUNCATED_REGISTER; 759 case DBGFREGVALTYPE_DTR: return VERR_DBGF_UNSUPPORTED_CAST; 760 761 case DBGFREGVALTYPE_32BIT_HACK: 762 case DBGFREGVALTYPE_END: 763 case DBGFREGVALTYPE_INVALID: 764 break; 765 } 766 break; 767 768 case DBGFREGVALTYPE_U512: 769 switch (enmToType) 770 { 771 case DBGFREGVALTYPE_U8: pValue->u8 = InVal.u512.Words.w0; return VINF_DBGF_TRUNCATED_REGISTER; 772 case DBGFREGVALTYPE_U16: pValue->u16 = InVal.u512.Words.w0; return VINF_DBGF_TRUNCATED_REGISTER; 773 case DBGFREGVALTYPE_U32: pValue->u32 = InVal.u512.DWords.dw0; return VINF_DBGF_TRUNCATED_REGISTER; 774 case DBGFREGVALTYPE_U64: pValue->u64 = InVal.u512.QWords.qw0; return VINF_DBGF_TRUNCATED_REGISTER; 775 case DBGFREGVALTYPE_U128: pValue->u128 = InVal.u512.DQWords.dqw0; return VINF_DBGF_TRUNCATED_REGISTER; 776 case DBGFREGVALTYPE_U256: pValue->u256 = InVal.u512.OWords.ow0; return VINF_DBGF_TRUNCATED_REGISTER; 777 case DBGFREGVALTYPE_U512: pValue->u512 = InVal.u512; return VINF_SUCCESS; 778 case DBGFREGVALTYPE_R80: dbgfR3RegValR80SetU128(pValue, InVal.u512.DQWords.dqw0); return VINF_DBGF_TRUNCATED_REGISTER; 779 case DBGFREGVALTYPE_DTR: return VERR_DBGF_UNSUPPORTED_CAST; 724 780 725 781 case DBGFREGVALTYPE_32BIT_HACK: … … 738 794 case DBGFREGVALTYPE_U64: pValue->u64 = (uint64_t)dbgfR3RegValR80GetU64(&InVal); return VINF_DBGF_TRUNCATED_REGISTER; 739 795 case DBGFREGVALTYPE_U128: pValue->u128 = dbgfR3RegValR80GetU128(&InVal); return VINF_DBGF_TRUNCATED_REGISTER; 796 case DBGFREGVALTYPE_U256: pValue->u256.DQWords.dqw0 = dbgfR3RegValR80GetU128(&InVal); return VINF_DBGF_TRUNCATED_REGISTER; 797 case DBGFREGVALTYPE_U512: pValue->u512.DQWords.dqw0 = dbgfR3RegValR80GetU128(&InVal); return VINF_DBGF_TRUNCATED_REGISTER; 740 798 case DBGFREGVALTYPE_R80: pValue->r80 = InVal.r80; return VINF_SUCCESS; 741 799 case DBGFREGVALTYPE_DTR: return VERR_DBGF_UNSUPPORTED_CAST; … … 756 814 case DBGFREGVALTYPE_U64: pValue->u64 = InVal.dtr.u64Base; return VINF_DBGF_TRUNCATED_REGISTER; 757 815 case DBGFREGVALTYPE_U128: pValue->u128.s.Lo = InVal.dtr.u64Base; return VINF_DBGF_TRUNCATED_REGISTER; 816 case DBGFREGVALTYPE_U256: pValue->u256.QWords.qw0 = InVal.dtr.u64Base; return VINF_DBGF_TRUNCATED_REGISTER; 817 case DBGFREGVALTYPE_U512: pValue->u512.QWords.qw0 = InVal.dtr.u64Base; return VINF_DBGF_TRUNCATED_REGISTER; 758 818 case DBGFREGVALTYPE_R80: dbgfR3RegValR80SetU64(pValue, InVal.dtr.u64Base); return VINF_DBGF_TRUNCATED_REGISTER; 759 819 case DBGFREGVALTYPE_DTR: pValue->dtr = InVal.dtr; return VINF_SUCCESS; … … 2005 2065 Mask.u128.s.Hi = UINT64_MAX; 2006 2066 break; 2067 case DBGFREGVALTYPE_U256: 2068 Value.u256 = pValue->u256; 2069 Mask.u256.QWords.qw0 = UINT64_MAX; 2070 Mask.u256.QWords.qw1 = UINT64_MAX; 2071 Mask.u256.QWords.qw2 = UINT64_MAX; 2072 Mask.u256.QWords.qw3 = UINT64_MAX; 2073 break; 2074 case DBGFREGVALTYPE_U512: 2075 Value.u512 = pValue->u512; 2076 Mask.u512.QWords.qw0 = UINT64_MAX; 2077 Mask.u512.QWords.qw1 = UINT64_MAX; 2078 Mask.u512.QWords.qw2 = UINT64_MAX; 2079 Mask.u512.QWords.qw3 = UINT64_MAX; 2080 Mask.u512.QWords.qw4 = UINT64_MAX; 2081 Mask.u512.QWords.qw5 = UINT64_MAX; 2082 Mask.u512.QWords.qw6 = UINT64_MAX; 2083 Mask.u512.QWords.qw7 = UINT64_MAX; 2084 break; 2007 2085 case DBGFREGVALTYPE_R80: 2008 2086 #ifdef RT_COMPILER_WITH_80BIT_LONG_DOUBLE … … 2040 2118 else if (cBits <= 64) 2041 2119 enmRegType = DBGFREGVALTYPE_U64; 2120 else if (cBits <= 128) 2121 enmRegType = DBGFREGVALTYPE_U128; 2122 else if (cBits <= 256) 2123 enmRegType = DBGFREGVALTYPE_U256; 2042 2124 else 2043 enmRegType = DBGFREGVALTYPE_U 128;2125 enmRegType = DBGFREGVALTYPE_U512; 2044 2126 } 2045 2127 else if (pLookupRec->pAlias) … … 2142 2224 case DBGFREGVALTYPE_U128: 2143 2225 return RTStrFormatU128(pszBuf, cbBuf, &pValue->u128, uBase, cchWidth, cchPrecision, fFlags); 2226 case DBGFREGVALTYPE_U256: 2227 return RTStrFormatU256(pszBuf, cbBuf, &pValue->u256, uBase, cchWidth, cchPrecision, fFlags); 2228 case DBGFREGVALTYPE_U512: 2229 return RTStrFormatU512(pszBuf, cbBuf, &pValue->u512, uBase, cchWidth, cchPrecision, fFlags); 2144 2230 case DBGFREGVALTYPE_R80: 2145 2231 return RTStrFormatR80u2(pszBuf, cbBuf, &pValue->r80Ex, cchWidth, cchPrecision, fFlags); … … 2224 2310 switch (enmType) 2225 2311 { 2226 case DBGFREGVALTYPE_U8: cchWidth = 2 + fSpecial*2; break; 2227 case DBGFREGVALTYPE_U16: cchWidth = 4 + fSpecial*2; break; 2228 case DBGFREGVALTYPE_U32: cchWidth = 8 + fSpecial*2; break; 2229 case DBGFREGVALTYPE_U64: cchWidth = 16 + fSpecial*2; break; 2230 case DBGFREGVALTYPE_U128: cchWidth = 32 + fSpecial*2; break; 2312 case DBGFREGVALTYPE_U8: cchWidth = 2 + fSpecial*2; break; 2313 case DBGFREGVALTYPE_U16: cchWidth = 4 + fSpecial*2; break; 2314 case DBGFREGVALTYPE_U32: cchWidth = 8 + fSpecial*2; break; 2315 case DBGFREGVALTYPE_U64: cchWidth = 16 + fSpecial*2; break; 2316 case DBGFREGVALTYPE_U128: cchWidth = 32 + fSpecial*2; break; 2317 case DBGFREGVALTYPE_U256: cchWidth = 64 + fSpecial*2; break; 2318 case DBGFREGVALTYPE_U512: cchWidth = 128 + fSpecial*2; break; 2231 2319 case DBGFREGVALTYPE_R80: cchWidth = 0; break; 2232 2320 case DBGFREGVALTYPE_DTR: cchWidth = 16+1+4 + fSpecial*2; break;
Note:
See TracChangeset
for help on using the changeset viewer.