stdlib: Added LupIO-IPI to the LupV Board
This adds the LupioIPI device to our LupV Board, which
finalizes the changes needed for the LupIO devices to run
with SMP support.
Change-Id: I3e51dae6d8d589d3b38c57c33322e740c832a03d
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/53042
Maintainer: Bobby Bruce <bbruce@ucdavis.edu>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
diff --git a/src/python/gem5/components/boards/lupv_board.py b/src/python/gem5/components/boards/lupv_board.py
index 00ca934..11a9ebc 100644
--- a/src/python/gem5/components/boards/lupv_board.py
+++ b/src/python/gem5/components/boards/lupv_board.py
@@ -48,6 +48,7 @@
Plic,
Terminal,
LupioBLK,
+ LupioIPI,
LupioPIC,
LupioRNG,
LupioRTC,
@@ -110,10 +111,18 @@
# PLIC
self.pic = Plic(pio_addr=0xc000000)
+ # LUPIO IPI
+ self.lupio_ipi = LupioIPI(
+ pio_addr=0x20001000,
+ int_type=self._excep_code['INT_SOFT_SUPER'],
+ num_threads = self.processor.get_num_cores()
+ )
+
# LUPIO PIC
self.lupio_pic = LupioPIC(
pio_addr=0x20002000,
- int_type = self._excep_code['INT_EXT_SUPER']
+ int_type = self._excep_code['INT_EXT_SUPER'],
+ num_threads = self.processor.get_num_cores()
)
#LupV Platform
@@ -142,7 +151,8 @@
# LUPIO TMR
self.lupio_tmr = LupioTMR(
pio_addr=0x20006000,
- int_type = self._excep_code['INT_TIMER_SUPER']
+ int_type = self._excep_code['INT_TIMER_SUPER'],
+ num_threads = self.processor.get_num_cores()
)
# LUPIO TTY
@@ -183,6 +193,7 @@
self._on_chip_devices = [
self.clint,
self.pic,
+ self.lupio_ipi,
self.lupio_pic,
self.lupio_tmr
]
@@ -423,6 +434,22 @@
soc_node.append(plic_node)
+ # LupioIPI Device
+ lupio_ipi = self.lupio_ipi
+ lupio_ipi_node = lupio_ipi.generateBasicPioDeviceNode(soc_state,
+ "lupio-ipi", lupio_ipi.pio_addr,
+ lupio_ipi.pio_size)
+ int_extended = list()
+ for i, core in enumerate(self.get_processor().get_cores()):
+ phandle = state.phandle(f"cpu@{i}.int_state")
+ int_extended.append(phandle)
+ int_extended.append(self._excep_code['INT_SOFT_SUPER'])
+ lupio_ipi_node.append(
+ FdtPropertyWords("interrupts-extended", int_extended))
+ lupio_ipi_node.append(FdtProperty("interrupt-controller"))
+ lupio_ipi_node.appendCompatible(["lupio,ipi"])
+ soc_node.append(lupio_ipi_node)
+
# LupioPIC Device
lupio_pic = self.lupio_pic
lupio_pic_node = lupio_pic.generateBasicPioDeviceNode(soc_state,