diff options
| author | Wolfgang Denk <wd@denx.de> | 2012-07-08 19:16:14 +0200 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2012-07-08 19:16:14 +0200 | 
| commit | 8246ff864de38935ff34108856a37a2caf6cbefc (patch) | |
| tree | fb33f056c2ff6acd4619b7b0098d470c99bd1754 /lib | |
| parent | c8a90646adb1c7ca82e856c603ec964b32759d98 (diff) | |
| parent | feae34243f63fc319b40db7b92070a0718dc31a6 (diff) | |
| download | olio-uboot-2014.01-8246ff864de38935ff34108856a37a2caf6cbefc.tar.xz olio-uboot-2014.01-8246ff864de38935ff34108856a37a2caf6cbefc.zip | |
Merge branch 'master' of git://git.denx.de/u-boot-mpc85xx
* 'master' of git://git.denx.de/u-boot-mpc85xx:
  powerpc/mpc85xx: Fix Handling the lack of L2 cache on P2040/P2040E
  powerpc/mpc85xx: Workaround for erratum CPU_A011
  powerpc/mpc85xx: Ignore E bit for SVR_SOC_VER()
  powerpc/P4080: Check SVR for CPU22 workaround
  lib/powerpc: addrmap_phys_to_virt() should return a pointer
  powerpc/85xx: clean up P1022DS board configuration header file
  powerpc/85xx: fdt_set_phy_handle() should return an error code
  powerpc/85xx: minor clean-ups to the P2020DS board header file
  powerpc/p1010rdb: add readme document for p1010rdb
  powerpc/mpc85xx:NAND_SPL:Avoid IFC/eLBC Base address setting
  powerpc/mpc85xx:Add debugger support for e500v2 SoC
  powerpc/85xx:Fix NAND code base to support debugger
  powerpc/85xx:Make debug exception vector accessible
  powerpc/85xx:Fix MSR[DE] bit in MSR to support debugger
  PATCH 1/4][v4] doc:Add documentation for e500 external debugger support
  powerpc/p1010rdb: update mux config of p1010rdb board
  powerpc/mpc85xx:Add BSC9131 RDB Support
  powerpc/mpc85xx:Add BSC9131/BSC9130/BSC9231 Processor Support
  powerpc/85xx: Add USB device-tree fixup for various platforms
Signed-off-by: Wolfgang Denk <wd@denx.de>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/addr_map.c | 19 | 
1 files changed, 11 insertions, 8 deletions
| diff --git a/lib/addr_map.c b/lib/addr_map.c index ff8532cf1..31384d139 100644 --- a/lib/addr_map.c +++ b/lib/addr_map.c @@ -47,26 +47,29 @@ phys_addr_t addrmap_virt_to_phys(void * vaddr)  	return (phys_addr_t)(~0);  } -unsigned long addrmap_phys_to_virt(phys_addr_t paddr) +void *addrmap_phys_to_virt(phys_addr_t paddr)  {  	int i;  	for (i = 0; i < CONFIG_SYS_NUM_ADDR_MAP; i++) { -		u64 base, upper, addr; +		phys_addr_t base, upper;  		if (address_map[i].size == 0)  			continue; -		addr = (u64)paddr; -		base = (u64)(address_map[i].paddr); -		upper = (u64)(address_map[i].size) + base - 1; +		base = address_map[i].paddr; +		upper = address_map[i].size + base - 1; -		if (addr >= base && addr <= upper) { -			return paddr - address_map[i].paddr + address_map[i].vaddr; +		if (paddr >= base && paddr <= upper) { +			phys_addr_t offset; + +			offset = address_map[i].paddr - address_map[i].vaddr; + +			return (void *)(unsigned long)(paddr - offset);  		}  	} -	return (unsigned long)(~0); +	return (void *)(~0);  }  void addrmap_set_entry(unsigned long vaddr, phys_addr_t paddr, |