A few minor fixes to get things to build on Cygwin.
authorSteve Reinhardt <stever@eecs.umich.edu>
Fri, 19 Aug 2005 21:10:17 +0000 (17:10 -0400)
committerSteve Reinhardt <stever@eecs.umich.edu>
Fri, 19 Aug 2005 21:10:17 +0000 (17:10 -0400)
README:
    Clarify cygwin EIO error explanation.
build/SConstruct:
    Cygwin header files cause uninitialized var warnings.
dev/ide_ctrl.cc:
    Get rid of unnecessary byte-swap calls, some of which were
    too ambiguous for cygwin (or gcc 3.4.4).
dev/pcidev.cc:
    Disambiguate arg for overloaded byte swap operation
    (and fix it to be the correct one).

--HG--
extra : convert_revision : be37c6315aacbec6332b1d09e726b39b4aa18dce

README
build/SConstruct
dev/ide_ctrl.cc
dev/isa_fake.cc [changed mode: 0755->0644]
dev/isa_fake.hh [changed mode: 0755->0644]
dev/pcidev.cc

diff --git a/README b/README
index 47b8e3b46faf48cb83c11c59c23e528c07fe588b..cacf27a9e99da537d91967638a2a5e2da8cb1f60 100644 (file)
--- a/README
+++ b/README
@@ -65,9 +65,10 @@ To build and test the syscall-emulation simulator:
 2. In $top/m5-test, run "./do-tests.pl -B ALPHA_SE".
 
 The tests should end with "finished do-tests successfully!"
-Note: if you're running under Cygwin several tests will fail with an
-"EIO icount mismatch".  This is due to the lack of fesetround() under
-Cygwin causing differences in floating-point rounding.
+Note: if you're running under Cygwin, several tests will fail with an
+"EIO trace inconsistency: ICNT mismatch" error.  This is due to the
+lack of fesetround() under Cygwin causing differences in floating-point
+rounding.  Other than that discrepancy your simulator is working perfectly.
 
 To build and test the full-system simualator:
 
index 87c215d418b6de007c269e29703f531a83980b5b..8819e36492682b9a9685c411d12c45083ae6bc58 100644 (file)
@@ -254,6 +254,9 @@ default_env.Append(ENV = { 'M5_EXT' : EXT_SRCDIR })
 default_env.Append(CCFLAGS='-pipe')
 default_env.Append(CCFLAGS='-fno-strict-aliasing')
 default_env.Append(CCFLAGS=Split('-Wall -Wno-sign-compare -Werror -Wundef'))
+if sys.platform == 'cygwin':
+    # cygwin has some header file issues...
+    default_env.Append(CCFLAGS=Split("-Wno-uninitialized"))
 default_env.Append(CPPPATH=[os.path.join(EXT_SRCDIR + '/dnet')])
 
 # libelf build is described in its own SConscript file.  Using a
index 6ad80e69d0eb00a341f3f2bf63f68816e06dc0c1..b9b9df6547149a25096c5d52a1cabc5b90b0eefc 100644 (file)
@@ -484,8 +484,8 @@ IdeController::write(MemReqPtr &req, const uint8_t *data)
             // select the current disk based on DEV bit
             disk = getDisk(channel);
 
-            oldVal = letoh(bmi_regs.chan[channel].bmic);
-            newVal = letoh(*data);
+            oldVal = bmi_regs.chan[channel].bmic;
+            newVal = *data;
 
             // if a DMA transfer is in progress, R/W control cannot change
             if (oldVal & SSBM) {
@@ -501,8 +501,8 @@ IdeController::write(MemReqPtr &req, const uint8_t *data)
                     DPRINTF(IdeCtrl, "Stopping DMA transfer\n");
 
                     // clear the BMIDEA bit
-                    bmi_regs.chan[channel].bmis = letoh(
-                        letoh(bmi_regs.chan[channel].bmis) & ~BMIDEA);
+                    bmi_regs.chan[channel].bmis =
+                        bmi_regs.chan[channel].bmis & ~BMIDEA;
 
                     if (disks[disk] == NULL)
                         panic("DMA stop for disk %d which does not exist\n",
@@ -515,8 +515,8 @@ IdeController::write(MemReqPtr &req, const uint8_t *data)
                     DPRINTF(IdeCtrl, "Starting DMA transfer\n");
 
                     // set the BMIDEA bit
-                    bmi_regs.chan[channel].bmis = letoh(
-                        letoh(bmi_regs.chan[channel].bmis) | BMIDEA);
+                    bmi_regs.chan[channel].bmis =
+                        bmi_regs.chan[channel].bmis | BMIDEA;
 
                     if (disks[disk] == NULL)
                         panic("DMA start for disk %d which does not exist\n",
@@ -528,7 +528,7 @@ IdeController::write(MemReqPtr &req, const uint8_t *data)
             }
 
             // update the register value
-            bmi_regs.chan[channel].bmic = letoh(newVal);
+            bmi_regs.chan[channel].bmic = newVal;
             break;
 
             // Bus master IDE status register
@@ -537,8 +537,8 @@ IdeController::write(MemReqPtr &req, const uint8_t *data)
             if (req->size != sizeof(uint8_t))
                 panic("Invalid BMIS write size: %x\n", req->size);
 
-            oldVal = letoh(bmi_regs.chan[channel].bmis);
-            newVal = letoh(*data);
+            oldVal = bmi_regs.chan[channel].bmis;
+            newVal = *data;
 
             // the BMIDEA bit is RO
             newVal |= (oldVal & BMIDEA);
@@ -554,17 +554,20 @@ IdeController::write(MemReqPtr &req, const uint8_t *data)
             else
                 (oldVal & IDEDMAE) ? newVal |= IDEDMAE : newVal &= ~IDEDMAE;
 
-            bmi_regs.chan[channel].bmis = letoh(newVal);
+            bmi_regs.chan[channel].bmis = newVal;
             break;
 
             // Bus master IDE descriptor table pointer register
           case BMIDTP0:
           case BMIDTP1:
-            if (req->size != sizeof(uint32_t))
-                panic("Invalid BMIDTP write size: %x\n", req->size);
+            {
+                if (req->size != sizeof(uint32_t))
+                    panic("Invalid BMIDTP write size: %x\n", req->size);
 
-            bmi_regs.chan[channel].bmidtp = letoh(
-                letoh(*(uint32_t*)data) & ~0x3);
+                uint32_t host_data =  letoh(*(uint32_t*)data);
+                host_data &= ~0x3;
+                bmi_regs.chan[channel].bmidtp = htole(host_data);
+            }
             break;
 
           default:
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index 04a38151e1f5257af93c234c0f06ed58a9b391ca..2bfd8a1c716950c5f65cec5dd8120b27df9fbe49 100644 (file)
@@ -203,7 +203,7 @@ PciDev::writeConfig(int offset, int size, const uint8_t *data)
 
           case PCI0_ROM_BASE_ADDR:
             if (letoh(data32) == 0xfffffffe)
-                config.expansionROM = letoh(0xffffffff);
+                config.expansionROM = htole((uint32_t)0xffffffff);
             else
                 config.expansionROM = data32;
             break;