VirtualBox

Changeset 89906 in vbox


Ignore:
Timestamp:
Jun 24, 2021 8:03:28 PM (3 years ago)
Author:
vboxsync
Message:

DevHda: Renamed HDAREGDESC members to follow coding standard. Excluded pszDesc from ring-0 even in logging builds as it's only used for statistics registration. bugref:9890

Location:
trunk/src/VBox/Devices/Audio
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Audio/DevHda.cpp

    r89904 r89906  
    235235{
    236236    /** Register offset in the register space. */
    237     uint32_t        offset;
     237    uint32_t        off;
    238238    /** Size in bytes. Registers of size > 4 are in fact tables. */
    239     uint8_t         size;
     239    uint8_t         cb;
    240240    /** Register descriptor (RD) flags of type HDA_RD_F_XXX. These are used to
    241241     *  specify the read/write handling policy of the register. */
    242242    uint8_t         fFlags;
    243     /** Index into the register storage array. */
    244     uint8_t         mem_idx;
     243    /** Index into the register storage array (HDASTATE::au32Regs). */
     244    uint8_t         idxReg;
    245245    uint8_t         bUnused;
    246246    /** Readable bits. */
    247     uint32_t        readable;
     247    uint32_t        fReadableMask;
    248248    /** Writable bits. */
    249     uint32_t        writable;
     249    uint32_t        fWritableMask;
    250250    /** Read callback. */
    251251    FNHDAREGREAD   *pfnRead;
     
    254254#if defined(IN_RING3) || defined(LOG_ENABLED) /* Saves 0x2f23 - 0x1888 = 0x169B (5787) bytes in VBoxDDR0. */
    255255    /** Abbreviated name. */
    256     const char     *abbrev;
    257     /** Descripton. */
    258     const char     *desc;
     256    const char     *pszName;
     257# ifdef IN_RING3
     258    /** Description (for stats). */
     259    const char     *pszDesc;
     260# endif
    259261#endif
    260262} HDAREGDESC;
     
    357359#define HDA_RD_F_SD_WRITE_RUN       RT_BIT(0)
    358360
     361/** @def HDA_REG_ENTRY_EX
     362 * Maps the entry values to the actual HDAREGDESC layout, which is differs
     363 * depending on context and build type. */
    359364#if defined(IN_RING3) || defined(LOG_ENABLED)
    360 # define HDA_REG_ENTRY_EX(a_offBar, a_cbReg, a_fReadMask, a_fWriteMask, a_fFlags, a_pfnRead, a_pfnWrite, a_idxMap, a_szName, a_szDesc) \
     365# ifdef IN_RING3
     366#  define HDA_REG_ENTRY_EX(a_offBar, a_cbReg, a_fReadMask, a_fWriteMask, a_fFlags, a_pfnRead, a_pfnWrite, a_idxMap, a_szName, a_szDesc) \
    361367    { a_offBar, a_cbReg, a_fFlags, a_idxMap, 0, a_fReadMask, a_fWriteMask, a_pfnRead, a_pfnWrite, a_szName, a_szDesc }
     368# else
     369#  define HDA_REG_ENTRY_EX(a_offBar, a_cbReg, a_fReadMask, a_fWriteMask, a_fFlags, a_pfnRead, a_pfnWrite, a_idxMap, a_szName, a_szDesc) \
     370    { a_offBar, a_cbReg, a_fFlags, a_idxMap, 0, a_fReadMask, a_fWriteMask, a_pfnRead, a_pfnWrite, a_szName }
     371# endif
    362372#else
    363373# define HDA_REG_ENTRY_EX(a_offBar, a_cbReg, a_fReadMask, a_fWriteMask, a_fFlags, a_pfnRead, a_pfnWrite, a_idxMap, a_szName, a_szDesc) \
    364374    { a_offBar, a_cbReg, a_fFlags, a_idxMap, 0, a_fReadMask, a_fWriteMask, a_pfnRead, a_pfnWrite }
    365375#endif
     376
    366377#define HDA_REG_ENTRY(a_offBar, a_cbReg, a_fReadMask, a_fWriteMask, a_fFlags, a_pfnRead, a_pfnWrite, a_ShortRegNm, a_szDesc) \
    367378    HDA_REG_ENTRY_EX(a_offBar, a_cbReg, a_fReadMask, a_fWriteMask, a_fFlags, a_pfnRead, a_pfnWrite, HDA_MEM_IND_NAME(a_ShortRegNm), #a_ShortRegNm, a_szDesc)
     
    573584{
    574585    Assert(idxMap < RT_ELEMENTS(g_aHdaRegMap));
    575     AssertMsg(idxReg == g_aHdaRegMap[idxMap].mem_idx, ("idxReg=%d\n", idxReg));
     586    AssertMsg(idxReg == g_aHdaRegMap[idxMap].idxReg, ("idxReg=%d\n", idxReg));
    576587    return &pThis->au32Regs[idxReg];
    577588}
     
    585596    Assert(idxMap0 < RT_ELEMENTS(g_aHdaRegMap));
    586597    AssertMsg(idxStream < RT_ELEMENTS(pThis->aStreams), ("%#zx\n", idxStream));
    587     AssertMsg(idxReg0 + idxStream * 10 == g_aHdaRegMap[idxMap0 + idxStream * 10].mem_idx,
     598    AssertMsg(idxReg0 + idxStream * 10 == g_aHdaRegMap[idxMap0 + idxStream * 10].idxReg,
    588599              ("idxReg0=%d idxStream=%zx\n", idxReg0, idxStream));
    589600    return &pThis->au32Regs[idxReg0 + idxStream * 10];
     
    696707            if (offReg == g_aHdaRegAliases[i].offReg)
    697708                return g_aHdaRegAliases[i].idxAlias;
    698         Assert(g_aHdaRegMap[RT_ELEMENTS(g_aHdaRegMap) - 1].offset < offReg);
     709        Assert(g_aHdaRegMap[RT_ELEMENTS(g_aHdaRegMap) - 1].off < offReg);
    699710        return -1;
    700711    }
     
    708719    {
    709720        int idxMiddle = idxLow + (idxEnd - idxLow) / 2;
    710         if (offReg < g_aHdaRegMap[idxMiddle].offset)
     721        if (offReg < g_aHdaRegMap[idxMiddle].off)
    711722        {
    712723            if (idxLow == idxMiddle)
     
    714725            idxEnd = idxMiddle;
    715726        }
    716         else if (offReg > g_aHdaRegMap[idxMiddle].offset)
     727        else if (offReg > g_aHdaRegMap[idxMiddle].off)
    717728        {
    718729            idxLow = idxMiddle + 1;
     
    726737#ifdef RT_STRICT
    727738    for (unsigned i = 0; i < RT_ELEMENTS(g_aHdaRegMap); i++)
    728         Assert(g_aHdaRegMap[i].offset != offReg);
     739        Assert(g_aHdaRegMap[i].off != offReg);
    729740#endif
    730741    return -1;
     
    749760        {
    750761            uint32_t off = offReg - g_aHdaRegAliases[i].offReg;
    751             if (off < 4 && off < g_aHdaRegMap[g_aHdaRegAliases[i].idxAlias].size)
     762            if (off < 4 && off < g_aHdaRegMap[g_aHdaRegAliases[i].idxAlias].cb)
    752763                return g_aHdaRegAliases[i].idxAlias;
    753764        }
    754         Assert(g_aHdaRegMap[RT_ELEMENTS(g_aHdaRegMap) - 1].offset < offReg);
     765        Assert(g_aHdaRegMap[RT_ELEMENTS(g_aHdaRegMap) - 1].off < offReg);
    755766        return -1;
    756767    }
     
    764775    {
    765776        int idxMiddle = idxLow + (idxEnd - idxLow) / 2;
    766         if (offReg < g_aHdaRegMap[idxMiddle].offset)
     777        if (offReg < g_aHdaRegMap[idxMiddle].off)
    767778        {
    768779            if (idxLow == idxMiddle)
     
    770781            idxEnd = idxMiddle;
    771782        }
    772         else if (offReg >= g_aHdaRegMap[idxMiddle].offset + g_aHdaRegMap[idxMiddle].size)
     783        else if (offReg >= g_aHdaRegMap[idxMiddle].off + g_aHdaRegMap[idxMiddle].cb)
    773784        {
    774785            idxLow = idxMiddle + 1;
     
    782793# ifdef RT_STRICT
    783794    for (unsigned i = 0; i < RT_ELEMENTS(g_aHdaRegMap); i++)
    784         Assert(offReg - g_aHdaRegMap[i].offset >= g_aHdaRegMap[i].size);
     795        Assert(offReg - g_aHdaRegMap[i].off >= g_aHdaRegMap[i].cb);
    785796# endif
    786797    return -1;
     
    10491060static VBOXSTRICTRC hdaRegReadU8(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
    10501061{
    1051     Assert(((pThis->au32Regs[g_aHdaRegMap[iReg].mem_idx] & g_aHdaRegMap[iReg].readable) & 0xffffff00) == 0);
     1062    Assert(((pThis->au32Regs[g_aHdaRegMap[iReg].idxReg] & g_aHdaRegMap[iReg].fReadableMask) & UINT32_C(0xffffff00)) == 0);
    10521063    return hdaRegReadU32(pDevIns, pThis, iReg, pu32Value);
    10531064}
     
    10621073static VBOXSTRICTRC hdaRegReadU16(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
    10631074{
    1064     Assert(((pThis->au32Regs[g_aHdaRegMap[iReg].mem_idx] & g_aHdaRegMap[iReg].readable) & 0xffff0000) == 0);
     1075    Assert(((pThis->au32Regs[g_aHdaRegMap[iReg].idxReg] & g_aHdaRegMap[iReg].fReadableMask) & UINT32_C(0xffff0000)) == 0);
    10651076    return hdaRegReadU32(pDevIns, pThis, iReg, pu32Value);
    10661077}
     
    10751086static VBOXSTRICTRC hdaRegReadU24(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
    10761087{
    1077     Assert(((pThis->au32Regs[g_aHdaRegMap[iReg].mem_idx] & g_aHdaRegMap[iReg].readable) & 0xff000000) == 0);
     1088    Assert(((pThis->au32Regs[g_aHdaRegMap[iReg].idxReg] & g_aHdaRegMap[iReg].fReadableMask) & UINT32_C(0xff000000)) == 0);
    10781089    return hdaRegReadU32(pDevIns, pThis, iReg, pu32Value);
    10791090}
     
    10921103    RT_NOREF(pDevIns);
    10931104
    1094     uint32_t const iRegMem = g_aHdaRegMap[iReg].mem_idx;
    1095     *pu32Value = pThis->au32Regs[iRegMem] & g_aHdaRegMap[iReg].readable;
     1105    uint32_t const iRegMem = g_aHdaRegMap[iReg].idxReg;
     1106    *pu32Value = pThis->au32Regs[iRegMem] & g_aHdaRegMap[iReg].fReadableMask;
    10961107    return VINF_SUCCESS;
    10971108}
     
    11011112    RT_NOREF(pDevIns);
    11021113
    1103     uint32_t const iRegMem = g_aHdaRegMap[iReg].mem_idx;
    1104     pThis->au32Regs[iRegMem]  = (u32Value & g_aHdaRegMap[iReg].writable)
    1105                               | (pThis->au32Regs[iRegMem] & ~g_aHdaRegMap[iReg].writable);
     1114    uint32_t const iRegMem = g_aHdaRegMap[iReg].idxReg;
     1115    pThis->au32Regs[iRegMem]  = (u32Value & g_aHdaRegMap[iReg].fWritableMask)
     1116                              | (pThis->au32Regs[iRegMem] & ~g_aHdaRegMap[iReg].fWritableMask);
    11061117    return VINF_SUCCESS;
    11071118}
     
    13621373     */
    13631374    uint32_t const fOld     = HDA_REG(pThis, SSYNC);
    1364     uint32_t const fNew     = (u32Value &  g_aHdaRegMap[iReg].writable)
    1365                             | (fOld     & ~g_aHdaRegMap[iReg].writable);
     1375    uint32_t const fNew     = (u32Value &  g_aHdaRegMap[iReg].fWritableMask)
     1376                            | (fOld     & ~g_aHdaRegMap[iReg].fWritableMask);
    13661377    uint32_t const fChanged = (fNew ^ fOld) & (RT_BIT_32(HDA_MAX_STREAMS) - 1);
    13671378    if (fChanged)
     
    22442255    AssertRCSuccess(VBOXSTRICTRC_VAL(rc));
    22452256
    2246     uint32_t const iRegMem = g_aHdaRegMap[iReg].mem_idx;
     2257    uint32_t const iRegMem = g_aHdaRegMap[iReg].idxReg;
    22472258    switch (iReg)
    22482259    {
     
    29953006        else
    29963007        {
    2997             Log4(("hdaIsMultiReadSafeInRZ: idxRegDsc=%u %s\n", idxRegDsc, g_aHdaRegMap[idxRegDsc].abbrev));
     3008            Log4(("hdaIsMultiReadSafeInRZ: idxRegDsc=%u %s\n", idxRegDsc, g_aHdaRegMap[idxRegDsc].pszName));
    29983009            return false;
    29993010        }
     
    30013012        idxRegDsc++;
    30023013        if (idxRegDsc < RT_ELEMENTS(g_aHdaRegMap))
    3003             cbLeft -= g_aHdaRegMap[idxRegDsc].offset - g_aHdaRegMap[idxRegDsc - 1].offset;
     3014            cbLeft -= g_aHdaRegMap[idxRegDsc].off - g_aHdaRegMap[idxRegDsc - 1].off;
    30043015        else
    30053016            break;
     
    30563067        {
    30573068            /* ASSUMES gapless DWORD at end of map. */
    3058             if (g_aHdaRegMap[idxRegDsc].size == 4)
     3069            if (g_aHdaRegMap[idxRegDsc].cb == 4)
    30593070            {
    30603071                /*
     
    30623073                 */
    30633074                rc = g_aHdaRegMap[idxRegDsc].pfnRead(pDevIns, pThis, idxRegDsc, (uint32_t *)pv);
    3064                 Log3Func(("  Read %s => %x (%Rrc)\n", g_aHdaRegMap[idxRegDsc].abbrev, *(uint32_t *)pv, VBOXSTRICTRC_VAL(rc)));
     3075                Log3Func(("  Read %s => %x (%Rrc)\n", g_aHdaRegMap[idxRegDsc].pszName, *(uint32_t *)pv, VBOXSTRICTRC_VAL(rc)));
    30653076                STAM_COUNTER_INC(&pThis->aStatRegReads[idxRegDsc]);
    30663077            }
     
    30803091                 */
    30813092                STAM_COUNTER_INC(&pThis->CTX_SUFF_Z(StatRegMultiReads));
    3082                 Log4(("hdaMmioRead: multi read: %#x LB %#x %s\n", off, cb, g_aHdaRegMap[idxRegDsc].abbrev));
     3093                Log4(("hdaMmioRead: multi read: %#x LB %#x %s\n", off, cb, g_aHdaRegMap[idxRegDsc].pszName));
    30833094                uint32_t u32Value = 0;
    30843095                unsigned cbLeft   = 4;
    30853096                do
    30863097                {
    3087                     uint32_t const  cbReg        = g_aHdaRegMap[idxRegDsc].size;
     3098                    uint32_t const  cbReg        = g_aHdaRegMap[idxRegDsc].cb;
    30883099                    uint32_t        u32Tmp       = 0;
    30893100
    30903101                    rc = g_aHdaRegMap[idxRegDsc].pfnRead(pDevIns, pThis, idxRegDsc, &u32Tmp);
    3091                     Log4Func(("  Read %s[%db] => %x (%Rrc)*\n", g_aHdaRegMap[idxRegDsc].abbrev, cbReg, u32Tmp, VBOXSTRICTRC_VAL(rc)));
     3102                    Log4Func(("  Read %s[%db] => %x (%Rrc)*\n", g_aHdaRegMap[idxRegDsc].pszName, cbReg, u32Tmp, VBOXSTRICTRC_VAL(rc)));
    30923103                    STAM_COUNTER_INC(&pThis->aStatRegReads[idxRegDsc]);
    30933104#ifdef IN_RING3
     
    31023113                    off    += cbReg;
    31033114                    idxRegDsc++;
    3104                 } while (cbLeft > 0 && g_aHdaRegMap[idxRegDsc].offset == off);
     3115                } while (cbLeft > 0 && g_aHdaRegMap[idxRegDsc].off == off);
    31053116
    31063117                if (rc == VINF_SUCCESS)
     
    31483159    else
    31493160    {
    3150         Log(("hdaWriteReg: Warning: Access to %s is blocked while controller is in reset mode\n", g_aHdaRegMap[idxRegDsc].abbrev));
     3161        Log(("hdaWriteReg: Warning: Access to %s is blocked while controller is in reset mode\n", g_aHdaRegMap[idxRegDsc].pszName));
    31513162#if defined(IN_RING3) || defined(LOG_ENABLED)
    31523163        LogRel2(("HDA: Warning: Access to register %s is blocked while controller is in reset mode\n",
    3153                  g_aHdaRegMap[idxRegDsc].abbrev));
     3164                 g_aHdaRegMap[idxRegDsc].pszName));
    31543165#endif
    31553166        STAM_COUNTER_INC(&pThis->StatRegWritesBlockedByReset);
     
    31743185        else
    31753186        {
    3176             Log(("hdaWriteReg: Warning: Access to %s is blocked! %R[sdctl]\n", g_aHdaRegMap[idxRegDsc].abbrev, uSDCTL));
     3187            Log(("hdaWriteReg: Warning: Access to %s is blocked! %R[sdctl]\n", g_aHdaRegMap[idxRegDsc].pszName, uSDCTL));
    31773188#if defined(IN_RING3) || defined(LOG_ENABLED)
    31783189            LogRel2(("HDA: Warning: Access to register %s is blocked while the stream's RUN bit is set\n",
    3179                      g_aHdaRegMap[idxRegDsc].abbrev));
     3190                     g_aHdaRegMap[idxRegDsc].pszName));
    31803191#endif
    31813192            STAM_COUNTER_INC(&pThis->StatRegWritesBlockedByRun);
     
    31853196
    31863197#ifdef LOG_ENABLED
    3187     uint32_t const idxRegMem   = g_aHdaRegMap[idxRegDsc].mem_idx;
     3198    uint32_t const idxRegMem   = g_aHdaRegMap[idxRegDsc].idxReg;
    31883199    uint32_t const u32OldValue = pThis->au32Regs[idxRegMem];
    31893200#endif
    31903201    VBOXSTRICTRC rc = g_aHdaRegMap[idxRegDsc].pfnWrite(pDevIns, pThis, idxRegDsc, u32Value);
    3191     Log3Func(("Written value %#x to %s[%d byte]; %x => %x%s, rc=%d\n", u32Value, g_aHdaRegMap[idxRegDsc].abbrev,
    3192               g_aHdaRegMap[idxRegDsc].size, u32OldValue, pThis->au32Regs[idxRegMem], pszLog, VBOXSTRICTRC_VAL(rc)));
     3202    Log3Func(("Written value %#x to %s[%d byte]; %x => %x%s, rc=%d\n", u32Value, g_aHdaRegMap[idxRegDsc].pszName,
     3203              g_aHdaRegMap[idxRegDsc].cb, u32OldValue, pThis->au32Regs[idxRegMem], pszLog, VBOXSTRICTRC_VAL(rc)));
    31933204#ifndef IN_RING3
    31943205    if (rc == VINF_IOM_R3_MMIO_WRITE)
     
    32183229    int         idxRegDsc = hdaRegLookup(off);
    32193230#if defined(IN_RING3) || defined(LOG_ENABLED)
    3220     uint32_t    idxRegMem = idxRegDsc != -1 ? g_aHdaRegMap[idxRegDsc].mem_idx : UINT32_MAX;
     3231    uint32_t    idxRegMem = idxRegDsc != -1 ? g_aHdaRegMap[idxRegDsc].idxReg : UINT32_MAX;
    32213232#endif
    32223233    uint64_t    u64Value;
     
    32513262     */
    32523263    VBOXSTRICTRC rc;
    3253     if (idxRegDsc >= 0 && g_aHdaRegMap[idxRegDsc].size == cb)
     3264    if (idxRegDsc >= 0 && g_aHdaRegMap[idxRegDsc].cb == cb)
    32543265    {
    32553266        DEVHDA_LOCK_RETURN(pDevIns, pThis, VINF_IOM_R3_MMIO_WRITE);
    32563267
    3257         Log3Func(("@%#05x u%u=%#0*RX64 %s\n", (uint32_t)off, cb * 8, 2 + cb * 2, u64Value, g_aHdaRegMap[idxRegDsc].abbrev));
     3268        Log3Func(("@%#05x u%u=%#0*RX64 %s\n", (uint32_t)off, cb * 8, 2 + cb * 2, u64Value, g_aHdaRegMap[idxRegDsc].pszName));
    32583269        rc = hdaWriteReg(pDevIns, pThis, idxRegDsc, u64Value, "");
    32593270        Log3Func(("  %#x -> %#x\n", u32LogOldValue, idxRegMem != UINT32_MAX ? pThis->au32Regs[idxRegMem] : UINT32_MAX));
     
    32653276     */
    32663277    else if (   idxRegDsc >= 0
    3267              && cb < g_aHdaRegMap[idxRegDsc].size)
     3278             && cb < g_aHdaRegMap[idxRegDsc].cb)
    32683279    {
    32693280        DEVHDA_LOCK_RETURN(pDevIns, pThis, VINF_IOM_R3_MMIO_WRITE);
    32703281
    3271         u64Value |=   pThis->au32Regs[g_aHdaRegMap[idxRegDsc].mem_idx]
    3272                     & g_afMasks[g_aHdaRegMap[idxRegDsc].size]
     3282        u64Value |=   pThis->au32Regs[g_aHdaRegMap[idxRegDsc].idxReg]
     3283                    & g_afMasks[g_aHdaRegMap[idxRegDsc].cb]
    32733284                    & ~g_afMasks[cb];
    32743285        Log4Func(("@%#05x u%u=%#0*RX64 cb=%#x cbReg=%x %s\n"
    32753286                  "hdaMmioWrite: Supplying missing bits (%#x): %#llx -> %#llx ...\n",
    3276                   (uint32_t)off, cb * 8, 2 + cb * 2, u64Value, cb, g_aHdaRegMap[idxRegDsc].size, g_aHdaRegMap[idxRegDsc].abbrev,
    3277                   g_afMasks[g_aHdaRegMap[idxRegDsc].size] & ~g_afMasks[cb], u64Value & g_afMasks[cb], u64Value));
     3287                  (uint32_t)off, cb * 8, 2 + cb * 2, u64Value, cb, g_aHdaRegMap[idxRegDsc].cb, g_aHdaRegMap[idxRegDsc].pszName,
     3288                  g_afMasks[g_aHdaRegMap[idxRegDsc].cb] & ~g_afMasks[cb], u64Value & g_afMasks[cb], u64Value));
    32783289        rc = hdaWriteReg(pDevIns, pThis, idxRegDsc, u64Value, "");
    32793290        Log4Func(("  %#x -> %#x\n", u32LogOldValue, idxRegMem != UINT32_MAX ? pThis->au32Regs[idxRegMem] : UINT32_MAX));
     
    32923303        if (idxRegDsc == -1)
    32933304            Log4Func(("@%#05x u32=%#010x cb=%d\n", (uint32_t)off, *(uint32_t const *)pv, cb));
    3294         else if (g_aHdaRegMap[idxRegDsc].size == cb)
    3295             Log4Func(("@%#05x u%u=%#0*RX64 %s\n", (uint32_t)off, cb * 8, 2 + cb * 2, u64Value, g_aHdaRegMap[idxRegDsc].abbrev));
     3305        else if (g_aHdaRegMap[idxRegDsc].cb == cb)
     3306            Log4Func(("@%#05x u%u=%#0*RX64 %s\n", (uint32_t)off, cb * 8, 2 + cb * 2, u64Value, g_aHdaRegMap[idxRegDsc].pszName));
    32963307        else
    32973308            Log4Func(("@%#05x u%u=%#0*RX64 %s - mismatch cbReg=%u\n", (uint32_t)off, cb * 8, 2 + cb * 2, u64Value,
    3298                       g_aHdaRegMap[idxRegDsc].abbrev, g_aHdaRegMap[idxRegDsc].size));
     3309                      g_aHdaRegMap[idxRegDsc].pszName, g_aHdaRegMap[idxRegDsc].cb));
    32993310
    33003311        /*
     
    33093320            if (idxRegDsc != -1)
    33103321            {
    3311                 uint32_t const cbBefore = (uint32_t)off - g_aHdaRegMap[idxRegDsc].offset;
     3322                uint32_t const cbBefore = (uint32_t)off - g_aHdaRegMap[idxRegDsc].off;
    33123323                Assert(cbBefore > 0 && cbBefore < 4);
    33133324                off      -= cbBefore;
    3314                 idxRegMem = g_aHdaRegMap[idxRegDsc].mem_idx;
     3325                idxRegMem = g_aHdaRegMap[idxRegDsc].idxReg;
    33153326                u64Value <<= cbBefore * 8;
    33163327                u64Value  |= pThis->au32Regs[idxRegMem] & g_afMasks[cbBefore];
     
    33243335        else
    33253336        {
    3326             Log4(("hdaMmioWrite: multi write: %s\n", g_aHdaRegMap[idxRegDsc].abbrev));
     3337            Log4(("hdaMmioWrite: multi write: %s\n", g_aHdaRegMap[idxRegDsc].pszName));
    33273338            STAM_COUNTER_INC(&pThis->CTX_SUFF_Z(StatRegMultiWrites));
    33283339        }
     
    33353346            if (idxRegDsc >= 0)
    33363347            {
    3337                 idxRegMem = g_aHdaRegMap[idxRegDsc].mem_idx;
    3338                 cbReg     = g_aHdaRegMap[idxRegDsc].size;
     3348                idxRegMem = g_aHdaRegMap[idxRegDsc].idxReg;
     3349                cbReg     = g_aHdaRegMap[idxRegDsc].cb;
    33393350                if (cb < cbReg)
    33403351                {
     
    33693380                idxRegDsc++;
    33703381                if (   (unsigned)idxRegDsc >= RT_ELEMENTS(g_aHdaRegMap)
    3371                     || g_aHdaRegMap[idxRegDsc].offset != off)
     3382                    || g_aHdaRegMap[idxRegDsc].off != off)
    33723383                    idxRegDsc = -1;
    33733384            }
     
    41804191    if (pszArgs && *pszArgs != '\0')
    41814192        for (int iReg = 0; iReg < HDA_NUM_REGS; ++iReg)
    4182             if (!RTStrICmp(g_aHdaRegMap[iReg].abbrev, pszArgs))
     4193            if (!RTStrICmp(g_aHdaRegMap[iReg].pszName, pszArgs))
    41834194                return iReg;
    41844195    return -1;
     
    41884199static void hdaR3DbgPrintRegister(PPDMDEVINS pDevIns, PHDASTATE pThis, PCDBGFINFOHLP pHlp, int iHdaIndex)
    41894200{
    4190     /** @todo HDA_REG_IDX_NOMEM & GCAP both uses mem_idx zero, no flag or anything to tell them appart. */
    4191     if (g_aHdaRegMap[iHdaIndex].mem_idx != 0 || g_aHdaRegMap[iHdaIndex].pfnRead != hdaRegReadWALCLK)
    4192         pHlp->pfnPrintf(pHlp, "%s: 0x%x\n", g_aHdaRegMap[iHdaIndex].abbrev, pThis->au32Regs[g_aHdaRegMap[iHdaIndex].mem_idx]);
     4201    /** @todo HDA_REG_IDX_NOMEM & GCAP both uses idxReg zero, no flag or anything
     4202     *        to tell them appart. */
     4203    if (g_aHdaRegMap[iHdaIndex].idxReg != 0 || g_aHdaRegMap[iHdaIndex].pfnRead != hdaRegReadWALCLK)
     4204        pHlp->pfnPrintf(pHlp, "%s: 0x%x\n", g_aHdaRegMap[iHdaIndex].pszName, pThis->au32Regs[g_aHdaRegMap[iHdaIndex].idxReg]);
    41934205    else
    41944206    {
    41954207        uint64_t uWallNow = 0;
    41964208        hdaQueryWallClock(pDevIns, pThis, false /*fDoDma*/, &uWallNow);
    4197         pHlp->pfnPrintf(pHlp, "%s: 0x%RX64\n", g_aHdaRegMap[iHdaIndex].abbrev, uWallNow);
     4209        pHlp->pfnPrintf(pHlp, "%s: 0x%RX64\n", g_aHdaRegMap[iHdaIndex].pszName, uWallNow);
    41984210    }
    41994211}
     
    50625074     * Asserting sanity.
    50635075     */
    5064     AssertCompile(RT_ELEMENTS(pThis->au32Regs) < 256 /* assumption by HDAREGDESC::mem_idx */);
     5076    AssertCompile(RT_ELEMENTS(pThis->au32Regs) < 256 /* assumption by HDAREGDESC::idxReg */);
    50655077    for (unsigned i = 0; i < RT_ELEMENTS(g_aHdaRegMap); i++)
    50665078    {
     
    50695081
    50705082        /* binary search order. */
    5071         AssertReleaseMsg(!pNextReg || pReg->offset + pReg->size <= pNextReg->offset,
     5083        AssertReleaseMsg(!pNextReg || pReg->off + pReg->cb <= pNextReg->off,
    50725084                         ("[%#x] = {%#x LB %#x}  vs. [%#x] = {%#x LB %#x}\n",
    5073                           i, pReg->offset, pReg->size, i + 1, pNextReg->offset, pNextReg->size));
     5085                          i, pReg->off, pReg->cb, i + 1, pNextReg->off, pNextReg->cb));
    50745086
    50755087        /* alignment. */
    5076         AssertReleaseMsg(   pReg->size == 1
    5077                          || (pReg->size == 2 && (pReg->offset & 1) == 0)
    5078                          || (pReg->size == 3 && (pReg->offset & 3) == 0)
    5079                          || (pReg->size == 4 && (pReg->offset & 3) == 0),
    5080                          ("[%#x] = {%#x LB %#x}\n", i, pReg->offset, pReg->size));
     5088        AssertReleaseMsg(   pReg->cb == 1
     5089                         || (pReg->cb == 2 && (pReg->off & 1) == 0)
     5090                         || (pReg->cb == 3 && (pReg->off & 3) == 0)
     5091                         || (pReg->cb == 4 && (pReg->off & 3) == 0),
     5092                         ("[%#x] = {%#x LB %#x}\n", i, pReg->off, pReg->cb));
    50815093
    50825094        /* registers are packed into dwords - with 3 exceptions with gaps at the end of the dword. */
    5083         AssertRelease(((pReg->offset + pReg->size) & 3) == 0 || pNextReg);
    5084         if (pReg->offset & 3)
     5095        AssertRelease(((pReg->off + pReg->cb) & 3) == 0 || pNextReg);
     5096        if (pReg->off & 3)
    50855097        {
    50865098            struct HDAREGDESC const *pPrevReg = i > 0 ?  &g_aHdaRegMap[i - 1] : NULL;
    5087             AssertReleaseMsg(pPrevReg, ("[%#x] = {%#x LB %#x}\n", i, pReg->offset, pReg->size));
     5099            AssertReleaseMsg(pPrevReg, ("[%#x] = {%#x LB %#x}\n", i, pReg->off, pReg->cb));
    50885100            if (pPrevReg)
    5089                 AssertReleaseMsg(pPrevReg->offset + pPrevReg->size == pReg->offset,
     5101                AssertReleaseMsg(pPrevReg->off + pPrevReg->cb == pReg->off,
    50905102                                 ("[%#x] = {%#x LB %#x}  vs. [%#x] = {%#x LB %#x}\n",
    5091                                   i - 1, pPrevReg->offset, pPrevReg->size, i + 1, pReg->offset, pReg->size));
     5103                                  i - 1, pPrevReg->off, pPrevReg->cb, i + 1, pReg->off, pReg->cb));
    50925104        }
    50935105#if 0
     
    51025114#endif
    51035115        /* The final entry is a full DWORD, no gaps! Allows shortcuts. */
    5104         AssertReleaseMsg(pNextReg || ((pReg->offset + pReg->size) & 3) == 0,
    5105                          ("[%#x] = {%#x LB %#x}\n", i, pReg->offset, pReg->size));
     5116        AssertReleaseMsg(pNextReg || ((pReg->off + pReg->cb) & 3) == 0,
     5117                         ("[%#x] = {%#x LB %#x}\n", i, pReg->off, pReg->cb));
    51065118    }
    51075119
     
    51275139    {
    51285140        PDMDevHlpSTAMRegisterF(pDevIns, &pThis->aStatRegReads[i], STAMTYPE_COUNTER,  STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,
    5129                                g_aHdaRegMap[i].desc, "Regs/%03x-%s-Reads",       g_aHdaRegMap[i].offset, g_aHdaRegMap[i].abbrev);
     5141                               g_aHdaRegMap[i].pszDesc, "Regs/%03x-%s-Reads",       g_aHdaRegMap[i].off, g_aHdaRegMap[i].pszName);
    51305142        PDMDevHlpSTAMRegisterF(pDevIns, &pThis->aStatRegReadsToR3[i], STAMTYPE_COUNTER,  STAMVISIBILITY_USED, STAMUNIT_OCCURENCES,
    5131                                g_aHdaRegMap[i].desc, "Regs/%03x-%s-Reads-ToR3",  g_aHdaRegMap[i].offset, g_aHdaRegMap[i].abbrev);
     5143                               g_aHdaRegMap[i].pszDesc, "Regs/%03x-%s-Reads-ToR3",  g_aHdaRegMap[i].off, g_aHdaRegMap[i].pszName);
    51325144        PDMDevHlpSTAMRegisterF(pDevIns, &pThis->aStatRegWrites[i], STAMTYPE_COUNTER,  STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,
    5133                                g_aHdaRegMap[i].desc, "Regs/%03x-%s-Writes",      g_aHdaRegMap[i].offset, g_aHdaRegMap[i].abbrev);
     5145                               g_aHdaRegMap[i].pszDesc, "Regs/%03x-%s-Writes",      g_aHdaRegMap[i].off, g_aHdaRegMap[i].pszName);
    51345146        PDMDevHlpSTAMRegisterF(pDevIns, &pThis->aStatRegWritesToR3[i], STAMTYPE_COUNTER,  STAMVISIBILITY_USED, STAMUNIT_OCCURENCES,
    5135                                g_aHdaRegMap[i].desc, "Regs/%03x-%s-Writes-ToR3", g_aHdaRegMap[i].offset, g_aHdaRegMap[i].abbrev);
     5147                               g_aHdaRegMap[i].pszDesc, "Regs/%03x-%s-Writes-ToR3", g_aHdaRegMap[i].off, g_aHdaRegMap[i].pszName);
    51365148    }
    51375149    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatRegMultiReadsR3,   STAMTYPE_COUNTER, "RegMultiReadsR3",    STAMUNIT_OCCURENCES, "Register read not targeting just one register, handled in ring-3");
  • trunk/src/VBox/Devices/Audio/DevHda.h

    r89900 r89906  
    135135#endif
    136136
    137 /** Indirect register access via g_aHdaRegMap[].mem_idx. */
    138 #define HDA_REG_IND(a_pThis, a_idxMap)      HDA_REG_BY_IDX(a_pThis, g_aHdaRegMap[(a_idxMap)].mem_idx)
     137/** Indirect register access via g_aHdaRegMap[].idxReg. */
     138#define HDA_REG_IND(a_pThis, a_idxMap)      HDA_REG_BY_IDX(a_pThis, g_aHdaRegMap[(a_idxMap)].idxReg)
    139139
    140140
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