VirtualBox

Changeset 72914 in vbox


Ignore:
Timestamp:
Jul 5, 2018 10:57:52 AM (6 years ago)
Author:
vboxsync
Message:

Debugger: Properly print the end of IRB/IOPB range in TSS. Also fixed display for ports not covered by IOPB.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Debugger/DBGCEmulateCodeView.cpp

    r72269 r72914  
    44664466                    }
    44674467                }
    4468                 if (iStart != 255)
    4469                     DBGCCmdHlpPrintf(pCmdHlp, "%02x-%02x %s\n", iStart, 255, fPrev ? "Protected mode" : "Redirected");
     4468                DBGCCmdHlpPrintf(pCmdHlp, "%02x-%02x %s\n", iStart, 255, fPrev ? "Protected mode" : "Redirected");
    44704469            }
    44714470            else
     
    44804479
    44814480    /*
    4482      * Dump the I/O permission bitmap if present. The IOPM cannot start below offset 0x64
     4481     * Dump the I/O permission bitmap if present. The IOPM cannot start below offset 0x68
    44834482     * (that applies to both 32-bit and 64-bit TSSs since their size is the same).
     4483     * Note that there is always one padding byte that is not technically part of the bitmap
     4484     * and "must have all bits set". It's not clear what happens when it doesn't. All ports
     4485     * not covered by the bitmap are considered to be not accessible.
    44844486     */
    44854487    if (enmTssType != kTss16)
    44864488    {
    4487         if (offIoBitmap < cbTss && offIoBitmap >= 0x64)
     4489        if (offIoBitmap < cbTss && offIoBitmap >= 0x68)
    44884490        {
    44894491            uint32_t        cPorts      = RT_MIN((cbTss - offIoBitmap) * 8, _64K);
     
    44964498            bool            fPrev       = ASMBitTest(pbIoBitmap, 0);
    44974499            uint32_t        cLine       = 0;
    4498             for (uint32_t i = 1; i < cPorts; i++)
     4500            for (uint32_t i = 1; i < _64K; i++)
    44994501            {
    4500                 bool fThis = ASMBitTest(pbIoBitmap, i);
     4502                bool fThis = i < cPorts ? ASMBitTest(pbIoBitmap, i) : true;
    45014503                if (fThis != fPrev)
    45024504                {
     
    45084510                }
    45094511            }
    4510             if (iStart != _64K-1)
    4511                 DBGCCmdHlpPrintf(pCmdHlp, "%04x-%04x %s\n", iStart, _64K-1, fPrev ? "GP" : "OK");
     4512            DBGCCmdHlpPrintf(pCmdHlp, "%04x-%04x %s\n", iStart, _64K-1, fPrev ? "GP" : "OK");
    45124513        }
    45134514        else if (offIoBitmap > 0)
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