28,9 → 28,6 |
#include <ll/i386/defs.h> |
|
.extern SYMBOL_NAME(GDT_base) |
.extern SYMBOL_NAME(global_regs) |
.extern SYMBOL_NAME(VM86_ret_ctx) |
|
.data |
|
ASMFILE(Exc) |
43,7 → 40,6 |
|
.extern SYMBOL_NAME(ll_exc_hook) |
.extern SYMBOL_NAME(ll_FPU_hook) |
.extern SYMBOL_NAME(vm86_return) |
|
.globl SYMBOL_NAME(h13_bis) |
.globl SYMBOL_NAME(exc7) |
125,7 → 121,7 |
INT_1(70) |
INT_1(71) |
|
VM86(72) |
INT(72) |
INT(73) |
INT(74) |
INT(75) |
581,54 → 577,9 |
popal |
iret |
|
ll_handler_vm86: |
pushl %ds |
pushl %ss |
pushl %es |
pushl %fs |
pushl %gs |
|
pushl %eax |
|
movw $(X_FLATDATA_SEL),%ax |
movw %ax,%es |
mov %ax,%ds |
movw %ax,%fs |
movw %ax,%gs |
|
popl %eax |
pushl %ebx |
|
movl SYMBOL_NAME(global_regs),%ebx |
movl %eax,56(%ebx) |
movl %ecx,52(%ebx) |
movl %edx,48(%ebx) |
movl %edi,28(%ebx) |
movl %esi,32(%ebx) |
|
movl %ebx,%edi |
popl %ebx |
movl %ebx,44(%edi) |
|
pushfl |
popl %ebx |
movl %ebx,68(%edi) |
|
#ifdef __VIRCSW__ |
movw SYMBOL_NAME(VM86_ret_ctx), %ax |
movw %ax,JmpSel |
ljmp *JmpZone |
#endif |
|
popl %gs |
popl %fs |
popl %es |
popl %ss |
popl %ds |
popal |
iret |
|
|
/* OK, this is Exception 7, and it is generated when an ESC or WAIT |
* intruction is reached, and the MP and TS bits are set... Basically, |
* it means that the FPU context must be switched |
651,4 → 602,3 |
popl %ds |
popal |
iret |
|