Changeset 22885 in vbox for trunk/include
- Timestamp:
- Sep 9, 2009 9:58:49 PM (15 years ago)
- Location:
- trunk/include/VBox
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vm.h
r22789 r22885 134 134 struct PGMCPU s; 135 135 #endif 136 char padding[ 32*1024]; /* multiple of 64 */136 char padding[28*1024]; /* multiple of 64 */ 137 137 } pgm; 138 138 … … 143 143 struct HWACCMCPU s; 144 144 #endif 145 char padding[ 6144]; /* multiple of 64 */145 char padding[5248]; /* multiple of 64 */ 146 146 } hwaccm; 147 147 … … 152 152 struct EMCPU s; 153 153 #endif 154 char padding[ 2048]; /* multiple of 64 */154 char padding[1280]; /* multiple of 64 */ 155 155 } em; 156 156 … … 179 179 struct VMMCPU s; 180 180 #endif 181 char padding[ 384]; /* multiple of 64 */181 char padding[256]; /* multiple of 64 */ 182 182 } vmm; 183 183 … … 210 210 } dbgf; 211 211 212 /** Align at page boundrary. */ 213 uint8_t abReserved[HC_ARCH_BITS == 32 ? 448 : 64]; 212 214 } VMCPU; 213 215 … … 716 718 * @remark Assume interrupts disabled. 717 719 */ 718 RTRCPTR pfnVMMGCGuestToHostAsmGuestCtx/*(int32_t eax, CPUMCTXCORE Ctx)*/;720 RTRCPTR pfnVMMGCGuestToHostAsmGuestCtx/*(int32_t eax, CPUMCTXCORE Ctx)*/; 719 721 720 722 /** … … 731 733 * @remark Assume interrupts disabled. 732 734 */ 733 RTRCPTR pfnVMMGCGuestToHostAsmHyperCtx/*(int32_t eax, PCPUMCTXCORE ecx)*/;735 RTRCPTR pfnVMMGCGuestToHostAsmHyperCtx/*(int32_t eax, PCPUMCTXCORE ecx)*/; 734 736 735 737 /** … … 743 745 * @remark Assume interrupts disabled. 744 746 */ 745 RTRCPTR pfnVMMGCGuestToHostAsm/*(int32_t eax)*/;747 RTRCPTR pfnVMMGCGuestToHostAsm/*(int32_t eax)*/; 746 748 /** @} */ 747 749 … … 749 751 /** @name Various VM data owned by VM. 750 752 * @{ */ 751 RTTHREAD uPadding1;753 RTTHREAD uPadding1; 752 754 /** The native handle of ThreadEMT. Getting the native handle 753 755 * is generally faster than getting the IPRT one (except on OS/2 :-). */ 754 RTNATIVETHREAD uPadding2;756 RTNATIVETHREAD uPadding2; 755 757 /** @} */ 756 758 … … 759 761 * @{ */ 760 762 /** Raw ring-3 indicator. */ 761 bool fRawR3Enabled;763 bool fRawR3Enabled; 762 764 /** Raw ring-0 indicator. */ 763 bool fRawR0Enabled;765 bool fRawR0Enabled; 764 766 /** PATM enabled flag. 765 767 * This is placed here for performance reasons. */ 766 bool fPATMEnabled;768 bool fPATMEnabled; 767 769 /** CSAM enabled flag. 768 770 * This is placed here for performance reasons. */ 769 bool fCSAMEnabled;771 bool fCSAMEnabled; 770 772 /** Hardware VM support is available and enabled. 771 773 * This is placed here for performance reasons. */ 772 bool fHWACCMEnabled;774 bool fHWACCMEnabled; 773 775 /** Hardware VM support is required and non-optional. 774 776 * This is initialized together with the rest of the VM structure. */ 775 bool fHwVirtExtForced;777 bool fHwVirtExtForced; 776 778 /** PARAV enabled flag. */ 777 bool fPARAVEnabled;779 bool fPARAVEnabled; 778 780 /** @} */ 779 781 … … 781 783 /* padding to make gnuc put the StatQemuToGC where msc does. */ 782 784 #if HC_ARCH_BITS == 32 783 uint32_t padding0;785 uint32_t padding0; 784 786 #endif 785 787 786 788 /** Profiling the total time from Qemu to GC. */ 787 STAMPROFILEADV StatTotalQemuToGC;789 STAMPROFILEADV StatTotalQemuToGC; 788 790 /** Profiling the total time from GC to Qemu. */ 789 STAMPROFILEADV StatTotalGCToQemu;791 STAMPROFILEADV StatTotalGCToQemu; 790 792 /** Profiling the total time spent in GC. */ 791 STAMPROFILEADV StatTotalInGC;793 STAMPROFILEADV StatTotalInGC; 792 794 /** Profiling the total time spent not in Qemu. */ 793 STAMPROFILEADV StatTotalInQemu;795 STAMPROFILEADV StatTotalInQemu; 794 796 /** Profiling the VMMSwitcher code for going to GC. */ 795 STAMPROFILEADV StatSwitcherToGC;797 STAMPROFILEADV StatSwitcherToGC; 796 798 /** Profiling the VMMSwitcher code for going to HC. */ 797 STAMPROFILEADV StatSwitcherToHC;798 STAMPROFILEADV StatSwitcherSaveRegs;799 STAMPROFILEADV StatSwitcherSysEnter;800 STAMPROFILEADV StatSwitcherDebug;801 STAMPROFILEADV StatSwitcherCR0;802 STAMPROFILEADV StatSwitcherCR4;803 STAMPROFILEADV StatSwitcherJmpCR3;804 STAMPROFILEADV StatSwitcherRstrRegs;805 STAMPROFILEADV StatSwitcherLgdt;806 STAMPROFILEADV StatSwitcherLidt;807 STAMPROFILEADV StatSwitcherLldt;808 STAMPROFILEADV StatSwitcherTSS;799 STAMPROFILEADV StatSwitcherToHC; 800 STAMPROFILEADV StatSwitcherSaveRegs; 801 STAMPROFILEADV StatSwitcherSysEnter; 802 STAMPROFILEADV StatSwitcherDebug; 803 STAMPROFILEADV StatSwitcherCR0; 804 STAMPROFILEADV StatSwitcherCR4; 805 STAMPROFILEADV StatSwitcherJmpCR3; 806 STAMPROFILEADV StatSwitcherRstrRegs; 807 STAMPROFILEADV StatSwitcherLgdt; 808 STAMPROFILEADV StatSwitcherLidt; 809 STAMPROFILEADV StatSwitcherLldt; 810 STAMPROFILEADV StatSwitcherTSS; 809 811 810 812 /** @todo Realign everything on 64 byte boundaries to better match the 811 813 * cache-line size. */ 812 814 /* padding - the unions must be aligned on 32 bytes boundraries. */ 813 uint32_t padding[HC_ARCH_BITS == 32 ? 4+8 : 6];815 uint32_t padding[HC_ARCH_BITS == 32 ? 4+8 : 6]; 814 816 815 817 /** CPUM part. */ … … 819 821 struct CPUM s; 820 822 #endif 821 char padding[2048]; /* multiple of 32*/823 uint8_t padding[1472]; /* multiple of 64 */ 822 824 } cpum; 823 825 … … 828 830 struct VMM s; 829 831 #endif 830 char padding[1600]; /* multiple of 32*/832 uint8_t padding[1536]; /* multiple of 64 */ 831 833 } vmm; 832 834 … … 837 839 struct PGM s; 838 840 #endif 839 char padding[16*1024]; /* multiple of 32*/841 uint8_t padding[5184]; /* multiple of 64 */ 840 842 } pgm; 841 843 … … 846 848 struct HWACCM s; 847 849 #endif 848 char padding[8192]; /* multiple of 32*/850 uint8_t padding[5376]; /* multiple of 64 */ 849 851 } hwaccm; 850 852 … … 855 857 struct TRPM s; 856 858 #endif 857 char padding[5344]; /* multiple of 32*/859 uint8_t padding[5184]; /* multiple of 64 */ 858 860 } trpm; 859 861 … … 864 866 struct SELM s; 865 867 #endif 866 char padding[544]; /* multiple of 32*/868 uint8_t padding[576]; /* multiple of 64 */ 867 869 } selm; 868 870 … … 873 875 struct MM s; 874 876 #endif 875 char padding[192]; /* multiple of 32*/877 uint8_t padding[192]; /* multiple of 64 */ 876 878 } mm; 877 878 /** CFGM part. */879 union880 {881 #ifdef ___CFGMInternal_h882 struct CFGM s;883 #endif884 char padding[32]; /* multiple of 32 */885 } cfgm;886 879 887 880 /** PDM part. */ … … 891 884 struct PDM s; 892 885 #endif 893 char padding[1824]; /* multiple of 32*/886 uint8_t padding[1024]; /* multiple of 64 */ 894 887 } pdm; 895 888 … … 900 893 struct IOM s; 901 894 #endif 902 char padding[4544]; /* multiple of 32*/895 uint8_t padding[768]; /* multiple of 64 */ 903 896 } iom; 904 897 … … 909 902 struct PATM s; 910 903 #endif 911 char padding[768]; /* multiple of 32*/904 uint8_t padding[768]; /* multiple of 64 */ 912 905 } patm; 913 906 … … 918 911 struct CSAM s; 919 912 #endif 920 char padding[3328]; /* multiple of 32*/913 uint8_t padding[1024]; /* multiple of 64 */ 921 914 } csam; 922 923 /** PARAV part. */924 union925 {926 #ifdef ___PARAVInternal_h927 struct PARAV s;928 #endif929 char padding[128];930 } parav;931 915 932 916 /** EM part. */ … … 936 920 struct EM s; 937 921 #endif 938 char padding[256]; /* multiple of 32*/922 uint8_t padding[256]; /* multiple of 64 */ 939 923 } em; 940 924 … … 945 929 struct TM s; 946 930 #endif 947 char padding[2112]; /* multiple of 32*/931 uint8_t padding[2112]; /* multiple of 64 */ 948 932 } tm; 949 933 … … 954 938 struct DBGF s; 955 939 #endif 956 char padding[2368]; /* multiple of 32*/940 uint8_t padding[2368]; /* multiple of 64 */ 957 941 } dbgf; 958 942 … … 963 947 struct SSM s; 964 948 #endif 965 char padding[32]; /* multiple of 32*/949 uint8_t padding[64]; /* multiple of 64 */ 966 950 } ssm; 967 968 /** VM part. */969 union970 {971 #ifdef ___VMInternal_h972 struct VMINT s;973 #endif974 char padding[768]; /* multiple of 32 */975 } vm;976 951 977 952 /** REM part. */ … … 985 960 * Must be multiple of 32 and coherent with REM_ENV_SIZE from REMInternal.h. */ 986 961 # define VM_REM_SIZE 0x11100 987 charpadding[VM_REM_SIZE]; /* multiple of 32 */962 uint8_t padding[VM_REM_SIZE]; /* multiple of 32 */ 988 963 } rem; 989 964 965 /* ---- begin small stuff ---- */ 966 967 /** VM part. */ 968 union 969 { 970 #ifdef ___VMInternal_h 971 struct VMINT s; 972 #endif 973 uint8_t padding[24]; /* multiple of 8 */ 974 } vm; 975 976 /** PARAV part. */ 977 union 978 { 979 #ifdef ___PARAVInternal_h 980 struct PARAV s; 981 #endif 982 uint8_t padding[24]; /* multiple of 8 */ 983 } parav; 984 985 /** CFGM part. */ 986 union 987 { 988 #ifdef ___CFGMInternal_h 989 struct CFGM s; 990 #endif 991 uint8_t padding[8]; /* multiple of 8 */ 992 } cfgm; 993 990 994 /** Padding for aligning the cpu array on a 64 byte boundrary. */ 991 uint32_t u32Reserved2[8]; 995 uint8_t abReserved2[8 + (HC_ARCH_BITS == 32 ? 3712 : 0)]; 996 997 /* ---- end small stuff ---- */ 992 998 993 999 /** VMCPU array for the configured number of virtual CPUs. 994 * Must be aligned on a 64-byte boundrary. */ 995 VMCPU aCpus[1]; 1000 * Must be aligned on a page boundrary for TLB hit reasons as well as 1001 * alignment of VMCPU members. */ 1002 VMCPU aCpus[1]; 996 1003 } VM; 997 1004 -
trunk/include/VBox/vm.mac
r22042 r22885 97 97 98 98 alignb 64 99 .cpum resb 2048100 .vmm resb 1 02499 .cpum resb 1472 100 .vmm resb 1536 101 101 102 102 endstruc
Note:
See TracChangeset
for help on using the changeset viewer.