X86: Use the right portion of a register for stores.
authorGabe Black <gblack@eecs.umich.edu>
Wed, 25 Feb 2009 18:19:14 +0000 (10:19 -0800)
committerGabe Black <gblack@eecs.umich.edu>
Wed, 25 Feb 2009 18:19:14 +0000 (10:19 -0800)
src/arch/x86/isa/microops/ldstop.isa

index 097b0e3112f19563f30d7938a5e3d0749b1d1f8e..a1aaddfe2e28919acb6e3bfa76053da81dabd9e8 100644 (file)
@@ -466,9 +466,9 @@ let {{
 
         microopClasses[name] = StoreOp
 
-    defineMicroStoreOp('St', 'Mem = Data;')
+    defineMicroStoreOp('St', 'Mem = pick(Data, 2, dataSize);')
     defineMicroStoreOp('Stfp', 'Mem = FpData.uqw;')
-    defineMicroStoreOp('Stupd', 'Mem = Data;',
+    defineMicroStoreOp('Stupd', 'Mem = pick(Data, 2, dataSize);',
             'Base = merge(Base, EA - SegBase, addressSize);',
             'Base = merge(Base, pkt->req->getVaddr() - SegBase, addressSize);');
     defineMicroStoreOp('Cda', 'Mem = 0;', mem_flags="Request::NO_ACCESS")