VirtualBox

Changeset 100752 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Jul 31, 2023 1:24:18 PM (19 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
158622
Message:

VMM/IEM: Correctly declare the threaded functions (Visual C++ freaked out while throwing stuff again). Windows build fixes. bugref:10369

Location:
trunk/src/VBox/VMM/VMMAll
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllThrdFuncsBltIn.cpp

    r100734 r100752  
    8181 * Built-in function that calls a C-implemention function taking zero arguments.
    8282 */
    83 IEM_DECL_IMPL_DEF(VBOXSTRICTRC, iemThreadedFunc_BltIn_DeferToCImpl0,
    84                   (PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2))
     83IEM_DECL_IEMTHREADEDFUNC_DEF(iemThreadedFunc_BltIn_DeferToCImpl0)
    8584{
    8685    PFNIEMCIMPL0 const pfnCImpl = (PFNIEMCIMPL0)(uintptr_t)uParam0;
     
    9493 * Built-in function that compares the fExec mask against uParam0.
    9594 */
    96 IEM_DECL_IMPL_DEF(VBOXSTRICTRC, iemThreadedFunc_BltIn_CheckMode,
    97                   (PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2))
     95IEM_DECL_IEMTHREADEDFUNC_DEF(iemThreadedFunc_BltIn_CheckMode)
    9896{
    9997    uint32_t const fExpectedExec = (uint32_t)uParam0;
     
    284282 * raising a \#GP(0) if this isn't the case.
    285283 */
    286 IEM_DECL_IMPL_DEF(VBOXSTRICTRC, iemThreadedFunc_BltIn_CheckCsLim,
    287                   (PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2))
     284IEM_DECL_IEMTHREADEDFUNC_DEF(iemThreadedFunc_BltIn_CheckCsLim)
    288285{
    289286    uint32_t const cbInstr = (uint32_t)uParam0;
     
    298295 * that may have modified them.
    299296 */
    300 IEM_DECL_IMPL_DEF(VBOXSTRICTRC, iemThreadedFunc_BltIn_CheckCsLimAndOpcodes,
    301                   (PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2))
     297IEM_DECL_IEMTHREADEDFUNC_DEF(iemThreadedFunc_BltIn_CheckCsLimAndOpcodes)
    302298{
    303299    PCIEMTB const  pTb      = pVCpu->iem.s.pCurTbR3;
     
    315311 * modified them.
    316312 */
    317 IEM_DECL_IMPL_DEF(VBOXSTRICTRC, iemThreadedFunc_BltIn_CheckOpcodes,
    318                   (PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2))
     313IEM_DECL_IEMTHREADEDFUNC_DEF(iemThreadedFunc_BltIn_CheckOpcodes)
    319314{
    320315    PCIEMTB const  pTb      = pVCpu->iem.s.pCurTbR3;
     
    337332 * @see iemThreadedFunc_BltIn_CheckPcAndOpcodes
    338333 */
    339 IEM_DECL_IMPL_DEF(VBOXSTRICTRC, iemThreadedFunc_BltIn_CheckCsLimAndPcAndOpcodes,
    340                   (PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2))
     334IEM_DECL_IEMTHREADEDFUNC_DEF(iemThreadedFunc_BltIn_CheckCsLimAndPcAndOpcodes)
    341335{
    342336    PCIEMTB const  pTb      = pVCpu->iem.s.pCurTbR3;
     
    359353 * @see iemThreadedFunc_BltIn_CheckCsLimAndPcAndOpcodes
    360354 */
    361 IEM_DECL_IMPL_DEF(VBOXSTRICTRC, iemThreadedFunc_BltIn_CheckPcAndOpcodes,
    362                   (PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2))
     355IEM_DECL_IEMTHREADEDFUNC_DEF(iemThreadedFunc_BltIn_CheckPcAndOpcodes)
    363356{
    364357    PCIEMTB const  pTb      = pVCpu->iem.s.pCurTbR3;
     
    383376 * @see iemThreadedFunc_BltIn_CheckOpcodesLoadingTlb
    384377 */
    385 IEM_DECL_IMPL_DEF(VBOXSTRICTRC, iemThreadedFunc_BltIn_CheckCsLimAndOpcodesLoadingTlb,
    386                   (PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2))
     378IEM_DECL_IEMTHREADEDFUNC_DEF(iemThreadedFunc_BltIn_CheckCsLimAndOpcodesLoadingTlb)
    387379{
    388380    PCIEMTB const  pTb      = pVCpu->iem.s.pCurTbR3;
     
    408400 * @see iemThreadedFunc_BltIn_CheckCsLimAndOpcodesLoadingTlb
    409401 */
    410 IEM_DECL_IMPL_DEF(VBOXSTRICTRC, iemThreadedFunc_BltIn_CheckOpcodesLoadingTlb,
    411                   (PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2))
     402IEM_DECL_IEMTHREADEDFUNC_DEF(iemThreadedFunc_BltIn_CheckOpcodesLoadingTlb)
    412403{
    413404    PCIEMTB const  pTb      = pVCpu->iem.s.pCurTbR3;
     
    438429 * @see iemThreadedFunc_BltIn_CheckOpcodesAcrossPageLoadingTlb
    439430 */
    440 IEM_DECL_IMPL_DEF(VBOXSTRICTRC, iemThreadedFunc_BltIn_CheckCsLimAndOpcodesAcrossPageLoadingTlb,
    441                   (PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2))
     431IEM_DECL_IEMTHREADEDFUNC_DEF(iemThreadedFunc_BltIn_CheckCsLimAndOpcodesAcrossPageLoadingTlb)
    442432{
    443433    PCIEMTB const  pTb         = pVCpu->iem.s.pCurTbR3;
     
    465455 * @see iemThreadedFunc_BltIn_CheckCsLimAndOpcodesAcrossPageLoadingTlb
    466456 */
    467 IEM_DECL_IMPL_DEF(VBOXSTRICTRC, iemThreadedFunc_BltIn_CheckOpcodesAcrossPageLoadingTlb,
    468                   (PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2))
     457IEM_DECL_IEMTHREADEDFUNC_DEF(iemThreadedFunc_BltIn_CheckOpcodesAcrossPageLoadingTlb)
    469458{
    470459    PCIEMTB const  pTb         = pVCpu->iem.s.pCurTbR3;
     
    489478 * @see iemThreadedFunc_BltIn_CheckOpcodesOnNextPageLoadingTlb
    490479 */
    491 IEM_DECL_IMPL_DEF(VBOXSTRICTRC, iemThreadedFunc_BltIn_CheckCsLimAndOpcodesOnNextPageLoadingTlb,
    492                   (PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2))
     480IEM_DECL_IEMTHREADEDFUNC_DEF(iemThreadedFunc_BltIn_CheckCsLimAndOpcodesOnNextPageLoadingTlb)
    493481{
    494482    PCIEMTB const  pTb         = pVCpu->iem.s.pCurTbR3;
     
    514502 * @see iemThreadedFunc_BltIn_CheckCsLimAndOpcodesOnNextPageLoadingTlb
    515503 */
    516 IEM_DECL_IMPL_DEF(VBOXSTRICTRC, iemThreadedFunc_BltIn_CheckOpcodesOnNextPageLoadingTlb,
    517                   (PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2))
     504IEM_DECL_IEMTHREADEDFUNC_DEF(iemThreadedFunc_BltIn_CheckOpcodesOnNextPageLoadingTlb)
    518505{
    519506    PCIEMTB const  pTb         = pVCpu->iem.s.pCurTbR3;
     
    536523 * @see iemThreadedFunc_BltIn_CheckOpcodesOnNewPageLoadingTlb
    537524 */
    538 IEM_DECL_IMPL_DEF(VBOXSTRICTRC, iemThreadedFunc_BltIn_CheckCsLimAndOpcodesOnNewPageLoadingTlb,
    539                   (PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2))
     525IEM_DECL_IEMTHREADEDFUNC_DEF(iemThreadedFunc_BltIn_CheckCsLimAndOpcodesOnNewPageLoadingTlb)
    540526{
    541527    PCIEMTB const  pTb         = pVCpu->iem.s.pCurTbR3;
     
    557543 * @see iemThreadedFunc_BltIn_CheckCsLimAndOpcodesOnNewPageLoadingTlb
    558544 */
    559 IEM_DECL_IMPL_DEF(VBOXSTRICTRC, iemThreadedFunc_BltIn_CheckOpcodesOnNewPageLoadingTlb,
    560                   (PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2))
     545IEM_DECL_IEMTHREADEDFUNC_DEF(iemThreadedFunc_BltIn_CheckOpcodesOnNewPageLoadingTlb)
    561546{
    562547    PCIEMTB const  pTb         = pVCpu->iem.s.pCurTbR3;
  • trunk/src/VBox/VMM/VMMAll/IEMAllThrdPython.py

    r100747 r100752  
    14211421
    14221422        # Prototype the function table.
    1423         sFnType = 'typedef IEM_DECL_IMPL_TYPE(VBOXSTRICTRC, FNIEMTHREADEDFUNC, (PVMCPU pVCpu';
    1424         for iParam in range(g_kcThreadedParams):
    1425             sFnType += ', uint64_t uParam' + str(iParam);
    1426         sFnType += '));'
    1427 
    14281423        asLines += [
    1429             sFnType,
    1430             'typedef FNIEMTHREADEDFUNC *PFNIEMTHREADEDFUNC;',
    1431             '',
    14321424            'extern const PFNIEMTHREADEDFUNC g_apfnIemThreadedFunctions[kIemThreadedFunc_End];',
    14331425            '#if defined(IN_RING3) || defined(LOG_ENABLED)',
     
    14561448        oOut.write('\n'.join(asLines));
    14571449
    1458         # Prepare the fixed bits.
    1459         sParamList = '(PVMCPU pVCpu';
    1460         for iParam in range(g_kcThreadedParams):
    1461             sParamList += ', uint64_t uParam' + str(iParam);
    1462         sParamList += '))\n';
    1463 
    14641450        #
    14651451        # Emit the function definitions.
     
    14891475                                     ' (macro expansion)' if oMcBlock.iBeginLine == oMcBlock.iEndLine else '')
    14901476                               + ' */\n'
    1491                                + 'static IEM_DECL_IMPL_DEF(VBOXSTRICTRC, ' + oVariation.getFunctionName() + ',\n'
    1492                                + '                         ' + sParamList
     1477                               + 'static IEM_DECL_IEMTHREADEDFUNC_DEF(' + oVariation.getFunctionName() + ')\n'
    14931478                               + '{\n');
    14941479
  • trunk/src/VBox/VMM/VMMAll/IEMAllThrdRecompiler.cpp

    r100736 r100752  
    568568
    569569
    570 static PIEMTB iemThreadedTbLookup(PVMCC pVM, PVMCPUCC pVCpu, RTGCPHYS GCPhysPc, uint32_t fExtraFlags)
     570static PIEMTB iemThreadedTbLookup(PVMCC pVM, PVMCPUCC pVCpu, RTGCPHYS GCPhysPc, uint32_t fExtraFlags) IEM_NOEXCEPT_MAY_LONGJMP
    571571{
    572572    uint32_t const fFlags  = (pVCpu->iem.s.fExec & IEMTB_F_IEM_F_MASK) | fExtraFlags | IEMTB_F_STATE_READY;
     
    11941194 *                      maybe IEMTB_F_RIP_CHECKS.
    11951195 */
    1196 static VBOXSTRICTRC iemThreadedCompile(PVMCC pVM, PVMCPUCC pVCpu, RTGCPHYS GCPhysPc, uint32_t fExtraFlags)
     1196static VBOXSTRICTRC iemThreadedCompile(PVMCC pVM, PVMCPUCC pVCpu, RTGCPHYS GCPhysPc, uint32_t fExtraFlags) IEM_NOEXCEPT_MAY_LONGJMP
    11971197{
    11981198    /*
     
    12891289 * @param   pTb     The translation block to execute.
    12901290 */
    1291 static VBOXSTRICTRC iemThreadedTbExec(PVMCPUCC pVCpu, PIEMTB pTb)
     1291static VBOXSTRICTRC iemThreadedTbExec(PVMCPUCC pVCpu, PIEMTB pTb) IEM_NOEXCEPT_MAY_LONGJMP
    12921292{
    12931293    /* Check the opcodes in the first page before starting execution. */
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