[Top] [All Lists]

Re: Off by two error in au1000/common/setup.c?

To: Ulrich Eckhardt <>
Subject: Re: Off by two error in au1000/common/setup.c?
From: Pete Popov <>
Date: Tue, 22 Mar 2005 09:46:10 -0800
In-reply-to: <>
Original-recipient: rfc822;
References: <>
User-agent: Mozilla Thunderbird 1.0 (Windows/20041206)
Ulrich Eckhardt wrote:


Could someone take a look at these lines from fixup_bigphys_addr():

// in au1000.h
#define Au1500_PCI_MEM_START      0x440000000ULL
#define Au1500_PCI_MEM_END        0x44FFFFFFFULL

// in setup.c
start = (u32)Au1500_PCI_MEM_START;
end = (u32)Au1500_PCI_MEM_END;
/* check for pci memory window */
if ((phys_addr >= start) && ((phys_addr + size) < end)) {
 return (phys_addr - start) + Au1500_PCI_MEM_START;

For the (unlikely?) case that I want to use a size of 0x0 1000 0000, 'phys_addr+size == end+1'. IOW I need 'phys_addr+size-1' to get the last address and use '<= end' to compare with the last valid address in the range.

But the a size of 0x0 1000 0001 would pass the test since phys_addr + 1000 0001 - 1 <= end.

How about if I just make MEM_END 0x450000000 and the check " <= end" ?


<Prev in Thread] Current Thread [Next in Thread>