Switch the endianness of data that's forwarded. This is the same sort of problem...
authorGabe Black <gblack@eecs.umich.edu>
Sat, 16 Dec 2006 14:35:09 +0000 (09:35 -0500)
committerGabe Black <gblack@eecs.umich.edu>
Sat, 16 Dec 2006 14:35:09 +0000 (09:35 -0500)
--HG--
extra : convert_revision : 09fece7ae934f542e51046d33505df3f7ec0b919

src/cpu/o3/lsq_unit.hh

index a2e11173e38701ee439bf1abd1f423fcf12651fd..0318175c30d244431ff11f3978536d6e1f7c19a1 100644 (file)
@@ -561,6 +561,12 @@ LSQUnit<Impl>::read(Request *req, T &data, int load_idx)
             // Cast this to type T?
             data = storeQueue[store_idx].data >> shift_amt;
 
+            // When the data comes from the store queue entry, it's in host
+            // order. When it gets sent to the load, it needs to be in guest
+            // order so when the load converts it again, it ends up back
+            // in host order like the inst expects.
+            data = TheISA::htog(data);
+
             assert(!load_inst->memData);
             load_inst->memData = new uint8_t[64];