Added byteswapping code
authorGabe Black <gblack@eecs.umich.edu>
Fri, 28 Apr 2006 17:13:58 +0000 (13:13 -0400)
committerGabe Black <gblack@eecs.umich.edu>
Fri, 28 Apr 2006 17:13:58 +0000 (13:13 -0400)
--HG--
extra : convert_revision : 67bf0689399328a728a0f3130d58d483e5f2f06e

cpu/simple/cpu.cc

index 0f1f9574a9b52ccd639b180fab8d0cb6c5fc4653..1a737fa6aa7016f5d572e5012c2cc81e7bcbac36 100644 (file)
@@ -475,6 +475,7 @@ SimpleCPU::read(Addr addr, T &data, unsigned flags)
         // Not sure what to check for no fault...
         if (data_read_pkt->result == Success) {
             memcpy(&data, data_read_pkt->data, sizeof(T));
+            data = gtoh(data);
         }
 
         if (traceData) {
@@ -518,6 +519,7 @@ SimpleCPU::read(Addr addr, T &data, unsigned flags)
 
         if (data_read_pkt->result == Success) {
             memcpy(&data, data_read_pkt->data, sizeof(T));
+            data = gtoh(data);
         }
 
         if (traceData) {
@@ -622,9 +624,11 @@ SimpleCPU::write(T data, Addr addr, unsigned flags, uint64_t *res)
         data_write_pkt->cmd = Write;
         data_write_pkt->req = data_write_req;
         data_write_pkt->data = new uint8_t[64];
-        memcpy(data_write_pkt->data, &data, sizeof(T));
+        T hostData = htog(data);
+        memcpy(data_write_pkt->data, &hostData, sizeof(T));
 #else
         data_write_pkt->reset();
+        data = htog(data);
         data_write_pkt->data = (uint8_t *)&data;
 #endif
         data_write_pkt->addr = data_write_req->getPaddr();