X86: Make the segment register reading microops use merge.
authorGabe Black <gblack@eecs.umich.edu>
Wed, 25 Feb 2009 18:20:47 +0000 (10:20 -0800)
committerGabe Black <gblack@eecs.umich.edu>
Wed, 25 Feb 2009 18:20:47 +0000 (10:20 -0800)
src/arch/x86/isa/insts/general_purpose/control_transfer/interrupts_and_exceptions.py
src/arch/x86/isa/microops/regop.isa

index 8d66cc4459f212b4a3656e548f51cad26de70f85..8203f7c2c89faf6b0a4ea6fdcd592f3e733e430d 100644 (file)
@@ -142,7 +142,7 @@ processCSDescriptor:
     # Here, we know we're -not- in 64 bit mode, so we should do the
     # appropriate/other RIP checks.
     # if temp_RIP > CS.limit throw #GP(0)
-    rdlimit t6, cs
+    rdlimit t6, cs, dataSize=8
     subi t0, t1, t6, flags=(ECF,)
     fault "new GeneralProtection(0)", flags=(CECF,)
 
index fd2a3a64f80b522b5c60230aaf0144a5dbc97cc9..1349a64c27aaed28e2451809c5da7cae04f7e848 100644 (file)
@@ -1052,22 +1052,22 @@ let {{
 
     class Rdbase(SegOp):
         code = '''
-            DestReg = SegBaseSrc1;
+            DestReg = merge(DestReg, SegBaseSrc1, dataSize);
         '''
 
     class Rdlimit(SegOp):
         code = '''
-            DestReg = SegLimitSrc1;
+            DestReg = merge(DestReg, SegLimitSrc1, dataSize);
         '''
 
     class RdAttr(SegOp):
         code = '''
-            DestReg = SegAttrSrc1;
+            DestReg = merge(DestReg, SegAttrSrc1, dataSize);
         '''
 
     class Rdsel(SegOp):
         code = '''
-            DestReg = SegSelSrc1;
+            DestReg = merge(DestReg, SegSelSrc1, dataSize);
         '''
 
     class Rdval(RegOp):