Skip to content

Commit

Permalink
generic: add phys_addr_t for holding physical addresses
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
jsgf authored and Ingo Molnar committed Sep 14, 2008
1 parent 9dfed08 commit 600715d
Show file tree
Hide file tree
Showing 7 changed files with 15 additions and 10 deletions.
3 changes: 3 additions & 0 deletions arch/powerpc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ config WORD_SIZE
config PPC_MERGE
def_bool y

config ARCH_PHYS_ADDR_T_64BIT
def_bool PPC64 || PHYS_64BIT

config MMU
bool
default y
Expand Down
7 changes: 0 additions & 7 deletions arch/powerpc/include/asm/types.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,6 @@ typedef struct {

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__
typedef u64 dma_addr_t;
#else
Expand Down
3 changes: 3 additions & 0 deletions arch/x86/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -932,6 +932,9 @@ config X86_PAE
has the cost of more pagetable lookup overhead, and also
consumes more pagetable space per process.

config ARCH_PHYS_ADDR_T_64BIT
def_bool X86_64 || X86_PAE

# Common NUMA Features
config NUMA
bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)"
Expand Down
2 changes: 0 additions & 2 deletions include/asm-x86/page_32.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ typedef u64 pmdval_t;
typedef u64 pudval_t;
typedef u64 pgdval_t;
typedef u64 pgprotval_t;
typedef u64 phys_addr_t;

typedef union {
struct {
Expand All @@ -54,7 +53,6 @@ typedef unsigned long pmdval_t;
typedef unsigned long pudval_t;
typedef unsigned long pgdval_t;
typedef unsigned long pgprotval_t;
typedef unsigned long phys_addr_t;

typedef union {
pteval_t pte;
Expand Down
1 change: 0 additions & 1 deletion include/asm-x86/page_64.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ typedef unsigned long pmdval_t;
typedef unsigned long pudval_t;
typedef unsigned long pgdval_t;
typedef unsigned long pgprotval_t;
typedef unsigned long phys_addr_t;

typedef struct page *pgtable_t;

Expand Down
6 changes: 6 additions & 0 deletions include/linux/types.h
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,12 @@ typedef u64 resource_size_t;
typedef u32 resource_size_t;
#endif

#ifdef CONFIG_PHYS_ADDR_T_64BIT
typedef u64 phys_addr_t;
#else
typedef u32 phys_addr_t;
#endif

struct ustat {
__kernel_daddr_t f_tfree;
__kernel_ino_t f_tinode;
Expand Down
3 changes: 3 additions & 0 deletions mm/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,9 @@ config RESOURCES_64BIT
help
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
int
default "0" if !ZONE_DMA
Expand Down

0 comments on commit 600715d

Please sign in to comment.