]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Expand this test so as to cover FXSAVE and FXRSTOR, both REX.W and
authorJulian Seward <jseward@acm.org>
Fri, 21 Jan 2011 18:14:32 +0000 (18:14 +0000)
committerJulian Seward <jseward@acm.org>
Fri, 21 Jan 2011 18:14:32 +0000 (18:14 +0000)
non-REX.W variants.

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

memcheck/tests/amd64/fxsave-amd64.c
memcheck/tests/amd64/fxsave-amd64.stdout.exp
memcheck/tests/amd64/fxsave-amd64.vgtest

index b83efe8d8a12b792ba73fcc9333f0a6ac06c0c28..c3fe211d4df9b4ce61cda1ec320498ac4fe6130d 100644 (file)
@@ -1,6 +1,9 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include "tests/asm.h"
+#include "tests/malloc.h"
+#include <string.h>
 
 const unsigned int vec0[4]
    = { 0x12345678, 0x11223344, 0x55667788, 0x87654321 };
@@ -8,8 +11,64 @@ const unsigned int vec0[4]
 const unsigned int vec1[4]
    = { 0xABCDEF01, 0xAABBCCDD, 0xEEFF0011, 0x10FEDCBA };
 
+const unsigned int vecZ[4]
+   = { 0, 0, 0, 0 };
+
+__attribute__((noinline))
+void do_fxsave ( void* p, int rexw ) {
+   if (rexw) {
+      asm __volatile__("rex64/fxsave (%0)" : : "r" (p) : "memory" );
+   } else {
+      asm __volatile__("fxsave (%0)" : : "r" (p) : "memory" );
+   }
+}
+
+__attribute__((noinline))
+void do_fxrstor ( void* p, int rexw ) {
+   if (rexw) {
+      asm __volatile__("rex64/fxrstor (%0)" : : "r" (p) : "memory" );
+   } else {
+      asm __volatile__("fxrstor (%0)" : : "r" (p) : "memory" );
+   }
+}
+
+void do_zeroise ( void )
+{
+   asm __volatile__("finit");
+   asm __volatile__(
+    "fldz\n\t"
+    "fldz\n\t"
+    "fldz\n\t"
+    "fldz\n\t"
+    "fldz\n\t"
+    "fldz\n\t"
+    "fldz\n\t"
+    "fldz\n\t"
+    "finit\n");
+   asm __volatile__("movups " VG_SYM(vecZ) ", %xmm0");
+   asm __volatile__("movups " VG_SYM(vecZ) ", %xmm1");
+   asm __volatile__("movups " VG_SYM(vecZ) ", %xmm2");
+   asm __volatile__("movups " VG_SYM(vecZ) ", %xmm3");
+   asm __volatile__("movups " VG_SYM(vecZ) ", %xmm4");
+   asm __volatile__("movups " VG_SYM(vecZ) ", %xmm5");
+   asm __volatile__("movups " VG_SYM(vecZ) ", %xmm6");
+   asm __volatile__("movups " VG_SYM(vecZ) ", %xmm7");
+   asm __volatile__("movups " VG_SYM(vecZ) ", %xmm8");
+   asm __volatile__("movups " VG_SYM(vecZ) ", %xmm9");
+   asm __volatile__("movups " VG_SYM(vecZ) ", %xmm10");
+   asm __volatile__("movups " VG_SYM(vecZ) ", %xmm11");
+   asm __volatile__("movups " VG_SYM(vecZ) ", %xmm12");
+   asm __volatile__("movups " VG_SYM(vecZ) ", %xmm13");
+   asm __volatile__("movups " VG_SYM(vecZ) ", %xmm14");
+   asm __volatile__("movups " VG_SYM(vecZ) ", %xmm15");
+   asm __volatile__(
+      "pushq $0\n\t"
+      "ldmxcsr 0(%rsp)\n\t"
+      "addq $8,%rsp\n");
+}
+
 /* set up the FP and SSE state, and then dump it. */
-void do_fxsave ( void* p )
+void do_setup_then_fxsave ( void* p, int rexw )
 {
    asm __volatile__("finit");
    asm __volatile__("fldpi");
@@ -35,7 +94,7 @@ void do_fxsave ( void* p )
    asm __volatile__("movaps %xmm2, %xmm13");
    asm __volatile__("movaps %xmm0, %xmm14");
    asm __volatile__("movaps %xmm1, %xmm15");
-   asm __volatile__("fxsave (%0)" : : "r" (p) : "memory" );
+   do_fxsave(p, rexw);
 }
 
 int isFPLsbs ( int i )
@@ -52,28 +111,81 @@ int isFPLsbs ( int i )
    return 0;
 }
 
-int main ( int argc, char** argv )
+void show ( unsigned char* buf, int xx )
 {
-   int i, j;
-   unsigned char* buf = malloc(512);
-   int xx = 1; /* argc > 1;
-   printf("Re-run with any arg to suppress least-significant\n"
-          "   16 bits of FP numbers\n");
-              */
-   for (i = 0; i < 512; i++)
-      buf[i] = 0x55;
-
-   do_fxsave(buf);
-   for (j = 0; j < 512; j++) {
-      i = (j & 0xFFF0) + (15 - (j & 0xF));
-      if ((j % 16) == 0)
-         printf("%3d   ", j);
+   int i;
+   for (i = 0; i < 512; i++) {
+      if ((i % 16) == 0)
+         printf("%3d   ", i);
       if (xx && isFPLsbs(i))
         printf("xx ");
       else
          printf("%02x ", buf[i]);
-      if (j > 0 && ((j % 16) == 15))
+      if (i > 0 && ((i % 16) == 15))
           printf("\n");
    }
+}
+
+
+int main ( int argc, char** argv )
+{
+   unsigned char* buf1 = memalign16(512);
+   unsigned char* buf2 = memalign16(512);
+   unsigned char* buf3 = memalign16(512);
+   int xx = argc > 1;
+   printf("Re-run with any arg to suppress least-significant\n"
+          "   16 bits of FP numbers\n");
+
+   printf("\n-------- FXSAVE non-64 (REX.W == 0) --------\n");
+
+   memset(buf1, 0x55, 512);
+   memset(buf2, 0x55, 512);
+   memset(buf3, 0x55, 512);
+
+   /* Load up x87/xmm state and dump it. */
+   do_setup_then_fxsave(buf1, 0);
+   printf("\nBEFORE\n");
+   show(buf1, xx);
+
+   /* Zeroise x87/xmm state and dump it, to show that the
+      regs have been cleared out. */
+   do_zeroise();
+   do_fxsave(buf2, 0);
+   printf("\nZEROED\n");
+   show(buf2, xx);
+
+   /* Reload x87/xmm state from buf1 and dump it in buf3. */
+   do_fxrstor(buf1, 0);
+   do_fxsave(buf3, 0);
+   printf("\nRESTORED\n");
+   show(buf3, xx);
+
+   printf("\n-------- FXSAVE 64 (REX.W == 1) --------\n\n");
+
+   memset(buf1, 0x55, 512);
+   memset(buf2, 0x55, 512);
+   memset(buf3, 0x55, 512);
+
+   /* Load up x87/xmm state and dump it. */
+   do_setup_then_fxsave(buf1, 1);
+   printf("\nBEFORE\n");
+   show(buf1, xx);
+
+   /* Zeroise x87/xmm state and dump it, to show that the
+      regs have been cleared out. */
+   do_zeroise();
+   do_fxsave(buf2, 1);
+   printf("\nZEROED\n");
+   show(buf2, xx);
+
+   /* Reload x87/xmm state from buf1 and dump it in buf3. */
+   do_fxrstor(buf1, 1);
+   do_fxsave(buf3, 1);
+   printf("\nRESTORED\n");
+   show(buf3, xx);
+
+
+   free(buf1); free(buf2); free(buf3);
+
    return 0;
 }
index 1796d5b8ba856f8e158ffb8c325f3194bed16b25..adc0d5a000e340dd575e6b53ba8ab90749d9c91c 100644 (file)
-  0   00 00 00 00 00 00 00 00 00 00 00 fe 08 00 03 7f 
- 16   00 00 ff ff 00 00 1f 80 00 00 00 00 00 00 00 00 
- 32   00 00 00 00 00 00 3f ff 80 00 00 00 00 00 xx xx 
- 48   00 00 00 00 00 00 3f ff 80 00 00 00 00 00 xx xx 
- 64   00 00 00 00 00 00 40 00 c9 0f da a2 21 68 xx xx 
- 80   00 00 00 00 00 00 3f fd 9a 20 9a 84 fb cf xx xx 
- 96   00 00 00 00 00 00 3f fe b1 72 17 f7 d1 cf xx xx 
-112   00 00 00 00 00 00 3f ff 80 00 00 00 00 00 xx xx 
-128   00 00 00 00 00 00 40 00 c9 0f da a2 21 68 xx xx 
-144   00 00 00 00 00 00 00 00 00 00 00 00 00 00 xx xx 
-160   87 65 43 21 55 66 77 88 11 22 33 44 12 34 56 78 
-176   10 fe dc ba ee ff 00 11 aa bb cc dd ab cd ef 01 
+Re-run with any arg to suppress least-significant
+   16 bits of FP numbers
+
+-------- FXSAVE non-64 (REX.W == 0) --------
+
+BEFORE
+  0   7f 03 00 08 fe 00 00 00 00 00 00 00 00 00 00 00 
+ 16   00 00 00 00 00 00 00 00 80 1f 00 00 ff ff 00 00 
+ 32   xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 
+ 48   xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 
+ 64   xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00 
+ 80   xx xx cf fb 84 9a 20 9a fd 3f 00 00 00 00 00 00 
+ 96   xx xx cf d1 f7 17 72 b1 fe 3f 00 00 00 00 00 00 
+112   xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 
+128   xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00 
+144   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+160   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+176   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
 192   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
-208   87 65 43 21 55 66 77 88 11 22 33 44 12 34 56 78 
-224   10 fe dc ba ee ff 00 11 aa bb cc dd ab cd ef 01 
+208   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+224   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
 240   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
-256   87 65 43 21 55 66 77 88 11 22 33 44 12 34 56 78 
-272   10 fe dc ba ee ff 00 11 aa bb cc dd ab cd ef 01 
-288   10 fe dc ba ee ff 00 11 aa bb cc dd ab cd ef 01 
+256   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+272   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+288   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
 304   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
-320   87 65 43 21 55 66 77 88 11 22 33 44 12 34 56 78 
-336   10 fe dc ba ee ff 00 11 aa bb cc dd ab cd ef 01 
-352   10 fe dc ba ee ff 00 11 aa bb cc dd ab cd ef 01 
+320   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+336   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+352   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
 368   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
-384   87 65 43 21 55 66 77 88 11 22 33 44 12 34 56 78 
-400   10 fe dc ba ee ff 00 11 aa bb cc dd ab cd ef 01 
+384   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+400   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+416   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+432   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+448   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+464   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+480   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+496   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+
+ZEROED
+  0   7f 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+ 16   00 00 00 00 00 00 00 00 80 1f 00 00 ff ff 00 00 
+ 32   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+ 48   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+ 64   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+ 80   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+ 96   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+112   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+128   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+144   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+160   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+176   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+192   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+208   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+224   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+240   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+256   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+272   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+288   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+304   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+320   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+336   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+352   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+368   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+384   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+400   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+416   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+432   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+448   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+464   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+480   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+496   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+
+RESTORED
+  0   7f 03 00 08 fe 00 00 00 00 00 00 00 00 00 00 00 
+ 16   00 00 00 00 00 00 00 00 80 1f 00 00 ff ff 00 00 
+ 32   xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 
+ 48   xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 
+ 64   xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00 
+ 80   xx xx cf fb 84 9a 20 9a fd 3f 00 00 00 00 00 00 
+ 96   xx xx cf d1 f7 17 72 b1 fe 3f 00 00 00 00 00 00 
+112   xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 
+128   xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00 
+144   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+160   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+176   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+192   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+208   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+224   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+240   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+256   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+272   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+288   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+304   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+320   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+336   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+352   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+368   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+384   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+400   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+416   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+432   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+448   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+464   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+480   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+496   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+
+-------- FXSAVE 64 (REX.W == 1) --------
+
+
+BEFORE
+  0   7f 03 00 08 fe 00 00 00 00 00 00 00 00 00 00 00 
+ 16   00 00 00 00 00 00 00 00 80 1f 00 00 ff ff 00 00 
+ 32   xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 
+ 48   xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 
+ 64   xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00 
+ 80   xx xx cf fb 84 9a 20 9a fd 3f 00 00 00 00 00 00 
+ 96   xx xx cf d1 f7 17 72 b1 fe 3f 00 00 00 00 00 00 
+112   xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 
+128   xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00 
+144   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+160   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+176   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+192   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+208   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+224   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+240   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+256   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+272   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+288   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+304   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+320   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+336   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+352   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+368   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+384   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+400   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+416   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+432   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+448   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+464   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+480   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+496   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+
+ZEROED
+  0   7f 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+ 16   00 00 00 00 00 00 00 00 80 1f 00 00 ff ff 00 00 
+ 32   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+ 48   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+ 64   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+ 80   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+ 96   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+112   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+128   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+144   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+160   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+176   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+192   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+208   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+224   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+240   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+256   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+272   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+288   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+304   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+320   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+336   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+352   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+368   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+384   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+400   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+416   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+432   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+448   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+464   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+480   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+496   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
+
+RESTORED
+  0   7f 03 00 08 fe 00 00 00 00 00 00 00 00 00 00 00 
+ 16   00 00 00 00 00 00 00 00 80 1f 00 00 ff ff 00 00 
+ 32   xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 
+ 48   xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 
+ 64   xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00 
+ 80   xx xx cf fb 84 9a 20 9a fd 3f 00 00 00 00 00 00 
+ 96   xx xx cf d1 f7 17 72 b1 fe 3f 00 00 00 00 00 00 
+112   xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00 
+128   xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00 
+144   xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+160   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+176   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+192   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+208   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+224   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+240   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+256   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+272   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+288   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+304   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+320   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+336   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+352   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
+368   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+384   78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87 
+400   01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10 
 416   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
 432   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
 448   55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 
index 19f13f09fa41e013419ee6ac6d637668413d0380..3daf525e4a9593be4f86a3ca234d0fa83da754d4 100644 (file)
@@ -1,2 +1,3 @@
 prog: fxsave-amd64
 vgopts: -q
+args: x