diff options
Diffstat (limited to 'include/asm-powerpc/pgtable-ppc64.h')
-rw-r--r-- | include/asm-powerpc/pgtable-ppc64.h | 50 |
1 files changed, 15 insertions, 35 deletions
diff --git a/include/asm-powerpc/pgtable-ppc64.h b/include/asm-powerpc/pgtable-ppc64.h index 3cfd98f44bf..4ea99922a75 100644 --- a/include/asm-powerpc/pgtable-ppc64.h +++ b/include/asm-powerpc/pgtable-ppc64.h | |||
@@ -7,11 +7,7 @@ | |||
7 | 7 | ||
8 | #ifndef __ASSEMBLY__ | 8 | #ifndef __ASSEMBLY__ |
9 | #include <linux/stddef.h> | 9 | #include <linux/stddef.h> |
10 | #include <asm/processor.h> /* For TASK_SIZE */ | ||
11 | #include <asm/mmu.h> | ||
12 | #include <asm/page.h> | ||
13 | #include <asm/tlbflush.h> | 10 | #include <asm/tlbflush.h> |
14 | struct mm_struct; | ||
15 | #endif /* __ASSEMBLY__ */ | 11 | #endif /* __ASSEMBLY__ */ |
16 | 12 | ||
17 | #ifdef CONFIG_PPC_64K_PAGES | 13 | #ifdef CONFIG_PPC_64K_PAGES |
@@ -27,7 +23,7 @@ struct mm_struct; | |||
27 | */ | 23 | */ |
28 | #define PGTABLE_EADDR_SIZE (PTE_INDEX_SIZE + PMD_INDEX_SIZE + \ | 24 | #define PGTABLE_EADDR_SIZE (PTE_INDEX_SIZE + PMD_INDEX_SIZE + \ |
29 | PUD_INDEX_SIZE + PGD_INDEX_SIZE + PAGE_SHIFT) | 25 | PUD_INDEX_SIZE + PGD_INDEX_SIZE + PAGE_SHIFT) |
30 | #define PGTABLE_RANGE (1UL << PGTABLE_EADDR_SIZE) | 26 | #define PGTABLE_RANGE (ASM_CONST(1) << PGTABLE_EADDR_SIZE) |
31 | 27 | ||
32 | #if TASK_SIZE_USER64 > PGTABLE_RANGE | 28 | #if TASK_SIZE_USER64 > PGTABLE_RANGE |
33 | #error TASK_SIZE_USER64 exceeds pagetable range | 29 | #error TASK_SIZE_USER64 exceeds pagetable range |
@@ -37,19 +33,28 @@ struct mm_struct; | |||
37 | #error TASK_SIZE_USER64 exceeds user VSID range | 33 | #error TASK_SIZE_USER64 exceeds user VSID range |
38 | #endif | 34 | #endif |
39 | 35 | ||
36 | |||
40 | /* | 37 | /* |
41 | * Define the address range of the vmalloc VM area. | 38 | * Define the address range of the vmalloc VM area. |
42 | */ | 39 | */ |
43 | #define VMALLOC_START ASM_CONST(0xD000000000000000) | 40 | #define VMALLOC_START ASM_CONST(0xD000000000000000) |
44 | #define VMALLOC_SIZE ASM_CONST(0x80000000000) | 41 | #define VMALLOC_SIZE (PGTABLE_RANGE >> 1) |
45 | #define VMALLOC_END (VMALLOC_START + VMALLOC_SIZE) | 42 | #define VMALLOC_END (VMALLOC_START + VMALLOC_SIZE) |
46 | 43 | ||
47 | /* | 44 | /* |
48 | * Define the address range of the imalloc VM area. | 45 | * Define the address ranges for MMIO and IO space : |
46 | * | ||
47 | * ISA_IO_BASE = VMALLOC_END, 64K reserved area | ||
48 | * PHB_IO_BASE = ISA_IO_BASE + 64K to ISA_IO_BASE + 2G, PHB IO spaces | ||
49 | * IOREMAP_BASE = ISA_IO_BASE + 2G to VMALLOC_START + PGTABLE_RANGE | ||
49 | */ | 50 | */ |
50 | #define PHBS_IO_BASE VMALLOC_END | 51 | #define FULL_IO_SIZE 0x80000000ul |
51 | #define IMALLOC_BASE (PHBS_IO_BASE + 0x80000000ul) /* Reserve 2 gigs for PHBs */ | 52 | #define ISA_IO_BASE (VMALLOC_END) |
52 | #define IMALLOC_END (VMALLOC_START + PGTABLE_RANGE) | 53 | #define ISA_IO_END (VMALLOC_END + 0x10000ul) |
54 | #define PHB_IO_BASE (ISA_IO_END) | ||
55 | #define PHB_IO_END (VMALLOC_END + FULL_IO_SIZE) | ||
56 | #define IOREMAP_BASE (PHB_IO_END) | ||
57 | #define IOREMAP_END (VMALLOC_START + PGTABLE_RANGE) | ||
53 | 58 | ||
54 | /* | 59 | /* |
55 | * Region IDs | 60 | * Region IDs |
@@ -134,16 +139,6 @@ struct mm_struct; | |||
134 | #define __S110 PAGE_SHARED_X | 139 | #define __S110 PAGE_SHARED_X |
135 | #define __S111 PAGE_SHARED_X | 140 | #define __S111 PAGE_SHARED_X |
136 | 141 | ||
137 | #ifndef __ASSEMBLY__ | ||
138 | |||
139 | /* | ||
140 | * ZERO_PAGE is a global shared page that is always zero: used | ||
141 | * for zero-mapped memory areas etc.. | ||
142 | */ | ||
143 | extern unsigned long empty_zero_page[PAGE_SIZE/sizeof(unsigned long)]; | ||
144 | #define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) | ||
145 | #endif /* __ASSEMBLY__ */ | ||
146 | |||
147 | #ifdef CONFIG_HUGETLB_PAGE | 142 | #ifdef CONFIG_HUGETLB_PAGE |
148 | 143 | ||
149 | #define HAVE_ARCH_UNMAPPED_AREA | 144 | #define HAVE_ARCH_UNMAPPED_AREA |
@@ -442,10 +437,6 @@ extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, | |||
442 | #define pgd_ERROR(e) \ | 437 | #define pgd_ERROR(e) \ |
443 | printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, pgd_val(e)) | 438 | printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, pgd_val(e)) |
444 | 439 | ||
445 | extern pgd_t swapper_pg_dir[]; | ||
446 | |||
447 | extern void paging_init(void); | ||
448 | |||
449 | /* Encode and de-code a swap entry */ | 440 | /* Encode and de-code a swap entry */ |
450 | #define __swp_type(entry) (((entry).val >> 1) & 0x3f) | 441 | #define __swp_type(entry) (((entry).val >> 1) & 0x3f) |
451 | #define __swp_offset(entry) ((entry).val >> 8) | 442 | #define __swp_offset(entry) ((entry).val >> 8) |
@@ -456,17 +447,6 @@ extern void paging_init(void); | |||
456 | #define pgoff_to_pte(off) ((pte_t) {((off) << PTE_RPN_SHIFT)|_PAGE_FILE}) | 447 | #define pgoff_to_pte(off) ((pte_t) {((off) << PTE_RPN_SHIFT)|_PAGE_FILE}) |
457 | #define PTE_FILE_MAX_BITS (BITS_PER_LONG - PTE_RPN_SHIFT) | 448 | #define PTE_FILE_MAX_BITS (BITS_PER_LONG - PTE_RPN_SHIFT) |
458 | 449 | ||
459 | /* | ||
460 | * kern_addr_valid is intended to indicate whether an address is a valid | ||
461 | * kernel address. Most 32-bit archs define it as always true (like this) | ||
462 | * but most 64-bit archs actually perform a test. What should we do here? | ||
463 | * The only use is in fs/ncpfs/dir.c | ||
464 | */ | ||
465 | #define kern_addr_valid(addr) (1) | ||
466 | |||
467 | #define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ | ||
468 | remap_pfn_range(vma, vaddr, pfn, size, prot) | ||
469 | |||
470 | void pgtable_cache_init(void); | 450 | void pgtable_cache_init(void); |
471 | 451 | ||
472 | /* | 452 | /* |