From: Julian Seward Date: Mon, 19 Aug 2002 09:13:19 +0000 (+0000) Subject: Implement missing FPU ops: X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0d1388cd081a511cb71fb38ac062f4b468f6cff8;p=thirdparty%2Fvalgrind.git Implement missing FPU ops: FSTSW m32 FSAVE m32 FRSTOR m32 MERGE TO HEAD git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_1_0_BRANCH@597 --- diff --git a/vg_memory.c b/vg_memory.c index eea79cbe9a..e8e7770e8e 100644 --- a/vg_memory.c +++ b/vg_memory.c @@ -1142,7 +1142,7 @@ void VGM_(fpu_read_check) ( Addr addr, Int size ) return; } - if (size == 28) { + if (size == 28 || size == 108) { PROF_EVENT(84); /* XXX assign correct event number */ fpu_read_check_SLOWLY ( addr, 28 ); return; @@ -1229,7 +1229,7 @@ void VGM_(fpu_write_check) ( Addr addr, Int size ) return; } - if (size == 28) { + if (size == 28 || size == 108) { PROF_EVENT(89); /* XXX assign correct event number */ fpu_write_check_SLOWLY ( addr, 28 ); return; diff --git a/vg_to_ucode.c b/vg_to_ucode.c index e412806935..10a4e80450 100644 --- a/vg_to_ucode.c +++ b/vg_to_ucode.c @@ -2485,7 +2485,13 @@ Addr dis_fpu ( UCodeBlock* cb, UChar first_byte, Addr eip ) return dis_fpu_mem(cb, 8, rd, eip, first_byte); case 2: /* FST double-real */ case 3: /* FSTP double-real */ - return dis_fpu_mem(cb, 8, wr, eip, first_byte); + return dis_fpu_mem(cb, 8, wr, eip, first_byte); + case 4: /* FRSTOR */ + return dis_fpu_mem(cb, 108, rd, eip, first_byte); + case 6: /* FSAVE */ + return dis_fpu_mem(cb, 108, wr, eip, first_byte); + case 7: /* FSTSW */ + return dis_fpu_mem(cb, 2, wr, eip, first_byte); default: goto unhandled; }