Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 450 → Rev 451

/shark/trunk/oslib/xlib/vm86.c
35,6 → 35,8
#include <ll/i386/x-dosmem.h>
#include <ll/i386/cons.h>
#include <ll/i386/error.h>
#include <ll/i386/apic.h>
#include <ll/i386/advtimer.h>
 
FILE(VM-86);
 
174,6 → 176,10
DWORD *IRQTable_entry;
BYTE p1,p2;
 
#ifdef __APIC__
DWORD msr1 = 0,msr2 = 0;
#endif
 
SYS_FLAGS f;
 
if (service < 0x10 || in == NULL) return -1;
218,10 → 224,22
outp(0x21,0xFF);
outp(0xA1,0xFF);
 
#ifdef __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
sti();
ll_context_load(X_VM86_TSS);
cli();
 
#ifdef __APIC__
wrmsr(APIC_BASE_MSR,msr1,msr2);
enable_APIC_timer();
#endif
 
outp(0x21,p1);
outp(0xA1,p2);
 
262,11 → 280,22
outp(0x21,0xFF);
outp(0xA1,0xFF);
 
#ifdef __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;
sti();
ll_context_load(X_VM86_TSS);
cli();
 
#ifdef __APIC__
wrmsr(APIC_BASE_MSR,msr1,msr2);
enable_APIC_timer();
#endif
 
outp(0x21,p1);
outp(0xA1,p2);
 
/shark/trunk/oslib/xlib/xbios.c
39,7 → 39,9
/* Assembler gate JMP instruction */
extern void _x_callBIOS(void);
X_CALLBIOS *xbc = x_bios_address();
DWORD msr1 = 0,msr2 = 0;
#ifdef __APIC__
DWORD msr1 = 0,msr2 = 0;
#endif
 
/* Send interrupt request & register through the X_Info structure */
xbc->_irqno = service;