Lines Matching defs:uFlatAddr

51     uint32_t    uFlatAddr;
305 * @param uFlatAddr The address of the byte sequence.
308 static bool disIsString(uint32_t uFlatAddr, uint32_t cb)
313 uint8_t const *pb = &g_pbImg[uFlatAddr - g_uBiosFlatBase];
344 * @param uFlatAddr The address of the dword.
346 static bool disIsFarBiosAddr(uint32_t uFlatAddr)
348 uint16_t const *pu16 = (uint16_t const *)&g_pbImg[uFlatAddr - g_uBiosFlatBase];
360 static bool disByteData(uint32_t uFlatAddr, uint32_t cb)
362 uint8_t const *pb = &g_pbImg[uFlatAddr - g_uBiosFlatBase];
391 static bool disWordData(uint32_t uFlatAddr, uint32_t cb)
394 return disError("disWordData expects word aligned size: cb=%#x uFlatAddr=%#x", uFlatAddr, cb);
396 uint16_t const *pu16 = (uint16_t const *)&g_pbImg[uFlatAddr - g_uBiosFlatBase];
426 static bool disDWordData(uint32_t uFlatAddr, uint32_t cb)
429 return disError("disWordData expects dword aligned size: cb=%#x uFlatAddr=%#x", uFlatAddr, cb);
431 uint32_t const *pu32 = (uint32_t const *)&g_pbImg[uFlatAddr - g_uBiosFlatBase];
461 static bool disStringData(uint32_t uFlatAddr, uint32_t cb)
463 uint8_t const *pb = &g_pbImg[uFlatAddr - g_uBiosFlatBase];
529 * @param uFlatAddr The start address.
532 static bool disStringsData(uint32_t uFlatAddr, uint32_t cb)
534 uint8_t const *pb = &g_pbImg[uFlatAddr - g_uBiosFlatBase];
605 * @param uFlatAddr The address of the gap.
608 static bool disCopySegmentGap(uint32_t uFlatAddr, uint32_t cbPadding)
612 " ; Padding %#x bytes at %#x\n", cbPadding, uFlatAddr);
613 uint8_t const *pb = &g_pbImg[uFlatAddr - g_uBiosFlatBase];
617 return disByteData(uFlatAddr, cbPadding);
625 * @param uFlatAddr The address to start searching at.
628 * and @a uFlatAddr.
631 static void disGetNextSymbolWorker(uint32_t uFlatAddr, uint32_t cbMax, uint32_t *poff, PRTDBGSYMBOL pSym)
634 int rc = RTDbgModSymbolByAddr(g_hMapMod, RTDBGSEGIDX_RVA, uFlatAddr, RTDBGSYMADDR_FLAGS_GREATER_OR_EQUAL, &off, pSym);
645 uFlatAddr, off, pSym->cb, pSym->Value, pSym->szName);
648 outputPrintf(" ; !! RTDbgModSymbolByAddr(,,%#x,,) -> %Rrc\n", uFlatAddr, rc);
650 RTStrPrintf(pSym->szName, sizeof(pSym->szName), "_dummy_addr_%#x", uFlatAddr + cbMax);
651 pSym->Value = uFlatAddr + cbMax;
653 pSym->offSeg = uFlatAddr + cbMax;
667 * @param uFlatAddr The address to start searching at.
670 * and @a uFlatAddr.
673 static void disGetNextSymbol(uint32_t uFlatAddr, uint32_t cbMax, uint32_t *poff, PRTDBGSYMBOL pSym)
675 disGetNextSymbolWorker(uFlatAddr, cbMax, poff, pSym);
683 disGetNextSymbolWorker(uFlatAddr + *poff + 1, cbMax - *poff - 1, &off2, &Sym2);
694 uFlatAddr, cbMax, *poff, pSym->cb, pSym->Value, pSym->szName);
707 uint32_t uFlatAddr = g_aSegs[iSeg].uFlatAddr;
714 disGetNextSymbol(uFlatAddr, cb, &off, &Sym);
718 if (!disStringsData(uFlatAddr, off))
721 uFlatAddr += off;
731 fRc = outputPrintf("%s: %*s; %#x LB %#x\n", Sym.szName, cchName < 41 - 2 ? cchName - 41 - 2 : 0, "", uFlatAddr, Sym.cb);
734 fRc = disStringsData(uFlatAddr, Sym.cb);
735 uFlatAddr += Sym.cb;
740 fRc = disStringsData(uFlatAddr, Sym.cb);
741 uFlatAddr += cb;
755 uint32_t uFlatAddr = g_aSegs[iSeg].uFlatAddr;
762 disGetNextSymbol(uFlatAddr, cb, &off, &Sym);
766 if (!disByteData(uFlatAddr, off))
769 uFlatAddr += off;
779 fRc = outputPrintf("%s: %*s; %#x LB %#x\n", Sym.szName, cchName < 41 - 2 ? cchName - 41 - 2 : 0, "", uFlatAddr, Sym.cb);
784 fRc = disWordData(uFlatAddr, 2);
785 //else if (Sym.cb == 4 && disIsFarBiosAddr(uFlatAddr))
786 // fRc = disDWordData(uFlatAddr, 4);
788 fRc = disDWordData(uFlatAddr, 4);
789 else if (disIsString(uFlatAddr, Sym.cb))
790 fRc = disStringData(uFlatAddr, Sym.cb);
792 fRc = disByteData(uFlatAddr, Sym.cb);
794 uFlatAddr += Sym.cb;
799 fRc = disByteData(uFlatAddr, cb);
800 uFlatAddr += cb;
811 static bool disIsCodeAndAdjustSize(uint32_t uFlatAddr, PRTDBGSYMBOL pSym, PBIOSSEG pSeg)
861 static size_t disHandleYasmDifferences(PDISCPUSTATE pCpuState, uint32_t uFlatAddr, uint32_t cbInstr,
865 uint8_t const *pb = &g_pbImg[uFlatAddr - g_uBiosFlatBase];
903 disByteData(uFlatAddr, cbInstr); /* lazy bird. */
945 * @param uFlatAddr The address where the code starts.
949 static bool disCode(uint32_t uFlatAddr, uint32_t cb, bool fIs16Bit)
951 uint8_t const *pb = &g_pbImg[uFlatAddr - g_uBiosFlatBase];
965 uFlatAddr += cbZeros;
969 return disStringData(uFlatAddr, cb);
1020 return disByteData(uFlatAddr, cb);
1025 int rc = DISInstrWithReader(uFlatAddr, fIs16Bit ? DISCPUMODE_16BIT : DISCPUMODE_32BIT,
1037 cch = disHandleYasmDifferences(&CpuState, uFlatAddr, cbInstr, szTmp, sizeof(szTmp), cch);
1044 RTStrPrintf(&szTmp[cch], sizeof(szTmp) - cch, "; %#x", uFlatAddr);
1051 uFlatAddr += cbInstr;
1055 if (!disByteData(uFlatAddr, 1))
1059 uFlatAddr++;
1069 uint32_t uFlatAddr = g_aSegs[iSeg].uFlatAddr;
1076 disGetNextSymbol(uFlatAddr, cb, &off, &Sym);
1080 if (!disByteData(uFlatAddr, off))
1083 uFlatAddr += off;
1093 fRc = outputPrintf("%s: %*s; %#x LB %#x\n", Sym.szName, cchName < 41 - 2 ? cchName - 41 - 2 : 0, "", uFlatAddr, Sym.cb);
1097 if (disIsCodeAndAdjustSize(uFlatAddr, &Sym, &g_aSegs[iSeg]))
1098 fRc = disCode(uFlatAddr, Sym.cb, disIs16BitCode(Sym.szName));
1100 fRc = disByteData(uFlatAddr, Sym.cb);
1102 uFlatAddr += Sym.cb;
1107 fRc = disByteData(uFlatAddr, cb);
1108 uFlatAddr += cb;
1128 uint32_t uFlatAddr = g_uBiosFlatBase;
1132 if (uFlatAddr < g_aSegs[iSeg].uFlatAddr)
1134 fRc = disCopySegmentGap(uFlatAddr, g_aSegs[iSeg].uFlatAddr - uFlatAddr);
1137 uFlatAddr = g_aSegs[iSeg].uFlatAddr;
1139 else if (uFlatAddr > g_aSegs[iSeg].uFlatAddr)
1140 return RTMsgErrorExit(RTEXITCODE_FAILURE, "Overlapping segments: %u and %u; uFlatAddr=%#x\n", iSeg - 1, iSeg, uFlatAddr);
1145 g_aSegs[iSeg].szName, g_aSegs[iSeg].uFlatAddr - g_uBiosFlatBase,
1157 uFlatAddr += g_aSegs[iSeg].cb;
1161 if (uFlatAddr < g_uBiosFlatBase + g_cbImg)
1162 fRc = disCopySegmentGap(uFlatAddr, (uint32_t)(g_uBiosFlatBase + g_cbImg - uFlatAddr));
1163 else if (uFlatAddr > g_uBiosFlatBase + g_cbImg)
1164 return RTMsgErrorExit(RTEXITCODE_FAILURE, "Last segment spills beyond 1MB; uFlatAddr=%#x\n", uFlatAddr);
1662 g_aSegs[iSeg].uFlatAddr = ((uint32_t)g_aSegs[iSeg].Address.sel << 4) + g_aSegs[iSeg].Address.off;
1666 g_aSegs[iSeg].uFlatAddr,
1695 if (g_aSegs[j].uFlatAddr < g_aSegs[i].uFlatAddr)
1703 g_aSegs[i].uFlatAddr,
1712 int rc = RTDbgModSegmentAdd(g_hMapMod, g_aSegs[i].uFlatAddr, g_aSegs[i].cb, g_aSegs[i].szName, 0 /*fFlags*/, &idx);
1790 uint32_t uFlatAddr = ((uint32_t)Addr.sel << 4) + Addr.off;
1791 if (uFlatAddr != 0)
1793 int rc = RTDbgModSymbolAdd(g_hMapMod, szName, RTDBGSEGIDX_RVA, uFlatAddr, 0 /*cb*/, 0 /*fFlags*/, NULL);
1797 rc = RTDbgModSymbolAdd(g_hMapMod, szName, RTDBGSEGIDX_RVA, uFlatAddr - 1, 0 /*cb*/, 0 /*fFlags*/, NULL);
1803 RTStrmPrintf(g_pStdErr, "read symbol - %08x %s\n", uFlatAddr, szName);