|
|
| version 1.5, 2004/01/27 15:55:49 | version 1.6, 2004/02/03 14:26:45 |
|---|---|
| Line 1034 RETfar_pm(DWORD nbytes) | Line 1034 RETfar_pm(DWORD nbytes) |
| /*------------------------------------------------------------------------------ | /*------------------------------------------------------------------------------ |
| * IRET_pm | * IRET_pm |
| */ | */ |
| #define IA32_RETURN_FROM_VM86 | |
| static void IRET_pm_nested_task(void); | static void IRET_pm_nested_task(void); |
| static void IRET_pm_return_to_vm86(DWORD new_ip, DWORD new_cs, DWORD new_flags); | static void IRET_pm_return_to_vm86(DWORD new_ip, DWORD new_cs, DWORD new_flags); |
| #if defined(IA32_RETURN_FROM_VM86) | |
| static void IRET_pm_return_from_vm86(DWORD new_ip, DWORD new_cs, DWORD new_flags); | static void IRET_pm_return_from_vm86(DWORD new_ip, DWORD new_cs, DWORD new_flags); |
| #endif /* IA32_RETURN_FROM_VM86 */ | |
| void | void |
| IRET_pm(void) | IRET_pm(void) |
| Line 1085 IRET_pm(void) | Line 1080 IRET_pm(void) |
| } | } |
| VERBOSE(("IRET_pm: new_ip = %08x, new_cs = %04x, new_eflags = %08x", new_ip, new_cs, new_flags)); | VERBOSE(("IRET_pm: new_ip = %08x, new_cs = %04x, new_eflags = %08x", new_ip, new_cs, new_flags)); |
| #ifdef IA32_RETURN_FROM_VM86 | |
| if (CPU_EFLAG & VM_FLAG) { | if (CPU_EFLAG & VM_FLAG) { |
| /* RETURN-FROM-VIRTUAL-8086-MODE */ | /* RETURN-FROM-VIRTUAL-8086-MODE */ |
| IRET_pm_return_from_vm86(new_ip, new_cs, new_flags); | IRET_pm_return_from_vm86(new_ip, new_cs, new_flags); |
| Line 1093 IRET_pm(void) | Line 1087 IRET_pm(void) |
| CPU_STAT_NERROR = 0; | CPU_STAT_NERROR = 0; |
| return; | return; |
| } | } |
| #endif /* IA32_RETURN_FROM_VM86 */ | |
| if (new_flags & VM_FLAG) { | if (new_flags & VM_FLAG) { |
| /* RETURN-TO-VIRTUAL-8086-MODE */ | /* RETURN-TO-VIRTUAL-8086-MODE */ |
| Line 1355 IRET_pm_return_to_vm86(DWORD new_ip, DWO | Line 1348 IRET_pm_return_to_vm86(DWORD new_ip, DWO |
| SET_EIP(new_ip); | SET_EIP(new_ip); |
| } | } |
| #ifdef IA32_RETURN_FROM_VM86 | |
| /*--- | /*--- |
| * IRET_pm: VM_FLAG | * IRET_pm: VM_FLAG |
| */ | */ |
| Line 1388 IRET_pm_return_from_vm86(DWORD new_ip, D | Line 1380 IRET_pm_return_from_vm86(DWORD new_ip, D |
| VERBOSE(("IRET_pm: trap to virtual-8086 monitor: VM=1, IOPL<3")); | VERBOSE(("IRET_pm: trap to virtual-8086 monitor: VM=1, IOPL<3")); |
| EXCEPTION(GP_EXCEPTION, 0); | EXCEPTION(GP_EXCEPTION, 0); |
| } | } |
| #endif /* IA32_RETURN_FROM_VM86 */ |