python: FdtState using interrupt-cells

Change-Id: I37813748f518b442d2b53c2bc4f381edb2e26146
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20050
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
diff --git a/src/python/m5/util/fdthelper.py b/src/python/m5/util/fdthelper.py
index c876050..27d6f84 100644
--- a/src/python/m5/util/fdthelper.py
+++ b/src/python/m5/util/fdthelper.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2016 ARM Limited
+# Copyright (c) 2016,2019 ARM Limited
 # All rights reserved.
 #
 # The license below extends only to copyright in the software and shall
@@ -87,13 +87,14 @@
     phandle_counter = 0
     phandles = dict()
 
-    def __init__(self, addr_cells, size_cells, cpu_cells):
+    def __init__(self, **kwargs):
         """Instantiate values of this state. The state can only be initialized
         once."""
 
-        self.addr_cells = addr_cells
-        self.size_cells = size_cells
-        self.cpu_cells = cpu_cells
+        self.addr_cells = kwargs.pop('addr_cells', 0)
+        self.size_cells = kwargs.pop('size_cells', 0)
+        self.cpu_cells = kwargs.pop('cpu_cells', 0)
+        self.interrupt_cells = kwargs.pop('interrupt_cells', 0)
 
     def phandle(self, obj):
         """Return a unique phandle number for a key. The key can be a SimObject
@@ -142,6 +143,11 @@
         state."""
         return self.int_to_cells(size, self.size_cells)
 
+    def interruptCells(self, interrupt):
+        """Format an integer type according to the interrupt_cells value
+        of this state."""
+        return self.int_to_cells(interrupt, self.interrupt_cells)
+
     def addrCellsProperty(self):
         """Return an #address-cells property with the value of this state."""
         return FdtPropertyWords("#address-cells", self.addr_cells)
@@ -155,6 +161,12 @@
         of this state."""
         return FdtPropertyWords("#address-cells", self.cpu_cells)
 
+    def interruptCellsProperty(self):
+        """Return an #interrupt-cells property for cpu nodes with the value
+        of this state."""
+        return FdtPropertyWords("#interrupt-cells", self.interrupt_cells)
+
+
 class FdtNop(pyfdt.FdtNop):
     """Create an empty node."""
     pass