VirtualBox

Changeset 47445 in vbox for trunk


Ignore:
Timestamp:
Jul 29, 2013 12:37:37 AM (11 years ago)
Author:
vboxsync
Message:

IEM,HM,PGM: Started on string I/O optimizations using IEM (disabled). Cleaned up confusing status code handling in hmR0VmxCheckForceFlags (involving PGM) as well as some use of incorrect doxygen groups (@name).

Location:
trunk/include/VBox
Files:
4 edited

Legend:

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

    r47442 r47445  
    19151915/** Invalid VMCS pointer passed to VMLAUNCH/VMRESUME. */
    19161916#define VERR_VMX_INVALID_VMCS_PTR_TO_START_VM       (-4022)
     1917/** Internal VMX processing error no 1. */
     1918#define VERR_HMVMX_IPE_1                            (-4023)
     1919/** Internal VMX processing error no 1. */
     1920#define VERR_HMVMX_IPE_2                            (-4024)
     1921/** Internal VMX processing error no 1. */
     1922#define VERR_HMVMX_IPE_3                            (-4025)
     1923/** Internal VMX processing error no 1. */
     1924#define VERR_HMVMX_IPE_4                            (-4026)
     1925/** Internal VMX processing error no 1. */
     1926#define VERR_HMVMX_IPE_5                            (-4027)
    19171927/** @} */
    19181928
     
    21572167/** The instruction is not yet implemented by IEM. */
    21582168#define VERR_IEM_INSTR_NOT_IMPLEMENTED              (-5300)
     2169/** Invalid operand size passed to an IEM function. */
     2170#define VERR_IEM_INVALID_OPERAND_SIZE               (-5301)
     2171/** Invalid address mode passed to an IEM function. */
     2172#define VERR_IEM_INVALID_ADDRESS_MODE               (-5302)
     2173/** Invalid effective segment register number passed to an IEM function. */
     2174#define VERR_IEM_INVALID_EFF_SEG                    (-5303)
     2175/** Invalid instruction length passed to an IEM function. */
     2176#define VERR_IEM_INVALID_INSTR_LENGTH               (-5304)
    21592177/** This particular aspect of the instruction is not yet implemented by IEM. */
    21602178#define VERR_IEM_ASPECT_NOT_IMPLEMENTED             (-5391)
  • trunk/include/VBox/vmm/hm_vmx.h

    r47437 r47445  
    788788#define MSR_IA32_VMX_BASIC_INFO_VMCS_MEM_TYPE(a)                (((a) >> 50) & 0xF)
    789789/** Whether the processor provides additional information for exits due to INS/OUTS. */
    790 #define MSR_IA32_VMX_BASIC_INFO_VMCS_INS_OUTS(a)                (((a) >> 54) & 1)
     790#define MSR_IA32_VMX_BASIC_INFO_VMCS_INS_OUTS(a)                RT_BOOL((a) & RT_BIT_64(54))
    791791/** @} */
    792792
     
    14131413 */
    14141414/** 0-2:   IO operation width. */
    1415 #define VMX_EXIT_QUALIFICATION_IO_WIDTH(a)                      (a & 7)
     1415#define VMX_EXIT_QUALIFICATION_IO_WIDTH(a)                      ((a) & 7)
    14161416/** 3:     IO operation direction. */
    1417 #define VMX_EXIT_QUALIFICATION_IO_DIRECTION(a)                  ((a >> 3) & 1)
    1418 /** 4:     String IO operation. */
    1419 #define VMX_EXIT_QUALIFICATION_IO_STRING(a)                     ((a >> 4) & 1)
     1417#define VMX_EXIT_QUALIFICATION_IO_DIRECTION(a)                  (((a) >> 3) & 1)
     1418/** 4:     String IO operation (INS / OUTS). */
     1419#define VMX_EXIT_QUALIFICATION_IO_IS_STRING(a)                  RT_BOOL((a) & RT_BIT_64(4))
    14201420/** 5:     Repeated IO operation. */
    1421 #define VMX_EXIT_QUALIFICATION_IO_REP(a)                        ((a >> 5) & 1)
     1421#define VMX_EXIT_QUALIFICATION_IO_IS_REP(a)                     RT_BOOL((a) & RT_BIT_64(5))
    14221422/** 6:     Operand encoding. */
    1423 #define VMX_EXIT_QUALIFICATION_IO_ENCODING(a)                   ((a >> 6) & 1)
     1423#define VMX_EXIT_QUALIFICATION_IO_ENCODING(a)                   (((a) >> 6) & 1)
    14241424/** 16-31: IO Port (0-0xffff). */
    1425 #define VMX_EXIT_QUALIFICATION_IO_PORT(a)                       ((a >> 16) & 0xffff)
     1425#define VMX_EXIT_QUALIFICATION_IO_PORT(a)                       (((a) >> 16) & 0xffff)
    14261426/* Rest reserved. */
    14271427/** @} */
     
    17761776 *
    17771777 * @returns VBox status code
     1778 * @retval  VINF_SUCCESS
     1779 * @retval  VERR_VMX_INVALID_VMCS_PTR
     1780 * @retval  VERR_VMX_INVALID_VMCS_FIELD
     1781 *
    17781782 * @param   idxField        VMCS index
    17791783 * @param   u32Val          32 bits value
     1784 *
     1785 * @remarks The values of the two status codes can be ORed together, the result
     1786 *          will be VERR_VMX_INVALID_VMCS_PTR.
    17801787 */
    17811788#if ((RT_INLINE_ASM_EXTERNAL || !defined(RT_ARCH_X86)) && !VMX_USE_MSC_INTRINSICS) || defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
     
    18371844 *
    18381845 * @returns VBox status code
     1846 * @retval  VINF_SUCCESS
     1847 * @retval  VERR_VMX_INVALID_VMCS_PTR
     1848 * @retval  VERR_VMX_INVALID_VMCS_FIELD
     1849 *
    18391850 * @param   idxField        VMCS index
    18401851 * @param   u64Val          16, 32 or 64 bits value
     1852 *
     1853 * @remarks The values of the two status codes can be ORed together, the result
     1854 *          will be VERR_VMX_INVALID_VMCS_PTR.
    18411855 */
    18421856#if !defined(RT_ARCH_X86) || defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
     
    19011915 *
    19021916 * @returns VBox status code
     1917 * @retval  VINF_SUCCESS
     1918 * @retval  VERR_VMX_INVALID_VMCS_PTR
     1919 * @retval  VERR_VMX_INVALID_VMCS_FIELD
     1920 *
    19031921 * @param   idxField        VMCS index
    19041922 * @param   pData           Ptr to store VM field value
     1923 *
     1924 * @remarks The values of the two status codes can be ORed together, the result
     1925 *          will be VERR_VMX_INVALID_VMCS_PTR.
    19051926 */
    19061927#if ((RT_INLINE_ASM_EXTERNAL || !defined(RT_ARCH_X86)) && !VMX_USE_MSC_INTRINSICS) || defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
     
    19721993 *
    19731994 * @returns VBox status code
     1995 * @retval  VINF_SUCCESS
     1996 * @retval  VERR_VMX_INVALID_VMCS_PTR
     1997 * @retval  VERR_VMX_INVALID_VMCS_FIELD
     1998 *
    19741999 * @param   idxField        VMCS index
    19752000 * @param   pData           Ptr to store VM field value
     2001 *
     2002 * @remarks The values of the two status codes can be ORed together, the result
     2003 *          will be VERR_VMX_INVALID_VMCS_PTR.
    19762004 */
    19772005#if (!defined(RT_ARCH_X86) && !VMX_USE_MSC_INTRINSICS) || defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
  • trunk/include/VBox/vmm/iem.h

    r44529 r47445  
    2929#include <VBox/types.h>
    3030#include <VBox/vmm/trpm.h>
     31#include <iprt/assert.h>
    3132
    3233
     
    3738 */
    3839
     40
     41/**
     42 * Operand or addressing mode.
     43 */
     44typedef enum IEMMODE
     45{
     46    IEMMODE_16BIT = 0,
     47    IEMMODE_32BIT,
     48    IEMMODE_64BIT
     49} IEMMODE;
     50AssertCompileSize(IEMMODE, 4);
    3951
    4052
     
    5466/** @name Given Instruction Interpreters
    5567 * @{ */
    56 
     68VMM_INT_DECL(VBOXSTRICTRC)  IEMExecStringIoWrite(PVMCPU pVCpu, uint8_t cbValue, IEMMODE enmAddrMode,
     69                                                 bool fRepPrefix, uint8_t cbInstr, uint8_t iEffSeg);
     70VMM_INT_DECL(VBOXSTRICTRC)  IEMExecStringIoRead(PVMCPU pVCpu, uint8_t cbValue, IEMMODE enmAddrMode,
     71                                                bool fRepPrefix, uint8_t cbInstr);
    5772/** @}  */
    5873
  • trunk/include/VBox/vmm/pgm.h

    r45799 r47445  
    334334VMMDECL(int)        PGMGstModifyPage(PVMCPU pVCpu, RTGCPTR GCPtr, size_t cb, uint64_t fFlags, uint64_t fMask);
    335335VMM_INT_DECL(int)   PGMGstGetPaePdpes(PVMCPU pVCpu, PX86PDPE paPdpes);
    336 VMM_INT_DECL(int)   PGMGstUpdatePaePdpes(PVMCPU pVCpu, PCX86PDPE paPdpes);
     336VMM_INT_DECL(void)  PGMGstUpdatePaePdpes(PVMCPU pVCpu, PCX86PDPE paPdpes);
    337337
    338338VMMDECL(int)        PGMInvalidatePage(PVMCPU pVCpu, RTGCPTR GCPtrPage);
Note: See TracChangeset for help on using the changeset viewer.

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