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.

Reply via email to