1223
* Save a pending IO read.
1225
* @param pVCpu The VMCPU to operate on.
1226
* @param GCPtrRip Address of IO instruction
1227
* @param GCPtrRipNext Address of the next instruction
1228
* @param uPort Port address
1229
* @param uAndVal And mask for saving the result in eax
1230
* @param cbSize Read size
1232
VMMR0DECL(void) HWACCMR0SavePendingIOPortRead(PVMCPU pVCpu, RTGCPTR GCPtrRip, RTGCPTR GCPtrRipNext, unsigned uPort, unsigned uAndVal, unsigned cbSize)
1234
pVCpu->hwaccm.s.PendingIO.enmType = HWACCMPENDINGIO_PORT_READ;
1235
pVCpu->hwaccm.s.PendingIO.GCPtrRip = GCPtrRip;
1236
pVCpu->hwaccm.s.PendingIO.GCPtrRipNext = GCPtrRipNext;
1237
pVCpu->hwaccm.s.PendingIO.s.Port.uPort = uPort;
1238
pVCpu->hwaccm.s.PendingIO.s.Port.uAndVal = uAndVal;
1239
pVCpu->hwaccm.s.PendingIO.s.Port.cbSize = cbSize;
1244
* Save a pending IO write.
1246
* @param pVCpu The VMCPU to operate on.
1247
* @param GCPtrRIP Address of IO instruction
1248
* @param uPort Port address
1249
* @param uAndVal And mask for fetching the result from eax
1250
* @param cbSize Read size
1252
VMMR0DECL(void) HWACCMR0SavePendingIOPortWrite(PVMCPU pVCpu, RTGCPTR GCPtrRip, RTGCPTR GCPtrRipNext, unsigned uPort, unsigned uAndVal, unsigned cbSize)
1254
pVCpu->hwaccm.s.PendingIO.enmType = HWACCMPENDINGIO_PORT_WRITE;
1255
pVCpu->hwaccm.s.PendingIO.GCPtrRip = GCPtrRip;
1256
pVCpu->hwaccm.s.PendingIO.GCPtrRipNext = GCPtrRipNext;
1257
pVCpu->hwaccm.s.PendingIO.s.Port.uPort = uPort;
1258
pVCpu->hwaccm.s.PendingIO.s.Port.uAndVal = uAndVal;
1259
pVCpu->hwaccm.s.PendingIO.s.Port.cbSize = cbSize;
1223
1264
* Disable VT-x if it's active *and* the current switcher turns off paging
1225
1266
* @returns VBox status code.
1302
1342
* @param Sel Selector number.
1303
1343
* @param pszMsg Message to prepend the log entry with.
1305
VMMR0DECL(void) HWACCMR0DumpDescriptor(PX86DESCHC pDesc, RTSEL Sel, const char *pszMsg)
1345
VMMR0DECL(void) HWACCMR0DumpDescriptor(PCX86DESCHC pDesc, RTSEL Sel, const char *pszMsg)
1308
1348
* Make variable description string.
1374
1414
char szMsg[128];
1375
1415
char *psz = &szMsg[0];
1376
1416
unsigned i = pDesc->Gen.u1DescType << 4 | pDesc->Gen.u4Type;
1377
memcpy(psz, aTypes[i].psz, aTypes[i].cch);
1378
psz += aTypes[i].cch;
1417
memcpy(psz, s_aTypes[i].psz, s_aTypes[i].cch);
1418
psz += s_aTypes[i].cch;
1380
1420
if (pDesc->Gen.u1Present)
1381
1421
ADD_STR(psz, "Present ");