changeset 7efee7268e87 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=7efee7268e87
description:
        dev: Extend access width for IDE control registers

        Add 32-bit access width for PrimaryTiming register and 16bit for 
UDMAControl
        register as FreeBSD required.

        Committed by: Nilay Vaish <[email protected]>

diffstat:

 src/dev/ide_ctrl.cc |  26 ++++++++++++++++++++++----
 1 files changed, 22 insertions(+), 4 deletions(-)

diffs (61 lines):

diff -r 68d688cbe26c -r 7efee7268e87 src/dev/ide_ctrl.cc
--- a/src/dev/ide_ctrl.cc       Fri Apr 03 11:42:10 2015 -0500
+++ b/src/dev/ide_ctrl.cc       Fri Apr 03 11:42:10 2015 -0500
@@ -202,6 +202,9 @@
         break;
       case sizeof(uint16_t):
         switch (offset) {
+          case UDMAControl:
+            pkt->set<uint16_t>(udmaControl);
+            break;
           case PrimaryTiming:
             pkt->set<uint16_t>(primaryTiming);
             break;
@@ -222,10 +225,16 @@
                 (uint32_t)pkt->get<uint16_t>());
         break;
       case sizeof(uint32_t):
-        if (offset == IDEConfig)
+        switch (offset) {
+          case PrimaryTiming:
+            pkt->set<uint32_t>(primaryTiming);
+            break;
+          case IDEConfig:
             pkt->set<uint32_t>(ideConfig);
-        else
+            break;
+          default:
             panic("No 32bit reads implemented for this device.");
+        }
         DPRINTF(IdeCtrl, "PCI read offset: %#x size: 4 data: %#x\n", offset,
                 (uint32_t)pkt->get<uint32_t>());
         break;
@@ -268,6 +277,9 @@
             break;
           case sizeof(uint16_t):
             switch (offset) {
+              case UDMAControl:
+                udmaControl = pkt->get<uint16_t>();
+                break;
               case PrimaryTiming:
                 primaryTiming = pkt->get<uint16_t>();
                 break;
@@ -289,10 +301,16 @@
                     offset, (uint32_t)pkt->get<uint16_t>());
             break;
           case sizeof(uint32_t):
-            if (offset == IDEConfig)
+            switch (offset) {
+              case PrimaryTiming:
+                primaryTiming = pkt->get<uint32_t>();
+                break;
+              case IDEConfig:
                 ideConfig = pkt->get<uint32_t>();
-            else
+                break;
+              default:
                 panic("Write of unimplemented PCI config. register: %x\n", 
offset);
+            }
             break;
           default:
             panic("invalid access size(?) for PCI configspace!\n");
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to