[U-Boot] [PATCH 1/3] Introduce addr_map library

Scott Wood scottwood at freescale.com
Mon Nov 24 18:08:45 CET 2008


On Mon, Nov 24, 2008 at 10:47:38AM -0600, Kumar Gala wrote:
> +static struct {
> +	phys_addr_t paddr;
> +	unsigned int vaddr;
> +	unsigned int size;

vaddr/size should be unsigned long (or uintptr_t/size_t).

> +phys_addr_t addrmap_virt_to_phys(unsigned int vaddr)
> +{
> +	int i;
> +
> +	for (i = 0; i < CONFIG_SYS_NUM_ADDR_MAP; i++) {
> +		u64 base, upper, addr;
> +
> +		if (address_map[i].size == 0)
> +			continue;
> +
> +		addr = (u64)vaddr;
> +		base = (u64)(address_map[i].vaddr);
> +		upper = (u64)(address_map[i].size) + base;
> +
> +		if (addr >= base && addr < upper) {
> +			return vaddr - address_map[i].vaddr + address_map[i].paddr;
> +		}

upper should be base + size - 1, and addr <= upper.  Otherwise, this will
fail for a mapping at the end of a 64-bit address space.

> +void addrmap_set_entry(unsigned int vaddr, phys_addr_t paddr,
> +			unsigned int size, int idx)
> +{
> +	if (idx > CONFIG_SYS_NUM_ADDR_MAP)
> +		return ;

No space before ;

-Scott


More information about the U-Boot mailing list