]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Implement fnstenv (store FPU environment, but not regs AIUI)
authorJulian Seward <jseward@acm.org>
Sat, 13 Jul 2002 12:27:12 +0000 (12:27 +0000)
committerJulian Seward <jseward@acm.org>
Sat, 13 Jul 2002 12:27:12 +0000 (12:27 +0000)
(Jeff Epler)

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@492

coregrind/vg_memory.c
coregrind/vg_to_ucode.c
vg_memory.c
vg_to_ucode.c

index 4b4fe0cff5f87be730987683dfa40ebcb1e8f500..eca0dc215d5666c70f625d9e4c58dae0cc233359 100644 (file)
@@ -1223,6 +1223,12 @@ void VGM_(fpu_write_check) ( Addr addr, Int size )
       return;
    }
 
+   if (size == 28) {
+      PROF_EVENT(89); /* XXX assign correct event number */
+      fpu_write_check_SLOWLY ( addr, 28 );
+      return;
+   }
+
    VG_(printf)("size is %d\n", size);
    VG_(panic)("vgm_fpu_write_check: unhandled size");
 #  endif
index 9230236fab2474444a6bf782045df3033470a256..e56b02cab2b08772b9b88570613ef5b047990a43 100644 (file)
@@ -2415,6 +2415,8 @@ Addr dis_fpu ( UCodeBlock* cb, UChar first_byte, Addr eip )
                return dis_fpu_mem(cb, 4, wr, eip, first_byte); 
             case 5: /* FLDCW */
                return dis_fpu_mem(cb, 2, rd, eip, first_byte); 
+            case 6: /* FNSTENV */
+               return dis_fpu_mem(cb, 28, wr, eip, first_byte);
             case 7: /* FSTCW */
                /* HACK!  FSTCW actually writes 2 bytes, not 4.  glibc
                   gets lots of moaning in __floor() if we do the right
index 4b4fe0cff5f87be730987683dfa40ebcb1e8f500..eca0dc215d5666c70f625d9e4c58dae0cc233359 100644 (file)
@@ -1223,6 +1223,12 @@ void VGM_(fpu_write_check) ( Addr addr, Int size )
       return;
    }
 
+   if (size == 28) {
+      PROF_EVENT(89); /* XXX assign correct event number */
+      fpu_write_check_SLOWLY ( addr, 28 );
+      return;
+   }
+
    VG_(printf)("size is %d\n", size);
    VG_(panic)("vgm_fpu_write_check: unhandled size");
 #  endif
index 9230236fab2474444a6bf782045df3033470a256..e56b02cab2b08772b9b88570613ef5b047990a43 100644 (file)
@@ -2415,6 +2415,8 @@ Addr dis_fpu ( UCodeBlock* cb, UChar first_byte, Addr eip )
                return dis_fpu_mem(cb, 4, wr, eip, first_byte); 
             case 5: /* FLDCW */
                return dis_fpu_mem(cb, 2, rd, eip, first_byte); 
+            case 6: /* FNSTENV */
+               return dis_fpu_mem(cb, 28, wr, eip, first_byte);
             case 7: /* FSTCW */
                /* HACK!  FSTCW actually writes 2 bytes, not 4.  glibc
                   gets lots of moaning in __floor() if we do the right