|
|
| version 1.1, 2003/10/16 17:57:31 | 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 i286s.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 i286s.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 (i286s.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 1017 LABEL void v30(void) { | Line 1017 LABEL void v30(void) { |
| align 4 | align 4 |
| v30_mnlp: movzx eax, bl | v30_mnlp: movzx eax, bl |
| call v30op[eax*4] | call v30op[eax*4] |
| cmp nevent.remainclock, 0 | cmp I286_REMCLOCK, 0 |
| jg v30_mnlp | jg v30_mnlp |
| mov dword ptr (i286s.prefetchque), ebx | mov dword ptr (i286core.s.prefetchque), ebx |
| mov I286_IP, si | mov I286_IP, si |
| popad | popad |
| ret | ret |
| Line 1028 v30_mnlp: movzx eax, bl | Line 1028 v30_mnlp: movzx eax, bl |
| v30_dma_mnlp: movzx eax, bl | v30_dma_mnlp: movzx eax, bl |
| call v30op[eax*4] | call v30op[eax*4] |
| call dmap_i286 | call dmap_i286 |
| cmp nevent.remainclock, 0 | cmp I286_REMCLOCK, 0 |
| jg v30_dma_mnlp | jg v30_dma_mnlp |
| mov dword ptr (i286s.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 (i286s.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 (i286s.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 (i286s.prefetchque), ebx | mov dword ptr (i286core.s.prefetchque), ebx |
| mov I286_IP, si | mov I286_IP, si |
| call dmap_i286 | call dmap_i286 |