x86: x86 instruction-implementation bug fixes
authorDavid Hashe <david.hashe@amd.com>
Mon, 20 Jul 2015 14:15:18 +0000 (09:15 -0500)
committerDavid Hashe <david.hashe@amd.com>
Mon, 20 Jul 2015 14:15:18 +0000 (09:15 -0500)
Added explicit data sizes and an opcode type for correct execution.

src/arch/x86/isa/decoder/two_byte_opcodes.isa
src/arch/x86/isa/insts/general_purpose/control_transfer/jump.py
src/arch/x86/isa/insts/system/segmentation.py

index dfc328c4b0dcb3af88e3c6d0f1b21bd6564597c7..0ba7434e8a853264a26917a065f9dd5eff3fbaa9 100644 (file)
@@ -1,4 +1,5 @@
 // Copyright (c) 2007-2008 The Hewlett-Packard Development Company
+// Copyright (c) 2012-2013 AMD
 // All rights reserved.
 //
 // The license below extends only to copyright in the software and shall
                     0x3: MOV(Dd,Rd);
                     default: UD2();
                 }
+                // operand size (0x66)
+                0x1: decode OPCODE_OP_BOTTOM3 {
+                    0x0: MOV(Rd,Cd);
+                    0x2: MOV(Cd,Rd);
+                }
                 default: UD2();
             }
             0x05: decode LEGACY_DECODEVAL {
index 3bb2d3e879e0073e52caad14710bd84d8a11dd2e..6f419ce8d77c26290ff89aeb937e39ebcc7fdc69 100644 (file)
@@ -1,4 +1,5 @@
 # Copyright (c) 2007 The Hewlett-Packard Development Company
+# Copyright (c) 2012-2013 AMD
 # All rights reserved.
 #
 # The license below extends only to copyright in the software and shall
@@ -127,9 +128,9 @@ farJmpProcessDescriptor:
     rcri t0, t4, 13, flags=(ECF,), dataSize=2
     br rom_local_label("farJmpSystemDescriptor"), flags=(nCECF,)
     chks t2, t4, CSCheck, dataSize=8
-    wrdl cs, t4, t2
-    wrsel cs, t2
-    wrip t0, t1
+    wrdl cs, t4, t2, dataSize=4
+    wrsel cs, t2, dataSize=4
+    wrip t0, t1, dataSize=4
     eret
 
 farJmpSystemDescriptor:
index 53b6908ed508f5c1aed5b64d796c47e6d916cdab..3c86481273d4657c85213456b50c1146b0b8bc6d 100644 (file)
@@ -1,4 +1,5 @@
 # Copyright (c) 2007 The Hewlett-Packard Development Company
+# Copyright (c) 2012-2013 AMD
 # All rights reserved.
 #
 # The license below extends only to copyright in the software and shall
@@ -78,7 +79,7 @@ def macroop LGDT_16_M
     # Get the base
     ld t2, seg, sib, 'adjustedDisp + 2', dataSize=4
     zexti t2, t2, 23, dataSize=8
-    wrbase tsg, t2
+    wrbase tsg, t2, dataSize=8
     wrlimit tsg, t1
 };
 
@@ -139,7 +140,7 @@ def macroop LIDT_16_M
     # Get the base
     ld t2, seg, sib, 'adjustedDisp + 2', dataSize=4
     zexti t2, t2, 23, dataSize=8
-    wrbase idtr, t2
+    wrbase idtr, t2, dataSize=8
     wrlimit idtr, t1
 };