From: Julian Seward Date: Tue, 23 Jul 2002 18:48:39 +0000 (+0000) Subject: Support for x86 insn fldenv. X-Git-Tag: svn/VALGRIND_1_0_1~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b53529ecb5978cd8dc9e4c259f007ce41046d621;p=thirdparty%2Fvalgrind.git Support for x86 insn fldenv. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@515 --- diff --git a/coregrind/vg_memory.c b/coregrind/vg_memory.c index eca0dc215d..eea79cbe9a 100644 --- a/coregrind/vg_memory.c +++ b/coregrind/vg_memory.c @@ -1142,6 +1142,12 @@ void VGM_(fpu_read_check) ( Addr addr, Int size ) return; } + if (size == 28) { + PROF_EVENT(84); /* XXX assign correct event number */ + fpu_read_check_SLOWLY ( addr, 28 ); + return; + } + VG_(printf)("size is %d\n", size); VG_(panic)("vgm_fpu_read_check: unhandled size"); # endif diff --git a/coregrind/vg_to_ucode.c b/coregrind/vg_to_ucode.c index 0b1e5c61dc..c1ac7525fa 100644 --- a/coregrind/vg_to_ucode.c +++ b/coregrind/vg_to_ucode.c @@ -2413,6 +2413,8 @@ Addr dis_fpu ( UCodeBlock* cb, UChar first_byte, Addr eip ) case 2: /* FSTs */ case 3: /* FSTPs */ return dis_fpu_mem(cb, 4, wr, eip, first_byte); + case 4: /* FLDENV */ + return dis_fpu_mem(cb, 28, rd, eip, first_byte); case 5: /* FLDCW */ return dis_fpu_mem(cb, 2, rd, eip, first_byte); case 6: /* FNSTENV */ diff --git a/vg_memory.c b/vg_memory.c index eca0dc215d..eea79cbe9a 100644 --- a/vg_memory.c +++ b/vg_memory.c @@ -1142,6 +1142,12 @@ void VGM_(fpu_read_check) ( Addr addr, Int size ) return; } + if (size == 28) { + PROF_EVENT(84); /* XXX assign correct event number */ + fpu_read_check_SLOWLY ( addr, 28 ); + return; + } + VG_(printf)("size is %d\n", size); VG_(panic)("vgm_fpu_read_check: unhandled size"); # endif diff --git a/vg_to_ucode.c b/vg_to_ucode.c index 0b1e5c61dc..c1ac7525fa 100644 --- a/vg_to_ucode.c +++ b/vg_to_ucode.c @@ -2413,6 +2413,8 @@ Addr dis_fpu ( UCodeBlock* cb, UChar first_byte, Addr eip ) case 2: /* FSTs */ case 3: /* FSTPs */ return dis_fpu_mem(cb, 4, wr, eip, first_byte); + case 4: /* FLDENV */ + return dis_fpu_mem(cb, 28, rd, eip, first_byte); case 5: /* FLDCW */ return dis_fpu_mem(cb, 2, rd, eip, first_byte); case 6: /* FNSTENV */