aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2011-02-15 11:28:28 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2011-02-17 18:27:34 -0500
commit3a6b1676c6f27f7fad1a3d6fab5a95f90b1e7402 (patch)
tree7457d1896dae7e61bfad76f6d26e2d84a1b3ae7e /arch
parent4d901c4271951d110afb13ee9aa73d27a6c8e53d (diff)
ARM: 6675/1: use phys_addr_t instead of unsigned long in conversion code
The unsigned long datatype is not sufficient for mapping physical addresses >= 4GB. This patch ensures that the address conversion code in asm/memory.h casts to the correct type when handling physical addresses. The internal v2p macros only deal with lowmem addresses, so these do not need to be modified. Acked-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/include/asm/memory.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h
index 2398b3fc0268..431077c5a867 100644
--- a/arch/arm/include/asm/memory.h
+++ b/arch/arm/include/asm/memory.h
@@ -15,6 +15,7 @@
15 15
16#include <linux/compiler.h> 16#include <linux/compiler.h>
17#include <linux/const.h> 17#include <linux/const.h>
18#include <linux/types.h>
18#include <mach/memory.h> 19#include <mach/memory.h>
19#include <asm/sizes.h> 20#include <asm/sizes.h>
20 21
@@ -135,8 +136,8 @@
135/* 136/*
136 * Convert a physical address to a Page Frame Number and back 137 * Convert a physical address to a Page Frame Number and back
137 */ 138 */
138#define __phys_to_pfn(paddr) ((paddr) >> PAGE_SHIFT) 139#define __phys_to_pfn(paddr) ((unsigned long)((paddr) >> PAGE_SHIFT))
139#define __pfn_to_phys(pfn) ((pfn) << PAGE_SHIFT) 140#define __pfn_to_phys(pfn) ((phys_addr_t)(pfn) << PAGE_SHIFT)
140 141
141/* 142/*
142 * Convert a page to/from a physical address 143 * Convert a page to/from a physical address
@@ -234,12 +235,12 @@ static inline unsigned long __phys_to_virt(unsigned long x)
234 * translation for translating DMA addresses. Use the driver 235 * translation for translating DMA addresses. Use the driver
235 * DMA support - see dma-mapping.h. 236 * DMA support - see dma-mapping.h.
236 */ 237 */
237static inline unsigned long virt_to_phys(const volatile void *x) 238static inline phys_addr_t virt_to_phys(const volatile void *x)
238{ 239{
239 return __virt_to_phys((unsigned long)(x)); 240 return __virt_to_phys((unsigned long)(x));
240} 241}
241 242
242static inline void *phys_to_virt(unsigned long x) 243static inline void *phys_to_virt(phys_addr_t x)
243{ 244{
244 return (void *)(__phys_to_virt((unsigned long)(x))); 245 return (void *)(__phys_to_virt((unsigned long)(x)));
245} 246}