| version 1.17, 2004/03/08 12:56:22 | version 1.20, 2004/03/25 08:51:24 | 
| Line 95  ia32shut(void) | Line 95  ia32shut(void) | 
 | } | } | 
 |  |  | 
 | void | void | 
 |  | ia32a20enable(BOOL enable) | 
 |  | { | 
 |  | #if (CPU_FAMILY == 3) | 
 |  | CPU_ADRSMASK = (enable)?0x00ffffff:0x00ffffff; | 
 |  | #else | 
 |  | CPU_ADRSMASK = (enable)?0xffffffff:0x00ffffff; | 
 |  | #endif | 
 |  | } | 
 |  |  | 
 |  | void | 
 | ia32(void) | ia32(void) | 
 | { | { | 
 | int rv; | int rv; | 
| Line 185  ia32_step(void) | Line 195  ia32_step(void) | 
 | } | } | 
 |  |  | 
 | void CPUCALL | void CPUCALL | 
| ia32_interrupt(int vect) | ia32_interrupt(int vect, int soft) | 
 | { | { | 
 |  |  | 
| INTERRUPT(vect, FALSE, FALSE, 0); | //      TRACEOUT(("int (%x, %x) PE=%d VM=%d",  vect, soft, CPU_STAT_PM, CPU_STAT_VM86)); | 
|  | if (!soft) { | 
|  | INTERRUPT(vect, FALSE, FALSE, 0); | 
|  | } | 
|  | else { | 
|  | if (CPU_STAT_VM86 && (CPU_STAT_IOPL < CPU_IOPL3) && (soft == -1)) { | 
|  | TRACEOUT(("BIOS interrupt: VM86 && IOPL < 3 && INTn")); | 
|  | } | 
|  | INTERRUPT(vect, TRUE, FALSE, 0); | 
|  | } | 
 | } | } | 
 |  |  | 
 |  |  | 
| Line 256  ia32_bioscall(void) | Line 275  ia32_bioscall(void) | 
 | UINT32 adrs; | UINT32 adrs; | 
 |  |  | 
 | if (!CPU_STAT_PM || CPU_STAT_VM86) { | if (!CPU_STAT_PM || CPU_STAT_VM86) { | 
 |  | #if 1 | 
 |  | adrs = (CPU_EIP - 1) + ((CPU_REGS_SREG(CPU_CS_INDEX)) << 4); | 
 |  | #else | 
 | adrs = (CPU_EIP - 1) + CPU_STAT_CS_BASE; | adrs = (CPU_EIP - 1) + CPU_STAT_CS_BASE; | 
 |  | #endif | 
 | if ((adrs >= 0xf8000) && (adrs < 0x100000)) { | if ((adrs >= 0xf8000) && (adrs < 0x100000)) { | 
 | biosfunc(adrs); | biosfunc(adrs); | 
 | if (!CPU_STAT_PM || CPU_STAT_VM86) { | if (!CPU_STAT_PM || CPU_STAT_VM86) { |