diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2008-09-11 04:31:45 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-09-14 11:24:25 -0400 |
commit | 600715dcdf567c86f8b2c6173fcfb4b873e25a19 (patch) | |
tree | c2f3ed1c928d3cc47af0573b56c8da2f1df880a0 | |
parent | 9dfed08eb4086584205717894177a9ee930c88c4 (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/Kconfig | 3 | ||||
-rw-r--r-- | arch/powerpc/include/asm/types.h | 7 | ||||
-rw-r--r-- | arch/x86/Kconfig | 3 | ||||
-rw-r--r-- | include/asm-x86/page_32.h | 2 | ||||
-rw-r--r-- | include/asm-x86/page_64.h | 1 | ||||
-rw-r--r-- | include/linux/types.h | 6 | ||||
-rw-r--r-- | mm/Kconfig | 3 |
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 | |||
22 | config PPC_MERGE | 22 | config PPC_MERGE |
23 | def_bool y | 23 | def_bool y |
24 | 24 | ||
25 | config ARCH_PHYS_ADDR_T_64BIT | ||
26 | def_bool PPC64 || PHYS_64BIT | ||
27 | |||
25 | config MMU | 28 | config 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 | ||
49 | typedef __vector128 vector128; | 49 | typedef __vector128 vector128; |
50 | 50 | ||
51 | /* Physical address used by some IO functions */ | ||
52 | #if defined(CONFIG_PPC64) || defined(CONFIG_PHYS_64BIT) | ||
53 | typedef u64 phys_addr_t; | ||
54 | #else | ||
55 | typedef u32 phys_addr_t; | ||
56 | #endif | ||
57 | |||
58 | #ifdef __powerpc64__ | 51 | #ifdef __powerpc64__ |
59 | typedef u64 dma_addr_t; | 52 | typedef 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 | ||
935 | config ARCH_PHYS_ADDR_T_64BIT | ||
936 | def_bool X86_64 || X86_PAE | ||
937 | |||
935 | # Common NUMA Features | 938 | # Common NUMA Features |
936 | config NUMA | 939 | config 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; | |||
33 | typedef u64 pudval_t; | 33 | typedef u64 pudval_t; |
34 | typedef u64 pgdval_t; | 34 | typedef u64 pgdval_t; |
35 | typedef u64 pgprotval_t; | 35 | typedef u64 pgprotval_t; |
36 | typedef u64 phys_addr_t; | ||
37 | 36 | ||
38 | typedef union { | 37 | typedef union { |
39 | struct { | 38 | struct { |
@@ -54,7 +53,6 @@ typedef unsigned long pmdval_t; | |||
54 | typedef unsigned long pudval_t; | 53 | typedef unsigned long pudval_t; |
55 | typedef unsigned long pgdval_t; | 54 | typedef unsigned long pgdval_t; |
56 | typedef unsigned long pgprotval_t; | 55 | typedef unsigned long pgprotval_t; |
57 | typedef unsigned long phys_addr_t; | ||
58 | 56 | ||
59 | typedef union { | 57 | typedef 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; | |||
79 | typedef unsigned long pudval_t; | 79 | typedef unsigned long pudval_t; |
80 | typedef unsigned long pgdval_t; | 80 | typedef unsigned long pgdval_t; |
81 | typedef unsigned long pgprotval_t; | 81 | typedef unsigned long pgprotval_t; |
82 | typedef unsigned long phys_addr_t; | ||
83 | 82 | ||
84 | typedef struct page *pgtable_t; | 83 | typedef 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; | |||
197 | typedef u32 resource_size_t; | 197 | typedef u32 resource_size_t; |
198 | #endif | 198 | #endif |
199 | 199 | ||
200 | #ifdef CONFIG_PHYS_ADDR_T_64BIT | ||
201 | typedef u64 phys_addr_t; | ||
202 | #else | ||
203 | typedef u32 phys_addr_t; | ||
204 | #endif | ||
205 | |||
200 | struct ustat { | 206 | struct 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 | ||
190 | config PHYS_ADDR_T_64BIT | ||
191 | def_bool 64BIT || ARCH_PHYS_ADDR_T_64BIT | ||
192 | |||
190 | config ZONE_DMA_FLAG | 193 | config ZONE_DMA_FLAG |
191 | int | 194 | int |
192 | default "0" if !ZONE_DMA | 195 | default "0" if !ZONE_DMA |