VirtualBox

Changeset 47445 in vbox for trunk/include/VBox/vmm


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/vmm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • 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