cores/cpu/vexriscv_smp/naxrisv: Fix/Shift IRQ numbering since 0 is reserved.
This commit is contained in:
parent
5f58753afe
commit
6ee39b4712
|
@ -181,6 +181,10 @@ class NaxRiscv(CPU):
|
||||||
i_peripheral_dbus_rresp = dbus.r.resp,
|
i_peripheral_dbus_rresp = dbus.r.resp,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# IRQs (Note: 0 is reserved as a "No IRQ").
|
||||||
|
self.interrupts.update({"uart" : 1})
|
||||||
|
self.interrupts.update({"timer0" : 2})
|
||||||
|
|
||||||
def set_reset_address(self, reset_address):
|
def set_reset_address(self, reset_address):
|
||||||
self.reset_address = reset_address
|
self.reset_address = reset_address
|
||||||
|
|
||||||
|
@ -293,13 +297,10 @@ class NaxRiscv(CPU):
|
||||||
platform.add_source(os.path.join(vdir, self.netlist_name + ".v"), "verilog")
|
platform.add_source(os.path.join(vdir, self.netlist_name + ".v"), "verilog")
|
||||||
|
|
||||||
def add_soc_components(self, soc):
|
def add_soc_components(self, soc):
|
||||||
# Set UART/Timer0 CSRs/IRQs to the ones used by OpenSBI.
|
# Set UART/Timer0 CSRs to the ones used by OpenSBI.
|
||||||
soc.csr.add("uart", n=2)
|
soc.csr.add("uart", n=2)
|
||||||
soc.csr.add("timer0", n=3)
|
soc.csr.add("timer0", n=3)
|
||||||
|
|
||||||
soc.irq.add("uart", n=0)
|
|
||||||
soc.irq.add("timer0", n=1)
|
|
||||||
|
|
||||||
# Add OpenSBI region.
|
# Add OpenSBI region.
|
||||||
soc.bus.add_region("opensbi", SoCRegion(origin=self.mem_map["main_ram"] + 0x00f0_0000, size=0x8_0000, cached=True, linker=True))
|
soc.bus.add_region("opensbi", SoCRegion(origin=self.mem_map["main_ram"] + 0x00f0_0000, size=0x8_0000, cached=True, linker=True))
|
||||||
|
|
||||||
|
|
|
@ -330,6 +330,7 @@ class VexRiscvSMP(CPU):
|
||||||
o_peripheral_BTE = pbus.bte
|
o_peripheral_BTE = pbus.bte
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# DMA.
|
||||||
if VexRiscvSMP.coherent_dma:
|
if VexRiscvSMP.coherent_dma:
|
||||||
self.dma_bus = dma_bus = wishbone.Interface(data_width=VexRiscvSMP.dcache_width)
|
self.dma_bus = dma_bus = wishbone.Interface(data_width=VexRiscvSMP.dcache_width)
|
||||||
dma_bus_stall = Signal()
|
dma_bus_stall = Signal()
|
||||||
|
@ -355,6 +356,10 @@ class VexRiscvSMP(CPU):
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# IRQs (Note: 0 is reserved as a "No IRQ").
|
||||||
|
self.interrupts.update({"uart" : 1})
|
||||||
|
self.interrupts.update({"timer0" : 2})
|
||||||
|
|
||||||
def set_reset_address(self, reset_address):
|
def set_reset_address(self, reset_address):
|
||||||
self.reset_address = reset_address
|
self.reset_address = reset_address
|
||||||
assert reset_address == 0x0000_0000
|
assert reset_address == 0x0000_0000
|
||||||
|
@ -389,13 +394,10 @@ class VexRiscvSMP(CPU):
|
||||||
|
|
||||||
def add_soc_components(self, soc):
|
def add_soc_components(self, soc):
|
||||||
if self.variant == "linux":
|
if self.variant == "linux":
|
||||||
# Set UART/Timer0 CSRs/IRQs to the ones used by OpenSBI.
|
# Set UART/Timer0 CSRs to the ones used by OpenSBI.
|
||||||
soc.csr.add("uart", n=2)
|
soc.csr.add("uart", n=2)
|
||||||
soc.csr.add("timer0", n=3)
|
soc.csr.add("timer0", n=3)
|
||||||
|
|
||||||
soc.irq.add("uart", n=0)
|
|
||||||
soc.irq.add("timer0", n=1)
|
|
||||||
|
|
||||||
# Add OpenSBI region.
|
# Add OpenSBI region.
|
||||||
soc.bus.add_region("opensbi", SoCRegion(origin=self.mem_map["main_ram"] + 0x00f0_0000, size=0x8_0000, cached=True, linker=True))
|
soc.bus.add_region("opensbi", SoCRegion(origin=self.mem_map["main_ram"] + 0x00f0_0000, size=0x8_0000, cached=True, linker=True))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue