| version 1.7, 2004/02/04 13:24:35 | version 1.9, 2004/02/06 16:49:51 | 
| Line 87  do { \ | Line 87  do { \ | 
 | #define SET_EIP(v) \ | #define SET_EIP(v) \ | 
 | do { \ | do { \ | 
 | DWORD __new_ip = (v); \ | DWORD __new_ip = (v); \ | 
 | if (!CPU_STATSAVE.cpu_inst_default.op_32) {\ |  | 
 | __new_ip &= 0x0000ffff; \ |  | 
 | } \ |  | 
 | if (__new_ip > CPU_STAT_CS_LIMIT) { \ | if (__new_ip > CPU_STAT_CS_LIMIT) { \ | 
 | VERBOSE(("SET_EIP: new_ip = %08x, limit = %08x", __new_ip, CPU_STAT_CS_LIMIT)); \ | VERBOSE(("SET_EIP: new_ip = %08x, limit = %08x", __new_ip, CPU_STAT_CS_LIMIT)); \ | 
 | EXCEPTION(GP_EXCEPTION, 0); \ | EXCEPTION(GP_EXCEPTION, 0); \ | 
| Line 100  do { \ | Line 97  do { \ | 
 | #define ADD_EIP(v) \ | #define ADD_EIP(v) \ | 
 | do { \ | do { \ | 
 | DWORD __tmp_ip = CPU_EIP + (v); \ | DWORD __tmp_ip = CPU_EIP + (v); \ | 
| if (!CPU_STATSAVE.cpu_inst_default.op_32) {\ | if (!CPU_STATSAVE.cpu_inst_default.op_32) { \ | 
| __tmp_ip &= 0x0000ffff; \ | __tmp_ip &= 0xffff; \ | 
 | } \ | } \ | 
 | CPU_EIP = __tmp_ip; \ | CPU_EIP = __tmp_ip; \ | 
 | } while (/*CONSTCOND*/ 0) | } while (/*CONSTCOND*/ 0) | 
| Line 814  do { \ | Line 811  do { \ | 
 | } \ | } \ | 
 | } while (/*CONSTCOND*/ 0) | } while (/*CONSTCOND*/ 0) | 
 |  |  | 
 |  | /* | 
 |  | * stack pointer | 
 |  | */ | 
 |  | #define SP_PUSH_16(reg) \ | 
 |  | do { \ | 
 |  | WORD sp = CPU_SP; \ | 
 |  | if (!CPU_STAT_SS32) { \ | 
 |  | REGPUSH0(sp); \ | 
 |  | } else { \ | 
 |  | REGPUSH0_16_32(sp); \ | 
 |  | } \ | 
 |  | } while (/*CONSTCOND*/ 0) | 
 |  |  | 
 |  | #define ESP_PUSH_32(reg) \ | 
 |  | do { \ | 
 |  | DWORD sp = CPU_ESP; \ | 
 |  | if (!CPU_STAT_SS32) { \ | 
 |  | REGPUSH0_32_16(sp); \ | 
 |  | } else { \ | 
 |  | REGPUSH0_32(sp); \ | 
 |  | } \ | 
 |  | } while (/*CONSTCOND*/ 0) | 
 |  |  | 
 |  | #define SP_POP_16(reg) \ | 
 |  | do { \ | 
 |  | DWORD sp; \ | 
 |  | if (!CPU_STAT_SS32) { \ | 
 |  | sp = CPU_SP; \ | 
 |  | } else { \ | 
 |  | sp = CPU_ESP; \ | 
 |  | } \ | 
 |  | CPU_SP = cpu_vmemoryread_w(CPU_SS_INDEX, sp); \ | 
 |  | } while (/*CONSTCOND*/ 0) | 
 |  |  | 
 |  | #define ESP_POP_32(reg) \ | 
 |  | do { \ | 
 |  | DWORD sp; \ | 
 |  | if (!CPU_STAT_SS32) { \ | 
 |  | sp = CPU_SP; \ | 
 |  | } else { \ | 
 |  | sp = CPU_ESP; \ | 
 |  | } \ | 
 |  | CPU_ESP = cpu_vmemoryread_d(CPU_SS_INDEX, sp); \ | 
 |  | } while (/*CONSTCOND*/ 0) | 
 |  |  | 
 |  |  | 
 | /* | /* | 
 | * jump | * jump |