dev-arm: improve Pl390 parameters
Remove default dist_addr and cpu_addr register addresses since those are
purely platform specific.
Parametrize the cpu_size parameter. RealViewPBX has the Gic CPU and
distributor base too close for the newer CPU size of 0x2000, leading to
overlap.
This was introduced in I90a9f669a46a37d79c6cc542087cf91f2044f104 and makes
using RealViewPBX fail with:
fatal: system.membus has two ports responding within range
[0x1f000100 : 0x1f0020ff]:
system.realview.gic.pio
system.realview.gic.pio
Change-Id: Ic6c0e6b3d4705ff369eb739d54a1173a47819b7d
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/12491
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
This commit is contained in:
@@ -72,8 +72,9 @@ class Pl390(BaseGic):
|
||||
type = 'Pl390'
|
||||
cxx_header = "dev/arm/gic_pl390.hh"
|
||||
|
||||
dist_addr = Param.Addr(0x1f001000, "Address for distributor")
|
||||
cpu_addr = Param.Addr(0x1f000100, "Address for cpu")
|
||||
dist_addr = Param.Addr("Address for distributor")
|
||||
cpu_addr = Param.Addr("Address for cpu")
|
||||
cpu_size = Param.Addr(0x2000, "Size of cpu register bank")
|
||||
dist_pio_delay = Param.Latency('10ns', "Delay for PIO r/w to distributor")
|
||||
cpu_pio_delay = Param.Latency('10ns', "Delay for PIO r/w to cpu interface")
|
||||
int_latency = Param.Latency('10ns', "Delay for interrupt to get to CPU")
|
||||
|
||||
@@ -614,7 +614,7 @@ class RealViewPBX(RealView):
|
||||
realview_io = RealViewCtrl(pio_addr=0x10000000)
|
||||
mcc = VExpressMCC()
|
||||
dcc = CoreTile2A15DCC()
|
||||
gic = Pl390()
|
||||
gic = Pl390(cpu_addr=0x1f000100, dist_addr=0x1f001000, cpu_size=0x100)
|
||||
pci_host = GenericPciHost(
|
||||
conf_base=0x30000000, conf_size='256MB', conf_device_bits=16,
|
||||
pci_pio_base=0)
|
||||
|
||||
@@ -65,7 +65,7 @@ const AddrRange Pl390::GICD_ICFGR (0xc00, 0xcff);
|
||||
Pl390::Pl390(const Params *p)
|
||||
: BaseGic(p),
|
||||
distRange(RangeSize(p->dist_addr, DIST_SIZE)),
|
||||
cpuRange(RangeSize(p->cpu_addr, CPU_SIZE)),
|
||||
cpuRange(RangeSize(p->cpu_addr, p->cpu_size)),
|
||||
addrRanges{distRange, cpuRange},
|
||||
distPioDelay(p->dist_pio_delay),
|
||||
cpuPioDelay(p->cpu_pio_delay), intLatency(p->int_latency),
|
||||
|
||||
@@ -110,8 +110,6 @@ class Pl390 : public BaseGic, public BaseGicRegisters
|
||||
GICC_APR2 = 0xd8, // active priority register 2
|
||||
GICC_APR3 = 0xdc, // active priority register 3
|
||||
GICC_IIDR = 0xfc, // cpu interface id register
|
||||
|
||||
CPU_SIZE = 0x2000,
|
||||
};
|
||||
|
||||
static const int SGI_MAX = 16; // Number of Software Gen Interrupts
|
||||
|
||||
Reference in New Issue
Block a user