summaryrefslogtreecommitdiffstats
path: root/include/linux/pfn.h
diff options
context:
space:
mode:
authorJeremy Fitzhardinge <jeremy@goop.org>2008-09-11 01:31:48 -0700
committerIngo Molnar <mingo@elte.hu>2008-09-14 17:24:26 +0200
commit947d0496cf3e12ebfa70b3eaf561c25403247ce9 (patch)
treef2f77730b77c50735669dca5ff42afee69463d0e /include/linux/pfn.h
parent600715dcdf567c86f8b2c6173fcfb4b873e25a19 (diff)
generic: make PFN_PHYS explicitly return phys_addr_t
PFN_PHYS, as its name suggests, turns a pfn into a physical address. However, it is a macro which just operates on its argument without modifying its type. pfns are typed unsigned long, but an unsigned long may not be long enough to hold a physical address (32-bit systems with more than 32 bits of physcial address). Make sure we cast to phys_addr_t to return a complete result. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/linux/pfn.h')
-rw-r--r--include/linux/pfn.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/include/linux/pfn.h b/include/linux/pfn.h
index bb01f8b92b5..7646637221f 100644
--- a/include/linux/pfn.h
+++ b/include/linux/pfn.h
@@ -1,9 +1,13 @@
#ifndef _LINUX_PFN_H_
#define _LINUX_PFN_H_
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#endif
+
#define PFN_ALIGN(x) (((unsigned long)(x) + (PAGE_SIZE - 1)) & PAGE_MASK)
#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT)
#define PFN_DOWN(x) ((x) >> PAGE_SHIFT)
-#define PFN_PHYS(x) ((x) << PAGE_SHIFT)
+#define PFN_PHYS(x) ((phys_addr_t)(x) << PAGE_SHIFT)
#endif