aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Fitzhardinge <jeremy@goop.org>2008-09-11 04:31:45 -0400
committerIngo Molnar <mingo@elte.hu>2008-09-14 11:24:25 -0400
commit600715dcdf567c86f8b2c6173fcfb4b873e25a19 (patch)
treec2f3ed1c928d3cc47af0573b56c8da2f1df880a0
parent9dfed08eb4086584205717894177a9ee930c88c4 (diff)
generic: add phys_addr_t for holding physical addresses
Add a kernel-wide "phys_addr_t" which is guaranteed to be able to hold any physical address. By default it equals the word size of the architecture, but a 32-bit architecture can set ARCH_PHYS_ADDR_T_64BIT if it needs a 64-bit phys_addr_t. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--arch/powerpc/Kconfig3
-rw-r--r--arch/powerpc/include/asm/types.h7
-rw-r--r--arch/x86/Kconfig3
-rw-r--r--include/asm-x86/page_32.h2
-rw-r--r--include/asm-x86/page_64.h1
-rw-r--r--include/linux/types.h6
-rw-r--r--mm/Kconfig3
7 files changed, 15 insertions, 10 deletions
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 587da5e0990f..f5f83ee60411 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -22,6 +22,9 @@ config WORD_SIZE
22config PPC_MERGE 22config PPC_MERGE
23 def_bool y 23 def_bool y
24 24
25config ARCH_PHYS_ADDR_T_64BIT
26 def_bool PPC64 || PHYS_64BIT
27
25config MMU 28config MMU
26 bool 29 bool
27 default y 30 default y
diff --git a/arch/powerpc/include/asm/types.h b/arch/powerpc/include/asm/types.h
index d3374bc865ba..c646f34c4e8b 100644
--- a/arch/powerpc/include/asm/types.h
+++ b/arch/powerpc/include/asm/types.h
@@ -48,13 +48,6 @@ typedef struct {
48 48
49typedef __vector128 vector128; 49typedef __vector128 vector128;
50 50
51/* Physical address used by some IO functions */
52#if defined(CONFIG_PPC64) || defined(CONFIG_PHYS_64BIT)
53typedef u64 phys_addr_t;
54#else
55typedef u32 phys_addr_t;
56#endif
57
58#ifdef __powerpc64__ 51#ifdef __powerpc64__
59typedef u64 dma_addr_t; 52typedef u64 dma_addr_t;
60#else 53#else
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index ed92864d1325..a0ffb5188c8c 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -932,6 +932,9 @@ config X86_PAE
932 has the cost of more pagetable lookup overhead, and also 932 has the cost of more pagetable lookup overhead, and also
933 consumes more pagetable space per process. 933 consumes more pagetable space per process.
934 934
935config ARCH_PHYS_ADDR_T_64BIT
936 def_bool X86_64 || X86_PAE
937
935# Common NUMA Features 938# Common NUMA Features
936config NUMA 939config NUMA
937 bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)" 940 bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)"
diff --git a/include/asm-x86/page_32.h b/include/asm-x86/page_32.h
index ab8528793f08..d0e58605a520 100644
--- a/include/asm-x86/page_32.h
+++ b/include/asm-x86/page_32.h
@@ -33,7 +33,6 @@ typedef u64 pmdval_t;
33typedef u64 pudval_t; 33typedef u64 pudval_t;
34typedef u64 pgdval_t; 34typedef u64 pgdval_t;
35typedef u64 pgprotval_t; 35typedef u64 pgprotval_t;
36typedef u64 phys_addr_t;
37 36
38typedef union { 37typedef union {
39 struct { 38 struct {
@@ -54,7 +53,6 @@ typedef unsigned long pmdval_t;
54typedef unsigned long pudval_t; 53typedef unsigned long pudval_t;
55typedef unsigned long pgdval_t; 54typedef unsigned long pgdval_t;
56typedef unsigned long pgprotval_t; 55typedef unsigned long pgprotval_t;
57typedef unsigned long phys_addr_t;
58 56
59typedef union { 57typedef union {
60 pteval_t pte; 58 pteval_t pte;
diff --git a/include/asm-x86/page_64.h b/include/asm-x86/page_64.h
index c6916c83e6b1..2456fbf2d7dc 100644
--- a/include/asm-x86/page_64.h
+++ b/include/asm-x86/page_64.h
@@ -79,7 +79,6 @@ typedef unsigned long pmdval_t;
79typedef unsigned long pudval_t; 79typedef unsigned long pudval_t;
80typedef unsigned long pgdval_t; 80typedef unsigned long pgdval_t;
81typedef unsigned long pgprotval_t; 81typedef unsigned long pgprotval_t;
82typedef unsigned long phys_addr_t;
83 82
84typedef struct page *pgtable_t; 83typedef struct page *pgtable_t;
85 84
diff --git a/include/linux/types.h b/include/linux/types.h
index d4a9ce6e2760..022c668496da 100644
--- a/include/linux/types.h
+++ b/include/linux/types.h
@@ -197,6 +197,12 @@ typedef u64 resource_size_t;
197typedef u32 resource_size_t; 197typedef u32 resource_size_t;
198#endif 198#endif
199 199
200#ifdef CONFIG_PHYS_ADDR_T_64BIT
201typedef u64 phys_addr_t;
202#else
203typedef u32 phys_addr_t;
204#endif
205
200struct ustat { 206struct ustat {
201 __kernel_daddr_t f_tfree; 207 __kernel_daddr_t f_tfree;
202 __kernel_ino_t f_tinode; 208 __kernel_ino_t f_tinode;
diff --git a/mm/Kconfig b/mm/Kconfig
index 0bd9c2dbb2a0..91ee3922510a 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -187,6 +187,9 @@ config RESOURCES_64BIT
187 help 187 help
188 This option allows memory and IO resources to be 64 bit. 188 This option allows memory and IO resources to be 64 bit.
189 189
190config PHYS_ADDR_T_64BIT
191 def_bool 64BIT || ARCH_PHYS_ADDR_T_64BIT
192
190config ZONE_DMA_FLAG 193config ZONE_DMA_FLAG
191 int 194 int
192 default "0" if !ZONE_DMA 195 default "0" if !ZONE_DMA