Changeset 106099 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Sep 19, 2024 8:18:15 PM (4 months ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp
r106090 r106099 2899 2899 /* [kIemNativeGstReg_GprFirst + X86_GREG_x14] = */ { CPUMCTX_OFF_AND_SIZE(r14), "r14", }, 2900 2900 /* [kIemNativeGstReg_GprFirst + X86_GREG_x15] = */ { CPUMCTX_OFF_AND_SIZE(r15), "r15", }, 2901 /* [kIemNativeGstReg_Pc] = */ { CPUMCTX_OFF_AND_SIZE(rip), "rip", },2902 2901 /* [kIemNativeGstReg_Cr0] = */ { CPUMCTX_OFF_AND_SIZE(cr0), "cr0", }, 2902 /* [kIemNativeGstReg_Cr4] = */ { CPUMCTX_OFF_AND_SIZE(cr4), "cr4", }, 2903 2903 /* [kIemNativeGstReg_FpuFcw] = */ { CPUMCTX_OFF_AND_SIZE(XState.x87.FCW), "fcw", }, 2904 2904 /* [kIemNativeGstReg_FpuFsw] = */ { CPUMCTX_OFF_AND_SIZE(XState.x87.FSW), "fsw", }, … … 2927 2927 /* [kIemNativeGstReg_SegSelFirst + 4] = */ { CPUMCTX_OFF_AND_SIZE(aSRegs[4].Sel), "fs", }, 2928 2928 /* [kIemNativeGstReg_SegSelFirst + 5] = */ { CPUMCTX_OFF_AND_SIZE(aSRegs[5].Sel), "gs", }, 2929 /* [kIemNativeGstReg_Cr4] = */ { CPUMCTX_OFF_AND_SIZE(cr4), "cr4", },2930 2929 /* [kIemNativeGstReg_Xcr0] = */ { CPUMCTX_OFF_AND_SIZE(aXcr[0]), "xcr0", }, 2931 2930 /* [kIemNativeGstReg_MxCsr] = */ { CPUMCTX_OFF_AND_SIZE(XState.x87.MXCSR), "mxcsr", }, 2932 2931 /* [kIemNativeGstReg_EFlags] = */ { CPUMCTX_OFF_AND_SIZE(eflags), "eflags", }, 2932 /* [kIemNativeGstReg_EFlags.Cf] = */ { UINT32_MAX, 0, "efl.cf", }, 2933 /* [kIemNativeGstReg_EFlags.Of] = */ { UINT32_MAX, 0, "efl.of", }, 2934 /* [kIemNativeGstReg_EFlags.Af] = */ { UINT32_MAX, 0, "efl.af", }, 2935 /* [kIemNativeGstReg_EFlags.Zf] = */ { UINT32_MAX, 0, "efl.zf", }, 2936 /* [kIemNativeGstReg_EFlags.Sf] = */ { UINT32_MAX, 0, "efl.sf", }, 2937 /* [kIemNativeGstReg_EFlags.Of] = */ { UINT32_MAX, 0, "efl.of", }, 2938 /* [kIemNativeGstReg_Pc] = */ { CPUMCTX_OFF_AND_SIZE(rip), "rip", }, 2933 2939 #undef CPUMCTX_OFF_AND_SIZE 2934 2940 }; -
trunk/src/VBox/VMM/include/IEMN8veRecompiler.h
r106090 r106099 634 634 { /* bit no */ 635 635 uint64_t bmGprs : 16; /**< 0x00 / 0: The 16 general purpose registers. */ 636 uint64_t f UnusedPc : 1; /**< 0x10 / 16: (PC in )*/637 uint64_t fCr 0: 1; /**< 0x11 / 17: */636 uint64_t fCr0 : 1; /**< 0x10 / 16: */ 637 uint64_t fCr4 : 1; /**< 0x11 / 17: */ 638 638 uint64_t fFcw : 1; /**< 0x12 / 18: */ 639 639 uint64_t fFsw : 1; /**< 0x13 / 19: */ … … 642 642 uint64_t bmSegLimit : 6; /**< 0x20 / 32: */ 643 643 uint64_t bmSegSel : 6; /**< 0x26 / 38: */ 644 uint64_t f Cr4: 1; /**< 0x2c / 44: */645 uint64_t f Xcr0: 1; /**< 0x2d / 45: */646 uint64_t f MxCsr : 1; /**< 0x2e / 46:*/647 uint64_t fEfl Other : 1; /**< 0x2f / 47: Other EFLAGS bits (~X86_EFL_STATUS_BITS & X86_EFL_LIVE_MASK). First!*/648 uint64_t fEfl Cf : 1; /**< 0x30 / 48: Carry flag (X86_EFL_CF / 0). */649 uint64_t fEfl Pf : 1; /**< 0x31 / 49: Parity flag (X86_EFL_PF / 2). */650 uint64_t fEfl Af : 1; /**< 0x32 / 50: Auxilary carry flag (X86_EFL_AF / 4). */651 uint64_t fEfl Zf : 1; /**< 0x33 / 51: Zero flag (X86_EFL_ZF / 6). */652 uint64_t fEfl Sf : 1; /**< 0x34 / 52: Signed flag (X86_EFL_SF / 7). */653 uint64_t f EflOf : 1; /**< 0x35 / 53: Overflow flag (X86_EFL_OF / 12).*/644 uint64_t fXcr0 : 1; /**< 0x2c / 44: */ 645 uint64_t fMxCsr : 1; /**< 0x2d / 45: */ 646 uint64_t fEflOther : 1; /**< 0x2e / 46: Other EFLAGS bits (~X86_EFL_STATUS_BITS & X86_EFL_LIVE_MASK). First! */ 647 uint64_t fEflCf : 1; /**< 0x2f / 47: Carry flag (X86_EFL_CF / 0). */ 648 uint64_t fEflPf : 1; /**< 0x30 / 48: Parity flag (X86_EFL_PF / 2). */ 649 uint64_t fEflAf : 1; /**< 0x31 / 59: Auxilary carry flag (X86_EFL_AF / 4). */ 650 uint64_t fEflZf : 1; /**< 0x32 / 50: Zero flag (X86_EFL_ZF / 6). */ 651 uint64_t fEflSf : 1; /**< 0x33 / 51: Signed flag (X86_EFL_SF / 7). */ 652 uint64_t fEflOf : 1; /**< 0x34 / 52: Overflow flag (X86_EFL_OF / 12). */ 653 uint64_t fUnusedPc : 1; /**< 0x35 / 53: (PC in ) */ 654 654 uint64_t uUnused : 10; /* 0x36 / 54 -> 0x40/64 */ 655 655 }; … … 714 714 /** @name 64-bit value masks for IEMLIVENESSENTRY. 715 715 * @{ */ /* 0xzzzzyyyyxxxxwwww */ 716 /** @todo Changing this to 0x003ffffffffffffe would reduce the liveness code 717 * size by 3.2% on arm in extended layout. That means moving kIemNativeGstReg_Pc 718 * to zero, which may have other consequences so needs to be tested in full first. */ 719 #define IEMLIVENESSBIT_MASK UINT64_C(0x003ffffffffeffff) 716 #define IEMLIVENESSBIT_MASK UINT64_C(0x001fffffffffffff) 720 717 721 718 #ifndef IEMLIVENESS_EXTENDED_LAYOUT … … 727 724 #endif 728 725 729 #define IEMLIVENESSBIT_ALL_EFL_MASK UINT64_C(0x00 3f800000000000)730 #define IEMLIVENESSBIT_STATUS_EFL_MASK UINT64_C(0x00 3f000000000000)726 #define IEMLIVENESSBIT_ALL_EFL_MASK UINT64_C(0x001fc00000000000) 727 #define IEMLIVENESSBIT_STATUS_EFL_MASK UINT64_C(0x001f800000000000) 731 728 732 729 #ifndef IEMLIVENESS_EXTENDED_LAYOUT … … 1057 1054 kIemNativeGstReg_GprFirst = 0, 1058 1055 kIemNativeGstReg_GprLast = kIemNativeGstReg_GprFirst + 15, 1059 kIemNativeGstReg_Pc,1060 1056 kIemNativeGstReg_Cr0, 1057 kIemNativeGstReg_Cr4, 1061 1058 kIemNativeGstReg_FpuFcw, 1062 1059 kIemNativeGstReg_FpuFsw, … … 1069 1066 kIemNativeGstReg_SegSelFirst, 1070 1067 kIemNativeGstReg_SegSelLast = kIemNativeGstReg_SegSelFirst + 5, 1071 kIemNativeGstReg_Cr4,1072 1068 kIemNativeGstReg_Xcr0, 1073 1069 kIemNativeGstReg_MxCsr, 1074 kIemNativeGstReg_EFlags, /**< 32-bit, includes internal flags - last! */ 1070 kIemNativeGstReg_EFlags, /**< 32-bit, includes internal flags. */ 1071 /* 6 entry gap for liveness EFlags subdivisions. */ 1072 kIemNativeGstReg_Pc = kIemNativeGstReg_EFlags + 7, 1075 1073 kIemNativeGstReg_End 1076 1074 } IEMNATIVEGSTREG; 1077 1075 AssertCompile((int)kIemNativeGstReg_SegLimitFirst == 32); 1078 1076 AssertCompile((UINT64_C(0x7f) << kIemNativeGstReg_EFlags) == IEMLIVENESSBIT_ALL_EFL_MASK); 1077 AssertCompile(RT_BIT_64(kIemNativeGstReg_Pc) - UINT64_C(1) == IEMLIVENESSBIT_MASK); 1079 1078 1080 1079 /** @name Helpers for converting register numbers to IEMNATIVEGSTREG values.
Note:
See TracChangeset
for help on using the changeset viewer.