Changeset 39141 in vbox
- Timestamp:
- Oct 28, 2011 2:50:47 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/USB/testcase/tstOhciRegisterAccess.cpp
r39140 r39141 52 52 "HcDoneHead", 53 53 "HcFmInterval", 54 54 55 "HcFmRemaining", 55 56 "HcFmNumber", … … 72 73 static bool TestOhciWrites(RTVPTRUNION uPtr) 73 74 { 74 return true; 75 static struct 76 { 77 unsigned iReg; 78 uint32_t uVal1; 79 uint32_t uVal2; 80 } const s_aRegs[] = 81 { 82 { 13 /* HcFmInterval */, 0x58871120, 0 } 83 }; 84 85 bool fSuccess = true; 86 for (unsigned i = 0; i < RT_ELEMENTS(s_aRegs); i++) 87 { 88 uint32_t const iReg = s_aRegs[i].iReg; 89 RTVPTRUNION uPtrReg; 90 uPtrReg.pu32 = &uPtr.pu32[iReg]; 91 92 uint32_t uInitialValue = *uPtrReg.pu32; 93 LogRel(("TestOhciWrites: %p iReg=%2d %20s = %08RX32\n", uPtrReg.pv, iReg, g_apszRegNms[iReg], uInitialValue)); 94 95 bool fDone = true; 96 const char *pszError = NULL; 97 RTCCUINTREG const fFlags = ASMIntDisableFlags(); 98 99 /* 100 * DWORD writes. 101 */ 102 uInitialValue = *uPtrReg.pu32; 103 *uPtrReg.pu32 = uInitialValue; 104 uint32_t u32A = *uPtrReg.pu32; 105 uint32_t const uChangedValue = s_aRegs[i].uVal1 != uInitialValue ? s_aRegs[i].uVal1 : s_aRegs[i].uVal2; 106 if (u32A == uInitialValue) 107 { 108 /* Change the value. */ 109 *uPtrReg.pu32 = uChangedValue; 110 u32A = *uPtrReg.pu32; 111 *uPtrReg.pu32 = uInitialValue; 112 if (u32A != uChangedValue) 113 pszError = "Writing changed value failed"; 114 } 115 else 116 pszError = "Writing back initial value failed"; 117 118 119 /* 120 * Write byte changes. 121 */ 122 if (!pszError) 123 { 124 125 } 126 127 128 *uPtrReg.pu32 = uInitialValue; 129 130 ASMSetFlags(fFlags); 131 ASMNopPause(); 132 133 /* 134 * Complain on failure. 135 */ 136 if (!fDone) 137 LogRel(("TestOhciWrites: Warning! Register %s was never stable enough for testing! %08RX32 %08RX32 %08RX32\n", 138 g_apszRegNms[iReg], uInitialValue, u32A, uChangedValue, uInitialValue)); 139 else if (pszError) 140 { 141 LogRel(("TestOhciWrites: Error! Register %s failed: %s; uInitialValue=%08RX32 uChangedValue=%08RX32 u32A=%08RX32\n", 142 g_apszRegNms[iReg], pszError, uInitialValue, uChangedValue, u32A)); 143 fSuccess = false; 144 } 145 } 146 147 return fSuccess; 75 148 } 76 149
Note:
See TracChangeset
for help on using the changeset viewer.