diff --git a/sys/arm/arm/nexus.c b/sys/arm/arm/nexus.c index bc91becce6e..81500f9b8e3 100644 --- a/sys/arm/arm/nexus.c +++ b/sys/arm/arm/nexus.c @@ -77,6 +77,7 @@ struct nexus_device { #define DEVTONX(dev) ((struct nexus_device *)device_get_ivars(dev)) static struct rman mem_rman; +static struct rman irq_rman; static int nexus_probe(device_t); static int nexus_attach(device_t); @@ -171,6 +172,12 @@ nexus_attach(device_t dev) if (rman_init(&mem_rman) || rman_manage_region(&mem_rman, 0, BUS_SPACE_MAXADDR)) panic("nexus_probe mem_rman"); + irq_rman.rm_start = 0; + irq_rman.rm_end = ~0; + irq_rman.rm_type = RMAN_ARRAY; + irq_rman.rm_descr = "Interrupts"; + if (rman_init(&irq_rman) || rman_manage_region(&irq_rman, 0, ~0)) + panic("nexus_attach irq_rman"); /* * First, deal with the children we know about already @@ -227,6 +234,10 @@ nexus_alloc_resource(device_t bus, device_t child, int type, int *rid, flags &= ~RF_ACTIVE; switch (type) { + case SYS_RES_IRQ: + rm = &irq_rman; + break; + case SYS_RES_MEMORY: case SYS_RES_IOPORT: rm = &mem_rman;