VirtualBox

Ignore:
Timestamp:
Dec 16, 2019 5:48:40 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
135475
Message:

SUPDrv,IPRT: Adding SUPR0HCPhysToVirt to linux & solaris; introducing IPRT_WITHOUT_EFLAGS_AC_PRESERVING and VBOX_WITHOUT_EFLAGS_AC_SET_IN_VBOXDRV config macros for disabling EFLAGS.AC hacks (not active). bugref:9627

Location:
trunk/src/VBox/HostDrivers/Support/linux
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/Support/linux/Makefile

    r77403 r82590  
    154154        VBOX_WITH_HARDENING \
    155155        SUPDRV_WITH_RELEASE_LOGGER \
     156        VBOX_WITHOUT_EFLAGS_AC_SET_IN_VBOXDRV \
    156157        VBOX_WITH_EFLAGS_AC_SET_IN_VBOXDRV \
     158        IPRT_WITHOUT_EFLAGS_AC_PRESERVING \
    157159        IPRT_WITH_EFLAGS_AC_PRESERVING \
    158160        VBOX_WITH_64_BITS_GUESTS # <-- must be consistent with Config.kmk!
  • trunk/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c

    r79444 r82590  
    558558    PSUPDRVSESSION pSession = (PSUPDRVSESSION)pFilp->private_data;
    559559    int rc;
    560 #if defined(VBOX_STRICT) || defined(VBOX_WITH_EFLAGS_AC_SET_IN_VBOXDRV)
     560#ifndef VBOX_WITHOUT_EFLAGS_AC_SET_IN_VBOXDRV
     561# if defined(VBOX_STRICT) || defined(VBOX_WITH_EFLAGS_AC_SET_IN_VBOXDRV)
    561562    RTCCUINTREG fSavedEfl;
    562563
     
    577578    stac();
    578579# endif
     580#endif
    579581
    580582    /*
     
    599601#endif  /* !HAVE_UNLOCKED_IOCTL */
    600602
    601 #if defined(VBOX_STRICT) || defined(VBOX_WITH_EFLAGS_AC_SET_IN_VBOXDRV)
     603#ifndef VBOX_WITHOUT_EFLAGS_AC_SET_IN_VBOXDRV
     604# if defined(VBOX_STRICT) || defined(VBOX_WITH_EFLAGS_AC_SET_IN_VBOXDRV)
    602605    /*
    603606     * Before we restore AC and the rest of EFLAGS, check if the IOCtl handler code
     
    612615    }
    613616    ASMSetFlags(fSavedEfl);
    614 #else
     617# else
    615618    clac();
     619# endif
    616620#endif
    617621    return rc;
     
    13881392
    13891393
     1394SUPR0DECL(int) SUPR0HCPhysToVirt(RTHCPHYS HCPhys, void **ppv)
     1395{
     1396    AssertReturn(!(HCPhys & PAGE_OFFSET_MASK), VERR_INVALID_POINTER);
     1397    AssertReturn(HCPhys != NIL_RTHCPHYS, VERR_INVALID_POINTER);
     1398    /* Would've like to use valid_phys_addr_range for this test, but it isn't exported. */
     1399    AssertReturn((HCPhys | PAGE_OFFSET_MASK) < __pa(high_memory), VERR_INVALID_POINTER);
     1400    *ppv = phys_to_virt(HCPhys);
     1401    return VINF_SUCCESS;
     1402}
     1403
     1404
    13901405RTDECL(int) SUPR0Printf(const char *pszFormat, ...)
    13911406{
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