changeset da2c13f1b2e1 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=da2c13f1b2e1
description:
        arm, dev: Add support for listing DMA ports in new platforms

        When using a Ruby memory system, the Ruby configuration scripts expect
        to get a list of DMA ports to create the necessary DMA sequencers. Add
        support in the utility functions that wire up devices to append DMA
        ports to a list instead of connecting them to the IO bus. These
        functions are currently only used by the VExpress_GEM5_V1 platform.

        Change-Id: I46059e46b0f69e7be5f267e396811bd3caa3ed63
        Signed-off-by: Andreas Sandberg <[email protected]>
        Reviewed-by: Nikos Nikoleris <[email protected]>
        Reviewed-by: Curtis Dunham <[email protected]>
        Reviewed-by: Brad Beckmann <[email protected]>

diffstat:

 src/dev/arm/RealView.py |  29 +++++++++++++++++------------
 1 files changed, 17 insertions(+), 12 deletions(-)

diffs (58 lines):

diff -r 329e49c419b1 -r da2c13f1b2e1 src/dev/arm/RealView.py
--- a/src/dev/arm/RealView.py   Wed Aug 10 15:27:13 2016 +0100
+++ b/src/dev/arm/RealView.py   Wed Aug 10 15:27:26 2016 +0100
@@ -301,12 +301,18 @@
 
     _off_chip_ranges = []
 
-    def _attach_io(self, devices, bus):
+    def _attach_device(self, device, bus, dma_ports=None):
+        if hasattr(device, "pio"):
+            device.pio = bus.master
+        if hasattr(device, "dma"):
+            if dma_ports is None:
+                device.dma = bus.slave
+            else:
+                dma_ports.append(device.dma)
+
+    def _attach_io(self, devices, *args, **kwargs):
         for d in devices:
-            if hasattr(d, "pio"):
-                d.pio = bus.master
-            if hasattr(d, "dma"):
-                d.dma = bus.slave
+            self._attach_device(d, *args, **kwargs)
 
     def _attach_clk(self, devices, clkdomain):
         for d in devices:
@@ -325,13 +331,13 @@
     def offChipIOClkDomain(self, clkdomain):
         self._attach_clk(self._off_chip_devices(), clkdomain)
 
-    def attachOnChipIO(self, bus, bridge=None):
-        self._attach_io(self._on_chip_devices(), bus)
+    def attachOnChipIO(self, bus, bridge=None, **kwargs):
+        self._attach_io(self._on_chip_devices(), bus, **kwargs)
         if bridge:
             bridge.ranges = self._off_chip_ranges
 
-    def attachIO(self, bus):
-        self._attach_io(self._off_chip_devices(), bus)
+    def attachIO(self, *args, **kwargs):
+        self._attach_io(self._off_chip_devices(), *args, **kwargs)
 
 
     def setupBootLoader(self, mem_bus, cur_sys, loc):
@@ -923,10 +929,9 @@
             self.energy_ctrl,
         ]
 
-    def attachPciDevice(self, device, bus):
+    def attachPciDevice(self, device, *args, **kwargs):
         device.host = self.pci_host
-        device.pio = bus.master
-        device.dma = bus.slave
+        self._attach_device(device, *args, **kwargs)
 
     def setupBootLoader(self, mem_bus, cur_sys, loc):
         self.nvmem = SimpleMemory(range=AddrRange(0, size='64MB'),
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to