- Timestamp:
- Apr 4, 2007 8:27:14 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PATM/PATMA.asm
r1907 r1914 1218 1218 ; we can't do an iret to v86 code, as we run with CPL=1. The iret would attempt a protected mode iret and (most likely) fault. 1219 1219 test dword [esp+12], X86_EFL_VM 1220 jnz near iret_return_to_v861220 jnz near iret_return_to_v86 1221 1221 1222 1222 ;;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 1234 1234 iret_notring0: 1235 1235 1236 ; if interrupts are pending, then we must go back to the host context to handle them! 1237 ; Note: This is very important as pending pic interrupts can be overriden by apic interrupts if we don't check early enough (Fedora 5 boot) 1238 ; @@todo fix this properly, so we can dispatch pending interrupts in GC 1239 test dword [ss:PATM_VM_FORCEDACTIONS], VM_FF_INTERRUPT_APIC | VM_FF_INTERRUPT_PIC 1240 jz iret_continue 1241 1242 ; Go to our hypervisor trap handler to dispatch the pending irq 1243 mov dword [ss:PATM_TEMP_EAX], eax 1244 mov dword [ss:PATM_TEMP_ECX], ecx 1245 mov dword [ss:PATM_TEMP_EDI], edi 1246 mov dword [ss:PATM_TEMP_RESTORE_FLAGS], PATM_RESTORE_EAX | PATM_RESTORE_ECX | PATM_RESTORE_EDI 1247 mov eax, PATM_ACTION_PENDING_IRQ_AFTER_IRET 1248 lock or dword [ss:PATM_PENDINGACTION], eax 1249 mov ecx, PATM_ACTION_MAGIC 1250 mov edi, PATM_CURINSTRADDR 1251 1252 popfd 1253 db 0fh, 0bh ; illegal instr (hardcoded assumption in PATMHandleIllegalInstrTrap) 1254 ; does not return 1255 1256 iret_continue : 1236 1257 ; This section must *always* be executed (!!) 1237 1258 ; Extract the IOPL from the return flags, save them to our virtual flags and … … 1348 1369 DD PATMIretEnd- PATMIretStart 1349 1370 %ifdef PATM_LOG_PATCHIRET 1350 DD 191371 DD 26 1351 1372 %else 1352 DD 181373 DD 25 1353 1374 %endif 1354 1375 DD PATM_INTERRUPTFLAG … … 1358 1379 DD 0 1359 1380 %endif 1381 DD PATM_VM_FORCEDACTIONS 1382 DD 0 1383 DD PATM_TEMP_EAX 1384 DD 0 1385 DD PATM_TEMP_ECX 1386 DD 0 1387 DD PATM_TEMP_EDI 1388 DD 0 1389 DD PATM_TEMP_RESTORE_FLAGS 1390 DD 0 1391 DD PATM_PENDINGACTION 1392 DD 0 1393 DD PATM_CURINSTRADDR 1394 DD 0 1360 1395 DD PATM_VMFLAGS 1361 1396 DD 0
Note:
See TracChangeset
for help on using the changeset viewer.