Changeset 73868 in vbox for trunk/include/VBox/vmm/hm_vmx.h
- Timestamp:
- Aug 24, 2018 9:02:40 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/hm_vmx.h
r73856 r73868 2875 2875 * 2876 2876 * The first 8 bytes are as per Intel spec. 24.2 "Format of the VMCS Region". 2877 * 2878 * Although the guest is supposed to access the VMCS only through the execution of 2879 * VMX instructions (VMREAD, VMWRITE etc.), since the VMCS may reside in guest 2880 * memory (e.g, active but not current VMCS), for saved-states compatibility, and 2881 * for teleportation (when implemented) any newly added fields should be added to 2882 * the appropriate reserved portions or at the end of the structure. 2877 2883 */ 2878 2884 #pragma pack(1) … … 2912 2918 /** 0x48 - Guest ES selector. */ 2913 2919 RTSEL GuestGs; 2914 /** 0x4a - Guest interrupt status (virtual-interrupt delivery). */ 2920 /** 0x4a - Guest LDTR selector. */ 2921 RTSEL GuestLdtr; 2922 /** 0x4c - Guest TR selector. */ 2923 RTSEL GuestTr; 2924 /** 0x4e - Guest interrupt status (virtual-interrupt delivery). */ 2915 2925 uint16_t u16GuestIntStatus; 2916 /** 0x 4c- PML index. */2926 /** 0x50 - PML index. */ 2917 2927 uint16_t u16PmlIndex; 2918 /** 0x 4e- Reserved for future. */2928 /** 0x52 - Reserved for future. */ 2919 2929 uint16_t au16Reserved1[8]; 2920 2930 /** @} */ … … 2922 2932 /** name 16-bit Host-state fields. 2923 2933 * @{ */ 2924 /** 0x 5e- Host ES selector. */2934 /** 0x62 - Host ES selector. */ 2925 2935 RTSEL HostEs; 2926 /** 0x6 0 - Host ES selector. */2936 /** 0x64 - Host CS selector. */ 2927 2937 RTSEL HostCs; 2928 /** 0x6 2 - Host ES selector. */2938 /** 0x66 - Host SS selector. */ 2929 2939 RTSEL HostSs; 2930 /** 0x6 4 - Host ES selector. */2940 /** 0x68 - Host DS selector. */ 2931 2941 RTSEL HostDs; 2932 /** 0x6 6 - Host ES selector. */2942 /** 0x6a - Host FS selector. */ 2933 2943 RTSEL HostFs; 2934 /** 0x6 8 - Host ES selector. */2944 /** 0x6c - Host GS selector. */ 2935 2945 RTSEL HostGs; 2936 /** 0x6a - Reserved for future. */ 2937 uint16_t au16Reserved2[11]; 2946 /** 0x6e - Host TR selector. */ 2947 RTSEL HostTr; 2948 /** 0x70 - Reserved for future. */ 2949 uint16_t au16Reserved2[10]; 2938 2950 /** @} */ 2939 2951 2940 2952 /** @name 32-bit Control fields. 2941 2953 * @{ */ 2942 /** 0x8 0- Pin-based VM-execution controls. */2954 /** 0x84 - Pin-based VM-execution controls. */ 2943 2955 uint32_t u32PinCtls; 2944 /** 0x8 4- Processor-based VM-execution controls. */2956 /** 0x88 - Processor-based VM-execution controls. */ 2945 2957 uint32_t u32ProcCtls; 2946 /** 0x8 8- Exception bitmap. */2958 /** 0x8c - Exception bitmap. */ 2947 2959 uint32_t u32XcptBitmap; 2948 /** 0x 8c- Page-fault exception error mask. */2960 /** 0x90 - Page-fault exception error mask. */ 2949 2961 uint32_t u32XcptPFMask; 2950 /** 0x9 0- Page-fault exception error match. */2962 /** 0x94 - Page-fault exception error match. */ 2951 2963 uint32_t u32XcptPFMatch; 2952 /** 0x9 4- CR3-target count. */2964 /** 0x98 - CR3-target count. */ 2953 2965 uint32_t u32Cr3TargetCount; 2954 /** 0x9 8- VM-exit controls. */2966 /** 0x9c - VM-exit controls. */ 2955 2967 uint32_t u32ExitCtls; 2956 /** 0x 9c- VM-exit MSR store count. */2968 /** 0xa0 - VM-exit MSR store count. */ 2957 2969 uint32_t u32ExitMsrStoreCount; 2958 /** 0xa 0- VM-exit MSR load count. */2970 /** 0xa4 - VM-exit MSR load count. */ 2959 2971 uint32_t u32ExitMsrLoadCount; 2960 /** 0xa 4- VM-entry controls. */2972 /** 0xa8 - VM-entry controls. */ 2961 2973 uint32_t u32EntryCtls; 2962 /** 0xa 8- VM-entry MSR load count. */2974 /** 0xac - VM-entry MSR load count. */ 2963 2975 uint32_t u32EntryMsrLoadCount; 2964 /** 0x ac- VM-entry interruption information. */2976 /** 0xb0 - VM-entry interruption information. */ 2965 2977 uint32_t u32EntryIntInfo; 2966 /** 0xb 0- VM-entry exception error code. */2978 /** 0xb4 - VM-entry exception error code. */ 2967 2979 uint32_t u32EntryXcptErrCode; 2968 /** 0xb 4- VM-entry instruction length. */2980 /** 0xb8 - VM-entry instruction length. */ 2969 2981 uint32_t u32EntryInstrLen; 2970 /** 0xb 8- TPR-treshold. */2982 /** 0xbc - TPR-treshold. */ 2971 2983 uint32_t u32TprTreshold; 2972 /** 0x bc- Secondary-processor based VM-execution controls. */2984 /** 0xc0 - Secondary-processor based VM-execution controls. */ 2973 2985 uint32_t u32ProcCtls2; 2974 /** 0xc 0- Pause-loop exiting Gap. */2986 /** 0xc4 - Pause-loop exiting Gap. */ 2975 2987 uint32_t u32PleGap; 2976 /** 0xc 4- Pause-loop exiting Window. */2988 /** 0xc8 - Pause-loop exiting Window. */ 2977 2989 uint32_t u32PleWindow; 2978 /** 0xc 8- Reserved for future. */2990 /** 0xcc - Reserved for future. */ 2979 2991 uint32_t au32Reserved1[8]; 2980 2992 /** @} */ … … 2982 2994 /** @name 32-bit Read-only Data fields. 2983 2995 * @{ */ 2984 /** 0xe 8- VM-instruction error. */2996 /** 0xec - VM-instruction error. */ 2985 2997 uint32_t u32RoVmInstrError; 2986 /** 0x ec- VM-exit reason. */2998 /** 0xf0 - VM-exit reason. */ 2987 2999 uint32_t u32RoVmExitReason; 2988 /** 0xf 0- VM-exit interruption information. */3000 /** 0xf4 - VM-exit interruption information. */ 2989 3001 uint32_t u32RoVmExitIntInfo; 2990 /** 0xf 4- VM-exit interruption error code. */3002 /** 0xf8 - VM-exit interruption error code. */ 2991 3003 uint32_t u32RoVmExitErrCode; 2992 /** 0xf 8- IDT-vectoring information. */3004 /** 0xfc - IDT-vectoring information. */ 2993 3005 uint32_t u32RoIdtVectoringInfo; 2994 /** 0x fc- IDT-vectoring error code. */3006 /** 0x100 - IDT-vectoring error code. */ 2995 3007 uint32_t u32RoIdtVectoringErrCode; 2996 /** 0x10 0- VM-exit instruction length. */3008 /** 0x104 - VM-exit instruction length. */ 2997 3009 uint32_t u32RoVmExitInstrLen; 2998 /** 0x10 4- VM-exit instruction information. */3010 /** 0x108 - VM-exit instruction information. */ 2999 3011 uint32_t u32RoVmExitInstrInfo; 3000 /** 0x10 8- Reserved for future. */3012 /** 0x10c - Reserved for future. */ 3001 3013 uint32_t au32RoReserved2[8]; 3002 3014 /** @} */ … … 3004 3016 /** @name 32-bit Guest-state fields. 3005 3017 * @{ */ 3006 /** 0x12 8- Guest ES limit. */3018 /** 0x12c - Guest ES limit. */ 3007 3019 uint32_t u32GuestEsLimit; 3008 /** 0x1 2c - Guest ES limit. */3020 /** 0x130 - Guest CS limit. */ 3009 3021 uint32_t u32GuestCsLimit; 3010 /** 0x13 0 - Guest ES limit. */3022 /** 0x134 - Guest SS limit. */ 3011 3023 uint32_t u32GuestSsLimit; 3012 /** 0x13 4 - Guest ES limit. */3024 /** 0x138 - Guest DS limit. */ 3013 3025 uint32_t u32GuestDsLimit; 3014 /** 0x13 8 - Guest ES limit. */3026 /** 0x13c - Guest FS limit. */ 3015 3027 uint32_t u32GuestFsLimit; 3016 /** 0x1 3c - Guest ES limit. */3028 /** 0x140 - Guest GS limit. */ 3017 3029 uint32_t u32GuestGsLimit; 3018 /** 0x14 0- Guest LDTR limit. */3030 /** 0x144 - Guest LDTR limit. */ 3019 3031 uint32_t u32GuestLdtrLimit; 3020 /** 0x14 4- Guest TR limit. */3032 /** 0x148 - Guest TR limit. */ 3021 3033 uint32_t u32GuestTrLimit; 3022 /** 0x14 8- Guest GDTR limit. */3034 /** 0x14c - Guest GDTR limit. */ 3023 3035 uint32_t u32GuestGdtrLimit; 3024 /** 0x1 4c- Guest IDTR limit. */3036 /** 0x150 - Guest IDTR limit. */ 3025 3037 uint32_t u32GuestIdtrLimit; 3026 /** 0x15 0- Guest ES attributes. */3027 uint32_t u32GuestE SAttr;3028 /** 0x15 4- Guest CS attributes. */3029 uint32_t u32GuestC SAttr;3030 /** 0x15 8- Guest SS attributes. */3031 uint32_t u32GuestS SAttr;3032 /** 0x1 5c- Guest DS attributes. */3033 uint32_t u32GuestD SAttr;3034 /** 0x16 0- Guest FS attributes. */3035 uint32_t u32GuestF SAttr;3036 /** 0x16 4- Guest GS attributes. */3037 uint32_t u32GuestG SAttr;3038 /** 0x16 8- Guest LDTR attributes. */3038 /** 0x154 - Guest ES attributes. */ 3039 uint32_t u32GuestEsAttr; 3040 /** 0x158 - Guest CS attributes. */ 3041 uint32_t u32GuestCsAttr; 3042 /** 0x15c - Guest SS attributes. */ 3043 uint32_t u32GuestSsAttr; 3044 /** 0x160 - Guest DS attributes. */ 3045 uint32_t u32GuestDsAttr; 3046 /** 0x164 - Guest FS attributes. */ 3047 uint32_t u32GuestFsAttr; 3048 /** 0x168 - Guest GS attributes. */ 3049 uint32_t u32GuestGsAttr; 3050 /** 0x16c - Guest LDTR attributes. */ 3039 3051 uint32_t u32GuestLdtrAttr; 3040 /** 0x1 6c- Guest TR attributes. */3052 /** 0x170 - Guest TR attributes. */ 3041 3053 uint32_t u32GuestTrAttr; 3042 /** 0x17 0- Guest interruptibility state. */3054 /** 0x174 - Guest interruptibility state. */ 3043 3055 uint32_t u32GuestIntrState; 3044 /** 0x17 4- Guest activity state. */3056 /** 0x178 - Guest activity state. */ 3045 3057 uint32_t u32GuestActivityState; 3046 /** 0x17 8- Guest SMBASE. */3058 /** 0x17c - Guest SMBASE. */ 3047 3059 uint32_t u32GuestSmBase; 3048 /** 0x1 7c- Guest SYSENTER CS. */3060 /** 0x180 - Guest SYSENTER CS. */ 3049 3061 uint32_t u32GuestSysenterCS; 3050 /** 0x18 0- Preemption timer value. */3062 /** 0x184 - Preemption timer value. */ 3051 3063 uint32_t u32PreemptTimer; 3052 /** 0x18 4- Reserved for future. */3064 /** 0x188 - Reserved for future. */ 3053 3065 uint32_t au32Reserved3[8]; 3054 3066 /** @} */ … … 3056 3068 /** @name 32-bit Host-state fields. 3057 3069 * @{ */ 3058 /** 0x1a 4- Host SYSENTER CS. */3070 /** 0x1a8 - Host SYSENTER CS. */ 3059 3071 uint32_t u32HostSysenterCs; 3060 /** 0x1a 8- Reserved for future. */3061 uint32_t au32Reserved4[1 2];3072 /** 0x1ac - Reserved for future. */ 3073 uint32_t au32Reserved4[11]; 3062 3074 /** @} */ 3063 3075 … … 3069 3081 RTUINT64U u64AddrIoBitmapB; 3070 3082 /** 0x1e8 - MSR bitmap address. */ 3071 RTUINT64U u64AddrMsrBitmap A;3083 RTUINT64U u64AddrMsrBitmap; 3072 3084 /** 0x1f0 - VM-exit MSR-store area address. */ 3073 3085 RTUINT64U u64AddrVmExitMsrStore; … … 3191 3203 /** 0x618 - I/O RCX. */ 3192 3204 RTUINT64U u64IoRcx; 3193 /** 0x620 - I/O R CX. */3205 /** 0x620 - I/O RSI. */ 3194 3206 RTUINT64U u64IoRsi; 3195 /** 0x628 - I/O R CX. */3207 /** 0x628 - I/O RDI. */ 3196 3208 RTUINT64U u64IoRdi; 3197 /** 0x630 - I/O R CX. */3209 /** 0x630 - I/O RIP. */ 3198 3210 RTUINT64U u64IoRip; 3199 /** 0x638 - I/O RCX. */3200 RTUINT64U u64 AddrGuestLinear;3211 /** 0x638 - Guest-linear address. */ 3212 RTUINT64U u64GuestLinearAddr; 3201 3213 /** 0x640 - Reserved for future. */ 3202 3214 RTUINT64U au64Reserved5[16]; … … 3212 3224 RTUINT64U u64GuestCr4; 3213 3225 /** 0x6d8 - Guest ES base. */ 3214 RTUINT64U u64GuestE SBase;3226 RTUINT64U u64GuestEsBase; 3215 3227 /** 0x6e0 - Guest CS base. */ 3216 RTUINT64U u64GuestC SBase;3228 RTUINT64U u64GuestCsBase; 3217 3229 /** 0x6e8 - Guest SS base. */ 3218 RTUINT64U u64GuestS SBase;3230 RTUINT64U u64GuestSsBase; 3219 3231 /** 0x6f0 - Guest DS base. */ 3220 RTUINT64U u64GuestD SBase;3232 RTUINT64U u64GuestDsBase; 3221 3233 /** 0x6f8 - Guest FS base. */ 3222 RTUINT64U u64GuestF SBase;3234 RTUINT64U u64GuestFsBase; 3223 3235 /** 0x700 - Guest GS base. */ 3224 RTUINT64U u64GuestG SBase;3236 RTUINT64U u64GuestGsBase; 3225 3237 /** 0x708 - Guest LDTR base. */ 3226 3238 RTUINT64U u64GuestLdtrBase; … … 3238 3250 RTUINT64U u64GuestRip; 3239 3251 /** 0x740 - Guest RFLAGS. */ 3240 RTUINT64U u64GuestR flags;3252 RTUINT64U u64GuestRFlags; 3241 3253 /** 0x748 - Guest pending debug exception. */ 3242 3254 RTUINT64U u64GuestPendingDbgXcpt; … … 3291 3303 AssertCompileMemberOffset(VMXVVMCS, u16Vpid, 0x028); 3292 3304 AssertCompileMemberOffset(VMXVVMCS, GuestEs, 0x03e); 3293 AssertCompileMemberOffset(VMXVVMCS, HostEs, 0x0 5e);3294 AssertCompileMemberOffset(VMXVVMCS, u32PinCtls, 0x08 0);3295 AssertCompileMemberOffset(VMXVVMCS, u32RoVmInstrError, 0x0e 8);3296 AssertCompileMemberOffset(VMXVVMCS, u32GuestEsLimit, 0x12 8);3297 AssertCompileMemberOffset(VMXVVMCS, u32HostSysenterCs, 0x1a 4);3305 AssertCompileMemberOffset(VMXVVMCS, HostEs, 0x062); 3306 AssertCompileMemberOffset(VMXVVMCS, u32PinCtls, 0x084); 3307 AssertCompileMemberOffset(VMXVVMCS, u32RoVmInstrError, 0x0ec); 3308 AssertCompileMemberOffset(VMXVVMCS, u32GuestEsLimit, 0x12c); 3309 AssertCompileMemberOffset(VMXVVMCS, u32HostSysenterCs, 0x1a8); 3298 3310 AssertCompileMemberOffset(VMXVVMCS, u64AddrIoBitmapA, 0x1d8); 3299 3311 AssertCompileMemberOffset(VMXVVMCS, u64GuestPhysAddr, 0x320);
Note:
See TracChangeset
for help on using the changeset viewer.