On 03/09/2012 03:25 AM, Markus Armbruster wrote: > Mark Langsdorf <mark.langsd...@calxeda.com> writes: > >> Allow load_image_targphys to load files on systems with more than 2G of >> emulated memory by changing the max_sz parameter from an int to an >> unsigned long. >> >> Signed-off-by: Mark Langsdorf <mark.langsd...@calxeda.com> >> --- >> hw/loader.c | 4 ++-- >> hw/loader.h | 3 ++- >> 2 files changed, 4 insertions(+), 3 deletions(-) >> >> diff --git a/hw/loader.c b/hw/loader.c >> index 415cdce..a5333d0 100644 >> --- a/hw/loader.c >> +++ b/hw/loader.c >> @@ -103,9 +103,9 @@ ssize_t read_targphys(const char *name, >> >> /* return the size or -1 if error */ >> int load_image_targphys(const char *filename, >> - target_phys_addr_t addr, int max_sz) >> + target_phys_addr_t addr, unsigned long max_sz) >> { >> - int size; >> + unsigned long size; >> >> size = get_image_size(filename); >> if (size > max_sz) { > > get_image_size() returns int. How does widening size and max_sz here > improve things?
If max_sz is greater than 2GB, then: int max_sz = 0xc0000000; int size = 0x300; if (size > max_sz) return -1; returns -1, even though size is much less than max_sz. doing it my way: unsigned long max_sz = 0xc0000000; unsigned long size = 0x300; if (size > max_sz) return -1; does not return -1. --Mark Langsdorf Calxeda, Inc.