51,6 → 51,7 |
#define VM86_STACK_SIZE 8192 |
|
extern DWORD ll_irq_table[256]; |
extern BYTE use_apic, use_tsc; |
|
/* TSS optional section */ |
static BYTE vm86_stack0[VM86_STACK_SIZE]; |
180,11 → 181,8 |
LIN_ADDR vm86_stackPtr; |
DWORD *IRQTable_entry; |
BYTE p1,p2; |
DWORD msr1 = 0,msr2 = 0; |
|
#ifdef __APIC__ |
DWORD msr1 = 0,msr2 = 0; |
#endif |
|
SYS_FLAGS f; |
|
if (service < 0x10 || in == NULL) return -1; |
229,10 → 227,10 |
outp(0x21,0xFF); |
outp(0xA1,0xFF); |
|
#ifdef __APIC__ |
if (use_apic) { |
rdmsr(APIC_BASE_MSR,msr1,msr2); |
disable_APIC_timer(); |
#endif |
} |
|
vm86_TSS.t.back_link = ll_context_save(); |
VM86_ret_ctx = vm86_TSS.t.back_link |
240,10 → 238,10 |
ll_context_load(X_VM86_TSS); |
cli(); |
|
#ifdef __APIC__ |
if (use_apic) { |
wrmsr(APIC_BASE_MSR,msr1,msr2); |
enable_APIC_timer(); |
#endif |
} |
|
outp(0x21,p1); |
outp(0xA1,p2); |
285,10 → 283,10 |
outp(0x21,0xFF); |
outp(0xA1,0xFF); |
|
#ifdef __APIC__ |
if (use_apic) { |
rdmsr(APIC_BASE_MSR,msr1,msr2); |
disable_APIC_timer(); |
#endif |
} |
|
vm86_TSS.t.back_link = ll_context_save(); |
VM86_ret_ctx = vm86_TSS.t.back_link; |
296,10 → 294,10 |
ll_context_load(X_VM86_TSS); |
cli(); |
|
#ifdef __APIC__ |
if (use_apic) { |
wrmsr(APIC_BASE_MSR,msr1,msr2); |
enable_APIC_timer(); |
#endif |
} |
|
outp(0x21,p1); |
outp(0xA1,p2); |