WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] [TEST] Fix x86_emulate tests on x86/64 ho

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [TEST] Fix x86_emulate tests on x86/64 host.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 10 Jan 2007 04:00:59 -0800
Delivery-date: Wed, 10 Jan 2007 04:03:36 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1168362706 0
# Node ID ddea7363fa41a57adb6453c9594fd4e8fb6e9a20
# Parent  c98f3f3f7099ec1516354faa34a16be841e4a47c
[TEST] Fix x86_emulate tests on x86/64 host.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 tools/tests/test_x86_emulator.c |   32 ++++++++++++++++++++++++++------
 1 files changed, 26 insertions(+), 6 deletions(-)

diff -r c98f3f3f7099 -r ddea7363fa41 tools/tests/test_x86_emulator.c
--- a/tools/tests/test_x86_emulator.c   Tue Jan 09 16:59:52 2007 +0000
+++ b/tools/tests/test_x86_emulator.c   Tue Jan 09 17:11:46 2007 +0000
@@ -106,9 +106,12 @@ int main(int argc, char **argv)
 {
     struct x86_emulate_ctxt ctxt;
     struct cpu_user_regs regs;
-    char instr[20] = { 0x01, 0x08 }; /* add %ecx,(%eax) */
-    unsigned int *res, bcdres_native, bcdres_emul;
-    int rc, i;
+    char *instr;
+    unsigned int *res;
+    int rc;
+#ifndef __x86_64__
+    unsigned int i, bcdres_native, bcdres_emul;
+#endif
 
     ctxt.regs = &regs;
     ctxt.address_bytes = 4;
@@ -120,6 +123,7 @@ int main(int argc, char **argv)
         fprintf(stderr, "mmap to low address failed\n");
         exit(1);
     }
+    instr = (char *)res + 0x100;
 
     printf("%-40s", "Testing addl %%ecx,(%%eax)...");
     instr[0] = 0x01; instr[1] = 0x08;
@@ -409,6 +413,7 @@ int main(int argc, char **argv)
     printf("okay\n");
 
     printf("%-40s", "Testing daa/das (all inputs)...");
+#ifndef __x86_64__
     /* Bits 0-7: AL; Bit 8: EFLG_AF; Bit 9: EFLG_CF; Bit 10: DAA vs. DAS. */
     for ( i = 0; i < 0x800; i++ )
     {
@@ -426,6 +431,9 @@ int main(int argc, char **argv)
                 "pushf; popl %1"
                 : "=a" (bcdres_native), "=r" (regs.eflags)
                 : "0" (i & 0xff), "1" (regs.eflags) );
+        bcdres_native |= (regs.eflags & EFLG_PF) ? 0x1000 : 0;
+        bcdres_native |= (regs.eflags & EFLG_ZF) ? 0x800 : 0;
+        bcdres_native |= (regs.eflags & EFLG_SF) ? 0x400 : 0;
         bcdres_native |= (regs.eflags & EFLG_CF) ? 0x200 : 0;
         bcdres_native |= (regs.eflags & EFLG_AF) ? 0x100 : 0;
 
@@ -436,6 +444,9 @@ int main(int argc, char **argv)
         regs.eax    = (unsigned char)i;
         rc = x86_emulate(&ctxt, &emulops);
         bcdres_emul  = regs.eax;
+        bcdres_emul |= (regs.eflags & EFLG_PF) ? 0x1000 : 0;
+        bcdres_emul |= (regs.eflags & EFLG_ZF) ? 0x800 : 0;
+        bcdres_emul |= (regs.eflags & EFLG_SF) ? 0x400 : 0;
         bcdres_emul |= (regs.eflags & EFLG_CF) ? 0x200 : 0;
         bcdres_emul |= (regs.eflags & EFLG_AF) ? 0x100 : 0;
         if ( (rc != 0) || (regs.eax > 255) ||
@@ -445,8 +456,8 @@ int main(int argc, char **argv)
         if ( bcdres_emul != bcdres_native )
         {
             printf("%s:    AL=%02x %s %s\n"
-                   "Output: AL=%02x %s %s\n"
-                   "Emul.:  AL=%02x %s %s\n",
+                   "Output: AL=%02x %s %s %s %s %s\n"
+                   "Emul.:  AL=%02x %s %s %s %s %s\n",
                    (i & 0x400) ? "DAS" : "DAA",
                    (unsigned char)i,
                    (i & 0x200) ? "CF" : "  ",
@@ -454,13 +465,22 @@ int main(int argc, char **argv)
                    (unsigned char)bcdres_native,
                    (bcdres_native & 0x200) ? "CF" : "  ",
                    (bcdres_native & 0x100) ? "AF" : "  ",
+                   (bcdres_native & 0x1000) ? "PF" : "  ",
+                   (bcdres_native & 0x800) ? "ZF" : "  ",
+                   (bcdres_native & 0x400) ? "SF" : "  ",
                    (unsigned char)bcdres_emul,
                    (bcdres_emul & 0x200) ? "CF" : "  ",
-                   (bcdres_emul & 0x100) ? "AF" : "  ");
+                   (bcdres_emul & 0x100) ? "AF" : "  ",
+                   (bcdres_emul & 0x1000) ? "PF" : "  ",
+                   (bcdres_emul & 0x800) ? "ZF" : "  ",
+                   (bcdres_emul & 0x400) ? "SF" : "  ");
             goto fail;
         }
     }
     printf("okay\n");
+#else
+    printf("skipped\n");
+#endif
 
     return 0;
 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] [TEST] Fix x86_emulate tests on x86/64 host., Xen patchbot-unstable <=