Changeset 1437
- Timestamp:
- 11/16/07 12:29:36 (10 months ago)
- Files:
-
- libemu/trunk/include/emu/emu_cpu_data.h (modified) (1 diff)
- libemu/trunk/include/emu/emu_track.h (modified) (1 diff)
- libemu/trunk/src/emu_cpu.c (modified) (2 diffs)
- libemu/trunk/src/emu_track.c (modified) (1 diff)
- libemu/trunk/src/functions/sub.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
libemu/trunk/include/emu/emu_cpu_data.h
r1317 r1437 257 257 258 258 259 #define TRACK_FPU_LAST_INSTRUCTION 0x 1259 #define TRACK_FPU_LAST_INSTRUCTION 0x0 260 260 261 261 #define TRACK_INIT_FPU(instruction, what) (instruction).track.init.fpu |= 1 << (what); libemu/trunk/include/emu/emu_track.h
r1317 r1437 57 57 uint32_t reg[8]; 58 58 59 uint8_t fpu ; // used to store the last_instruction information required for fnstenv59 uint8_t fpu:1; // used to store the last_instruction information required for fnstenv 60 60 }; 61 61 libemu/trunk/src/emu_cpu.c
r1378 r1437 855 855 856 856 TRACK_NEED_FPU(c->instr, TRACK_FPU_LAST_INSTRUCTION); 857 TRACK_INIT_FPU(c->instr, TRACK_FPU_LAST_INSTRUCTION);857 // TRACK_INIT_FPU(c->instr, TRACK_FPU_LAST_INSTRUCTION); 858 858 } 859 859 else if( c->instr.fpu.fpu_data[1] == 0xee ) … … 862 862 TRACK_INIT_FPU(c->instr, TRACK_FPU_LAST_INSTRUCTION); 863 863 } 864 else 865 { // catch all others to init fpu 866 TRACK_INIT_FPU(c->instr, TRACK_FPU_LAST_INSTRUCTION); 867 } 868 864 869 } 865 870 else if( c->instr.fpu.fpu_data[0] == 0xdd ) libemu/trunk/src/emu_track.c
r1317 r1437 238 238 } 239 239 240 for (i=0;i<8;i++) 241 { 242 if ( (b->fpu & 1 << i) > (a->eflags & 1 << i)) 243 return false; 244 } 240 if ( b->fpu > a->fpu ) 241 return false; 245 242 246 243 libemu/trunk/src/functions/sub.c
r1317 r1437 164 164 c->reg[i->modrm.rm], 165 165 -) 166 if (i->modrm.opc == i->modrm.rm) 167 { 168 TRACK_INIT_REG32(c->instr, i->modrm.opc); 169 }else 170 { 171 TRACK_NEED_REG32(c->instr, i->modrm.rm); 172 TRACK_NEED_REG32(c->instr, i->modrm.opc); 173 } 174 166 175 } 167 176 }
