Commit 600715dc authored by Jeremy Fitzhardinge's avatar Jeremy Fitzhardinge Committed by Ingo Molnar

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: default avatarJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 9dfed08e
...@@ -22,6 +22,9 @@ config WORD_SIZE ...@@ -22,6 +22,9 @@ config WORD_SIZE
config PPC_MERGE config PPC_MERGE
def_bool y def_bool y
config ARCH_PHYS_ADDR_T_64BIT
def_bool PPC64 || PHYS_64BIT
config MMU config MMU
bool bool
default y default y
......
...@@ -48,13 +48,6 @@ typedef struct { ...@@ -48,13 +48,6 @@ typedef struct {
typedef __vector128 vector128; typedef __vector128 vector128;
/* Physical address used by some IO functions */
#if defined(CONFIG_PPC64) || defined(CONFIG_PHYS_64BIT)
typedef u64 phys_addr_t;
#else
typedef u32 phys_addr_t;
#endif
#ifdef __powerpc64__ #ifdef __powerpc64__
typedef u64 dma_addr_t; typedef u64 dma_addr_t;
#else #else
......
...@@ -932,6 +932,9 @@ config X86_PAE ...@@ -932,6 +932,9 @@ config X86_PAE
has the cost of more pagetable lookup overhead, and also has the cost of more pagetable lookup overhead, and also
consumes more pagetable space per process. consumes more pagetable space per process.
config ARCH_PHYS_ADDR_T_64BIT
def_bool X86_64 || X86_PAE
# Common NUMA Features # Common NUMA Features
config NUMA config NUMA
bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)" bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)"
......
...@@ -33,7 +33,6 @@ typedef u64 pmdval_t; ...@@ -33,7 +33,6 @@ typedef u64 pmdval_t;
typedef u64 pudval_t; typedef u64 pudval_t;
typedef u64 pgdval_t; typedef u64 pgdval_t;
typedef u64 pgprotval_t; typedef u64 pgprotval_t;
typedef u64 phys_addr_t;
typedef union { typedef union {
struct { struct {
...@@ -54,7 +53,6 @@ typedef unsigned long pmdval_t; ...@@ -54,7 +53,6 @@ typedef unsigned long pmdval_t;
typedef unsigned long pudval_t; typedef unsigned long pudval_t;
typedef unsigned long pgdval_t; typedef unsigned long pgdval_t;
typedef unsigned long pgprotval_t; typedef unsigned long pgprotval_t;
typedef unsigned long phys_addr_t;
typedef union { typedef union {
pteval_t pte; pteval_t pte;
......
...@@ -79,7 +79,6 @@ typedef unsigned long pmdval_t; ...@@ -79,7 +79,6 @@ typedef unsigned long pmdval_t;
typedef unsigned long pudval_t; typedef unsigned long pudval_t;
typedef unsigned long pgdval_t; typedef unsigned long pgdval_t;
typedef unsigned long pgprotval_t; typedef unsigned long pgprotval_t;
typedef unsigned long phys_addr_t;
typedef struct page *pgtable_t; typedef struct page *pgtable_t;
......
...@@ -197,6 +197,12 @@ typedef u64 resource_size_t; ...@@ -197,6 +197,12 @@ typedef u64 resource_size_t;
typedef u32 resource_size_t; typedef u32 resource_size_t;
#endif #endif
#ifdef CONFIG_PHYS_ADDR_T_64BIT
typedef u64 phys_addr_t;
#else
typedef u32 phys_addr_t;
#endif
struct ustat { struct ustat {
__kernel_daddr_t f_tfree; __kernel_daddr_t f_tfree;
__kernel_ino_t f_tinode; __kernel_ino_t f_tinode;
......
...@@ -187,6 +187,9 @@ config RESOURCES_64BIT ...@@ -187,6 +187,9 @@ config RESOURCES_64BIT
help help
This option allows memory and IO resources to be 64 bit. This option allows memory and IO resources to be 64 bit.
config PHYS_ADDR_T_64BIT
def_bool 64BIT || ARCH_PHYS_ADDR_T_64BIT
config ZONE_DMA_FLAG config ZONE_DMA_FLAG
int int
default "0" if !ZONE_DMA default "0" if !ZONE_DMA
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment