| version 1.3, 2003/10/19 14:56:15 | version 1.5, 2003/12/08 00:55:31 | 
| Line 1 | Line 1 | 
 | #include        "compiler.h" | #include        "compiler.h" | 
| #include        "i286.h" | #include        "cpucore.h" | 
 | #include        "i286x.h" | #include        "i286x.h" | 
 | #include        "i286xadr.h" | #include        "i286xadr.h" | 
 | #include        "i286xs.h" | #include        "i286xs.h" | 
| Line 94  I286 v30pop_ss(void) {       // 17: pop | Line 94  I286 v30pop_ss(void) {       // 17: pop | 
 | shl             eax, 4                                  // make segreg | shl             eax, 4                                  // make segreg | 
 | mov             SS_BASE, eax | mov             SS_BASE, eax | 
 | mov             SS_FIX, eax | mov             SS_FIX, eax | 
| cmp             i286reg.prefix, 0               // 00/06/24 | cmp             i286core.s.prefix, 0    // 00/06/24 | 
 | je              noprefix | je              noprefix | 
 | call    removeprefix | call    removeprefix | 
 | pop             eax | pop             eax | 
| Line 204  I286 v30mov_seg_ea(void) {      // 8E: m | Line 204  I286 v30mov_seg_ea(void) {      // 8E: m | 
 | segsetr:ret | segsetr:ret | 
 |  |  | 
 | align   4 | align   4 | 
| setss:  cmp             i286reg.prefix, 0               // 00/05/13 | setss:  cmp             i286core.s.prefix, 0    // 00/05/13 | 
 | je              noprefix | je              noprefix | 
 | pop             eax | pop             eax | 
 | call    eax                                             // eax<-offset removeprefix | call    eax                                             // eax<-offset removeprefix | 
| Line 992  static void v30patching(void (*dst[])(vo | Line 992  static void v30patching(void (*dst[])(vo | 
 |  |  | 
 | #define V30PATCHING(a, b)       v30patching(a, b, sizeof(b)/sizeof(V30PATCH_T)) | #define V30PATCHING(a, b)       v30patching(a, b, sizeof(b)/sizeof(V30PATCH_T)) | 
 |  |  | 
| void v30init(void) { | void v30xinit(void) { | 
 |  |  | 
 | CopyMemory(v30op, i286op, sizeof(v30op)); | CopyMemory(v30op, i286op, sizeof(v30op)); | 
 | V30PATCHING(v30op, v30patch_op); | V30PATCHING(v30op, v30patch_op); | 
| Line 1002  void v30init(void) { | Line 1002  void v30init(void) { | 
 | V30PATCHING(v30op_repe, v30patch_repe); | V30PATCHING(v30op_repe, v30patch_repe); | 
 | } | } | 
 |  |  | 
| LABEL void v30(void) { | LABEL void v30x(void) { | 
 |  |  | 
 | __asm { | __asm { | 
 | pushad | pushad | 
| mov             ebx, dword ptr (i286reg.prefetchque) | mov             ebx, dword ptr (i286core.s.prefetchque) | 
 | movzx   esi, I286_IP | movzx   esi, I286_IP | 
 |  |  | 
 | cmp             I286_TRAP, 0 | cmp             I286_TRAP, 0 | 
| Line 1019  v30_mnlp:  movzx eax, bl | Line 1019  v30_mnlp:  movzx eax, bl | 
 | call    v30op[eax*4] | call    v30op[eax*4] | 
 | cmp             I286_REMCLOCK, 0 | cmp             I286_REMCLOCK, 0 | 
 | jg              v30_mnlp | jg              v30_mnlp | 
| mov             dword ptr (i286reg.prefetchque), ebx | mov             dword ptr (i286core.s.prefetchque), ebx | 
 | mov             I286_IP, si | mov             I286_IP, si | 
 | popad | popad | 
 | ret | ret | 
| Line 1030  v30_dma_mnlp: movzx eax, bl | Line 1030  v30_dma_mnlp: movzx eax, bl | 
 | call    dmap_i286 | call    dmap_i286 | 
 | cmp             I286_REMCLOCK, 0 | cmp             I286_REMCLOCK, 0 | 
 | jg              v30_dma_mnlp | jg              v30_dma_mnlp | 
| mov             dword ptr (i286reg.prefetchque), ebx | mov             dword ptr (i286core.s.prefetchque), ebx | 
 | mov             I286_IP, si | mov             I286_IP, si | 
 | popad | popad | 
 | ret | ret | 
| Line 1042  v30_trapping: movzx eax, bl | Line 1042  v30_trapping: movzx eax, bl | 
 | je              v30notrap | je              v30notrap | 
 | mov             ecx, 1 | mov             ecx, 1 | 
 | call    i286x_localint | call    i286x_localint | 
| v30notrap:              mov             dword ptr (i286reg.prefetchque), ebx | v30notrap:              mov             dword ptr (i286core.s.prefetchque), ebx | 
 | mov             I286_IP, si | mov             I286_IP, si | 
 | popad | popad | 
 | ret | ret | 
 | } | } | 
 | } | } | 
 |  |  | 
| LABEL void v30_step(void) { | LABEL void v30x_step(void) { | 
 |  |  | 
 | __asm { | __asm { | 
 | pushad | pushad | 
| mov             ebx, dword ptr (i286reg.prefetchque) | mov             ebx, dword ptr (i286core.s.prefetchque) | 
 | movzx   esi, I286_IP | movzx   esi, I286_IP | 
 |  |  | 
 | movzx   eax, bl | movzx   eax, bl | 
| Line 1064  LABEL void v30_step(void) { | Line 1064  LABEL void v30_step(void) { | 
 | mov             ecx, 1 | mov             ecx, 1 | 
 | call    i286x_localint | call    i286x_localint | 
 | nexts: | nexts: | 
| mov             dword ptr (i286reg.prefetchque), ebx | mov             dword ptr (i286core.s.prefetchque), ebx | 
 | mov             I286_IP, si | mov             I286_IP, si | 
 |  |  | 
 | call    dmap_i286 | call    dmap_i286 |