From c25cc11ae32e10a7d0c9f04c29bfb7eca4d9c210 Mon Sep 17 00:00:00 2001 From: Myles Watson Date: Fri, 21 May 2010 14:33:48 +0000 Subject: Use lists instead of arrays for resources in devices to reduce memory usage. Signed-off-by: Myles Watson Acked-by: Patrick Georgi git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5576 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- src/northbridge/amd/amdfam10/northbridge.c | 21 ++++++++++----------- src/northbridge/amd/amdk8/northbridge.c | 16 +++++++--------- src/northbridge/amd/gx2/northbridge.c | 6 ++---- src/northbridge/amd/lx/northbridge.c | 10 +++++----- src/northbridge/intel/e7520/northbridge.c | 3 +-- src/northbridge/intel/e7525/northbridge.c | 3 +-- src/northbridge/intel/i3100/northbridge.c | 3 +-- 7 files changed, 27 insertions(+), 35 deletions(-) (limited to 'src/northbridge') diff --git a/src/northbridge/amd/amdfam10/northbridge.c b/src/northbridge/amd/amdfam10/northbridge.c index 3d968a9ded..009b57becc 100644 --- a/src/northbridge/amd/amdfam10/northbridge.c +++ b/src/northbridge/amd/amdfam10/northbridge.c @@ -592,7 +592,7 @@ static void amdfam10_create_vga_resource(device_t dev, unsigned nodeid) static void amdfam10_set_resources(device_t dev) { u32 nodeid, link; - int i; + struct resource *res; /* Find the nodeid */ nodeid = amdfam10_nodeid(dev); @@ -600,8 +600,8 @@ static void amdfam10_set_resources(device_t dev) amdfam10_create_vga_resource(dev, nodeid); /* Set each resource we have found */ - for(i = 0; i < dev->resources; i++) { - amdfam10_set_resource(dev, &dev->resource[i], nodeid); + for(res = dev->resource_list; res; res = res->next) { + amdfam10_set_resource(dev, res, nodeid); } for(link = 0; link < dev->links; link++) { @@ -889,7 +889,7 @@ static void pci_domain_set_resources(device_t dev) { #if CONFIG_PCI_64BIT_PREF_MEM == 1 struct resource *io, *mem1, *mem2; - struct resource *resource, *last; + struct resource *res; #endif unsigned long mmio_basek; u32 pci_tolm; @@ -943,14 +943,13 @@ static void pci_domain_set_resources(device_t dev) mem2->base, mem2->limit, mem2->size, mem2->align); } - last = &dev->resource[dev->resources]; - for(resource = &dev->resource[0]; resource < last; resource++) + for(res = &dev->resource_list; res; res = res->next) { - resource->flags |= IORESOURCE_ASSIGNED; - resource->flags &= ~IORESOURCE_STORED; - link = (resource>>2) & 3; - resource->flags |= IORESOURCE_STORED; - report_resource_stored(dev, resource, ""); + res->flags |= IORESOURCE_ASSIGNED; + res->flags &= ~IORESOURCE_STORED; + link = (res>>2) & 3; + res->flags |= IORESOURCE_STORED; + report_resource_stored(dev, res, ""); } #endif diff --git a/src/northbridge/amd/amdk8/northbridge.c b/src/northbridge/amd/amdk8/northbridge.c index 6938ec62b3..7910f291aa 100644 --- a/src/northbridge/amd/amdk8/northbridge.c +++ b/src/northbridge/amd/amdk8/northbridge.c @@ -520,14 +520,13 @@ static void amdk8_create_vga_resource(device_t dev, unsigned nodeid) static void amdk8_set_resources(device_t dev) { unsigned nodeid, link; - int i; + struct resource *res; /* Find the nodeid */ nodeid = amdk8_nodeid(dev); /* Set each resource we have found */ - for(i = 0; i < dev->resources; i++) { - struct resource *res = &dev->resource[i]; + for(res = dev->resource_list; res; res = res->next) { struct resource *old = NULL; unsigned index; @@ -846,7 +845,7 @@ static void amdk8_domain_set_resources(device_t dev) { #if CONFIG_PCI_64BIT_PREF_MEM == 1 struct resource *io, *mem1, *mem2; - struct resource *resource, *last; + struct resource *res; #endif unsigned long mmio_basek; uint32_t pci_tolm; @@ -905,12 +904,11 @@ static void amdk8_domain_set_resources(device_t dev) mem2->base, mem2->limit, mem2->size, mem2->align); #endif - last = &dev->resource[dev->resources]; - for(resource = &dev->resource[0]; resource < last; resource++) + for(res = dev->resource_list; res; res = res->next) { - resource->flags |= IORESOURCE_ASSIGNED; - resource->flags |= IORESOURCE_STORED; - report_resource_stored(dev, resource, ""); + res->flags |= IORESOURCE_ASSIGNED; + res->flags |= IORESOURCE_STORED; + report_resource_stored(dev, res, ""); } #endif diff --git a/src/northbridge/amd/gx2/northbridge.c b/src/northbridge/amd/gx2/northbridge.c index 98acbc9f95..42fdcbb496 100644 --- a/src/northbridge/amd/gx2/northbridge.c +++ b/src/northbridge/amd/gx2/northbridge.c @@ -297,11 +297,9 @@ static void northbridge_init(device_t dev) static void set_resources(struct device *dev) { #if 0 - struct resource *resource, *last; + struct resource *res; - last = &dev->resource[dev->resources]; - - for(resource = &dev->resource[0]; resource < last; resource++) { + for(res = &dev->resource_list; res; res = res->next) { pci_set_resource(dev, resource); } #endif diff --git a/src/northbridge/amd/lx/northbridge.c b/src/northbridge/amd/lx/northbridge.c index 6eba99d9df..8fd8d9ecd2 100644 --- a/src/northbridge/amd/lx/northbridge.c +++ b/src/northbridge/amd/lx/northbridge.c @@ -318,18 +318,18 @@ static void northbridge_init(device_t dev) static void northbridge_set_resources(struct device *dev) { - struct resource *resource, *last; unsigned link; uint8_t line; - last = &dev->resource[dev->resources]; - - for (resource = &dev->resource[0]; resource < last; resource++) { +#if 0 + struct resource *res; + for (res = dev->resource_list; res; res = res->next) { // andrei: do not change the base address, it will make the VSA virtual registers unusable - //pci_set_resource(dev, resource); + //pci_set_resource(dev, res); // FIXME: static allocation may conflict with dynamic mappings! } +#endif for (link = 0; link < dev->links; link++) { struct bus *bus; diff --git a/src/northbridge/intel/e7520/northbridge.c b/src/northbridge/intel/e7520/northbridge.c index 93604b6cf7..02f7c45495 100644 --- a/src/northbridge/intel/e7520/northbridge.c +++ b/src/northbridge/intel/e7520/northbridge.c @@ -183,9 +183,8 @@ static void mc_read_resources(device_t dev) static void mc_set_resources(device_t dev) { - struct resource *resource, *last; + struct resource *resource; - last = &dev->resource[dev->resources]; resource = find_resource(dev, 0xcf); if (resource) { report_resource_stored(dev, resource, ""); diff --git a/src/northbridge/intel/e7525/northbridge.c b/src/northbridge/intel/e7525/northbridge.c index 559dc15b8b..a227f22987 100644 --- a/src/northbridge/intel/e7525/northbridge.c +++ b/src/northbridge/intel/e7525/northbridge.c @@ -183,9 +183,8 @@ static void mc_read_resources(device_t dev) static void mc_set_resources(device_t dev) { - struct resource *resource, *last; + struct resource *resource; - last = &dev->resource[dev->resources]; resource = find_resource(dev, 0xcf); if (resource) { report_resource_stored(dev, resource, ""); diff --git a/src/northbridge/intel/i3100/northbridge.c b/src/northbridge/intel/i3100/northbridge.c index 195790f8cd..0675aea6bc 100644 --- a/src/northbridge/intel/i3100/northbridge.c +++ b/src/northbridge/intel/i3100/northbridge.c @@ -204,9 +204,8 @@ static void mc_read_resources(device_t dev) static void mc_set_resources(device_t dev) { - struct resource *resource, *last; + struct resource *resource; - last = &dev->resource[dev->resources]; resource = find_resource(dev, 0xcf); if (resource) { report_resource_stored(dev, resource, ""); -- cgit v1.2.3