Changeset 2646 in vbox for trunk/src/VBox/VMM
- Timestamp:
- May 15, 2007 11:33:27 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/TRPM.cpp
r2124 r2646 1161 1161 { 1162 1162 /* 1163 * Only replace the 0x2E handler; others need to be called indirectly via a trampoline in our GC handlers 1163 * Only replace handlers for which we are 100% certain there won't be 1164 * any host interrupts. 1165 * 1166 * 0x2E is safe on Windows because it's the system service interrupt gate. Not 1167 * quite certain if this is safe or not on 64-bit Vista, it probably is. 1168 * 1169 * 0x80 is safe on Linux because it's the syscall vector and is part of the 1170 * 32-bit usermode ABI. 64-bit Linux (usually) supports 32-bit processes 1171 * and will therefor never assign hardware interrupts to 0x80. 1172 * 1173 * Exactly why 0x80 is safe on 32-bit Windows is a bit hazy, but it seems 1174 * to work ok... However on 64-bit Vista (SMP?) is doesn't work reliably. 1175 * Booting Linux/BSD guest will cause system lockups on most of the computers. 1176 * 1177 * PORTME - Check if your host keeps any of these gates free from hw ints. 1178 * 1179 * Note! SELMR3SyncTSS also has code related to this interrupt handler replacing. 1164 1180 */ 1165 /** @note dependencies on trap gate numbers in SELMR3SyncTSS */1166 1181 /** @todo handle those dependencies better! */ 1167 # ifdef _WIN32 /** @todo Solve this in a proper manner. see defect #1186 */ 1182 /** @todo Solve this in a proper manner. see defect #1186 */ 1183 #if defined(__WIN__) && defined(__X86__) 1168 1184 if (iTrap == 0x2E || iTrap == 0x80) 1169 # else1185 #elif defined(__LINUX__) 1170 1186 if (iTrap == 0x80) 1171 # endif 1187 #else 1188 if (0) 1189 #endif 1172 1190 { 1173 1191 if ( GuestIdte.Gen.u1Present
Note:
See TracChangeset
for help on using the changeset viewer.