Lines Matching refs:pTst

37 DECLEXPORT(int) tstMicroRC(PTSTMICRO pTst, unsigned uTestcase);
44 * @param pTst Pointer to the instance data.
47 void idtInstall(PTSTMICRO pTst, int iIDT)
51 if (Idtr.pIdt == (uintptr_t)&pTst->aIDT[0])
53 pTst->OriginalIDTR.cbIdt = Idtr.cbIdt;
54 pTst->OriginalIDTR.pIdt = Idtr.pIdt;
59 if (Idtr.cbIdt >= sizeof(pTst->aIDT))
60 Idtr.cbIdt = sizeof(pTst->aIDT) - 1;
61 memcpy(&pTst->aIDT[0], (void *)Idtr.pIdt, Idtr.cbIdt + 1);
76 pTst->aIDT[iIDT].Int.u16OffsetHigh = uHandler >> 16;
77 pTst->aIDT[iIDT].Int.u16OffsetLow = uHandler & 0xffff;
78 pTst->aIDT[iIDT].Int.u16SegSel = SELMGetHyperCS(&g_VM);
79 pTst->aIDT[iIDT].Int.u2DPL = 3;
80 pTst->aIDT[iIDT].Int.u1Present = 1;
81 pTst->aIDT[iIDT].Int.u1Fixed0 = 0;
82 pTst->aIDT[iIDT].Int.u1Fixed1 = 0;
83 pTst->aIDT[iIDT].Int.u1Fixed2 = 0;
84 pTst->aIDT[iIDT].Int.u1Fixed3 = 0;
85 pTst->aIDT[iIDT].Int.u1Fixed4 = 1;
86 pTst->aIDT[iIDT].Int.u1Fixed5 = 1;
87 pTst->aIDT[iIDT].Int.u132BitGate = 1;
88 pTst->aIDT[iIDT].Int.u1Fixed6 = 0;
89 pTst->aIDT[iIDT].Int.u5Reserved2 = 0;
93 pTst->aIDT[0x42].Int.u16OffsetHigh = (uintptr_t)tstInterrupt42 >> 16;
94 pTst->aIDT[0x42].Int.u16OffsetLow = (uintptr_t)tstInterrupt42 & 0xffff;
95 pTst->aIDT[0x42].Int.u16SegSel = SELMGetHyperCS(&g_VM);
96 pTst->aIDT[0x42].Int.u2DPL = 3;
97 pTst->aIDT[0x42].Int.u1Present = 1;
98 pTst->aIDT[0x42].Int.u1Fixed0 = 0;
99 pTst->aIDT[0x42].Int.u1Fixed1 = 0;
100 pTst->aIDT[0x42].Int.u1Fixed2 = 0;
101 pTst->aIDT[0x42].Int.u1Fixed3 = 0;
102 pTst->aIDT[0x42].Int.u1Fixed4 = 1;
103 pTst->aIDT[0x42].Int.u1Fixed5 = 1;
104 pTst->aIDT[0x42].Int.u132BitGate = 1;
105 pTst->aIDT[0x42].Int.u1Fixed6 = 0;
106 pTst->aIDT[0x42].Int.u5Reserved2 = 0;
111 Idtr.pIdt = (uintptr_t)&pTst->aIDT[0];
116 Assert(Idtr2.pIdt == (uintptr_t)&pTst->aIDT[0]);
123 DECLASM(void) idtOnly42(PTSTMICRO pTst)
125 if (pTst->OriginalIDTR.pIdt)
126 memcpy(&pTst->aIDT[0], (void *)(uintptr_t)pTst->OriginalIDTR.pIdt, sizeof(VBOXIDTE) * 32);
131 DECLEXPORT(int) tstMicroRC(PTSTMICRO pTst, unsigned uTestcase)
133 RTLogPrintf("pTst=%p uTestcase=%d\n", pTst, uTestcase);
144 pTst->u64TSCR0Start = 0;
145 pTst->u64TSCRxStart = 0;
146 pTst->u64TSCR0Enter = 0;
147 pTst->u64TSCR0Exit = 0;
148 pTst->u64TSCRxEnd = 0;
149 pTst->u64TSCR0End = 0;
150 pTst->cHits = 0;
151 pTst->offEIPAdd = 0;
152 pTst->u32CR2 = 0;
153 pTst->u32EIP = 0;
154 pTst->u32ErrCd = 0;
155 PTSTMICRORESULT pRes = &pTst->aResults[uTestcase];
156 memset(&pTst->aResults[uTestcase], 0, sizeof(pTst->aResults[uTestcase]));
167 tstOverhead(pTst);
173 tstInvlpg0(pTst);
179 tstInvlpgEIP(pTst);
185 tstInvlpgESP(pTst);
191 tstCR3Reload(pTst);
197 tstWPDisable(pTst);
203 tstWPEnable(pTst);
209 idtInstall(pTst, 0xe);
210 pTst->offEIPAdd = 2;
211 rc = tstPFR0(pTst);
217 idtInstall(pTst, 0xe);
218 pTst->offEIPAdd = 2;
219 rc = tstPFR1(pTst);
225 idtInstall(pTst, 0xe);
226 pTst->offEIPAdd = 2;
227 rc = tstPFR2(pTst);
233 idtInstall(pTst, 0xe);
234 pTst->offEIPAdd = 2;
235 rc = tstPFR3(pTst);
244 if (pTst->u64TSCR0End && pTst->u64TSCR0Start)
245 pRes->cTotalTicks = pTst->u64TSCR0End - pTst->u64TSCR0Start - pTst->u64Overhead;
246 if (pTst->u64TSCRxStart && pTst->u64TSCR0Start)
247 pRes->cToRxFirstTicks = pTst->u64TSCRxStart - pTst->u64TSCR0Start - pTst->u64Overhead;
248 if (pTst->u64TSCR0Enter && pTst->u64TSCRxStart)
249 pRes->cTrapTicks = pTst->u64TSCR0Enter - pTst->u64TSCRxStart - pTst->u64Overhead;
250 if (pTst->u64TSCRxEnd && pTst->u64TSCR0Exit)
251 pRes->cToRxTrapTicks = pTst->u64TSCRxEnd - pTst->u64TSCR0Exit - pTst->u64Overhead;
252 if (pTst->u64TSCR0End && pTst->u64TSCRxEnd)
253 pRes->cToR0Ticks = pTst->u64TSCR0End - pTst->u64TSCRxEnd - pTst->u64Overhead;