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 3cfd98f44bfe..4ea99922a75c 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 | /* |
