summaryrefslogtreecommitdiffstats
path: root/commands
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2012-05-24 08:52:22 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2012-07-01 08:18:53 +0200
commit5f03074ea98b64b55c133b35ee144fdc909e6d69 (patch)
tree1a61fd84a5a44d98297014486eca663221ff4cbc /commands
parent20addb80f65076b3a81c7d778f7b93d445a96841 (diff)
downloadbarebox-5f03074ea98b64b55c133b35ee144fdc909e6d69.tar.gz
barebox-5f03074ea98b64b55c133b35ee144fdc909e6d69.tar.xz
resource: store 'end' instead of 'size' in struct resource
Storing the size instead of the resource end in struct resource was a mistake. 'size' ranges from 0 to UINT[32|64]_MAX + 1 which obviously leads to problems. 'end' on the other hand will never exceed UINT[32|64]_MAX. Also this way we can express a iomem region covering the whole address space. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'commands')
-rw-r--r--commands/bootm.c6
-rw-r--r--commands/iomem.c3
-rw-r--r--commands/mem.c2
3 files changed, 4 insertions, 7 deletions
diff --git a/commands/bootm.c b/commands/bootm.c
index 2989d39311..3c47ab5d9e 100644
--- a/commands/bootm.c
+++ b/commands/bootm.c
@@ -383,8 +383,7 @@ static int do_bootm(int argc, char *argv[])
if (data.os_res)
printf("OS image is at 0x%08x-0x%08x\n",
data.os_res->start,
- data.os_res->start +
- data.os_res->size - 1);
+ data.os_res->end);
else
printf("OS image not yet relocated\n");
@@ -399,8 +398,7 @@ static int do_bootm(int argc, char *argv[])
if (data.initrd_res)
printf("initrd is at 0x%08x-0x%08x\n",
data.initrd_res->start,
- data.initrd_res->start +
- data.initrd_res->size - 1);
+ data.initrd_res->end);
else
printf("initrd image not yet relocated\n");
}
diff --git a/commands/iomem.c b/commands/iomem.c
index 70355fd1e9..c22878c1c8 100644
--- a/commands/iomem.c
+++ b/commands/iomem.c
@@ -32,8 +32,7 @@ static void __print_resources(struct resource *res, int indent)
printf(PRINTF_CONVERSION_RESOURCE " - " PRINTF_CONVERSION_RESOURCE
" (size " PRINTF_CONVERSION_RESOURCE ") %s\n", res->start,
- res->start + res->size - 1,
- res->size, res->name);
+ res->end, resource_size(res), res->name);
list_for_each_entry(r, &res->children, sibling)
__print_resources(r, indent + 1);
diff --git a/commands/mem.c b/commands/mem.c
index 080bfdef3f..6d1a2b8e8a 100644
--- a/commands/mem.c
+++ b/commands/mem.c
@@ -594,7 +594,7 @@ static int mem_probe(struct device_d *dev)
dev->priv = cdev;
cdev->name = (char*)dev->resource[0].name;
- cdev->size = (unsigned long)dev->resource[0].size;
+ cdev->size = (unsigned long)resource_size(&dev->resource[0]);
cdev->ops = &memops;
cdev->dev = dev;