Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[POWERPC] Start factoring pgtable-ppc32.h and pgtable-ppc64.h

This factors some things defined in both pgtable-ppc32.h and
pgtable-ppc64.h into the common part of asm-powerpc/pgtable.h. These
are all things which have essentially identical definitions, and which
by their nature are very unlikely ever to need different definitions
in the two cases.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>

authored by

David Gibson and committed by
Paul Mackerras
9c709f3b c0770f68

+28 -51
-22
include/asm-powerpc/pgtable-ppc32.h
··· 6 6 #ifndef __ASSEMBLY__ 7 7 #include <linux/sched.h> 8 8 #include <linux/threads.h> 9 - #include <asm/processor.h> /* For TASK_SIZE */ 10 - #include <asm/mmu.h> 11 - #include <asm/page.h> 12 9 #include <asm/io.h> /* For sub-arch specific PPC_PIN_SIZE */ 13 - struct mm_struct; 14 10 15 11 extern unsigned long va_to_phys(unsigned long address); 16 12 extern pte_t *va_to_pte(unsigned long address); ··· 484 488 #define pfn_pte(pfn, prot) __pte(((pte_basic_t)(pfn) << PFN_SHIFT_OFFSET) |\ 485 489 pgprot_val(prot)) 486 490 #define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot) 487 - 488 - /* 489 - * ZERO_PAGE is a global shared page that is always zero: used 490 - * for zero-mapped memory areas etc.. 491 - */ 492 - extern unsigned long empty_zero_page[1024]; 493 - #define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) 494 - 495 491 #endif /* __ASSEMBLY__ */ 496 492 497 493 #define pte_none(pte) ((pte_val(pte) & ~_PTE_NONE_MASK) == 0) ··· 718 730 #define pte_unmap(pte) kunmap_atomic(pte, KM_PTE0) 719 731 #define pte_unmap_nested(pte) kunmap_atomic(pte, KM_PTE1) 720 732 721 - extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; 722 - 723 - extern void paging_init(void); 724 - 725 733 /* 726 734 * Encode and decode a swap entry. 727 735 * Note that the bits we use in a PTE for representing a swap entry ··· 734 750 #define PTE_FILE_MAX_BITS 29 735 751 #define pte_to_pgoff(pte) (pte_val(pte) >> 3) 736 752 #define pgoff_to_pte(off) ((pte_t) { ((off) << 3) | _PAGE_FILE }) 737 - 738 - /* Needs to be defined here and not in linux/mm.h, as it is arch dependent */ 739 - #define kern_addr_valid(addr) (1) 740 - 741 - #define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ 742 - remap_pfn_range(vma, vaddr, pfn, size, prot) 743 753 744 754 /* 745 755 * No page table caches to initialise
-29
include/asm-powerpc/pgtable-ppc64.h
··· 7 7 8 8 #ifndef __ASSEMBLY__ 9 9 #include <linux/stddef.h> 10 - #include <asm/processor.h> /* For TASK_SIZE */ 11 - #include <asm/mmu.h> 12 - #include <asm/page.h> 13 10 #include <asm/tlbflush.h> 14 - struct mm_struct; 15 11 #endif /* __ASSEMBLY__ */ 16 12 17 13 #ifdef CONFIG_PPC_64K_PAGES ··· 138 142 #define __S101 PAGE_READONLY_X 139 143 #define __S110 PAGE_SHARED_X 140 144 #define __S111 PAGE_SHARED_X 141 - 142 - #ifndef __ASSEMBLY__ 143 - 144 - /* 145 - * ZERO_PAGE is a global shared page that is always zero: used 146 - * for zero-mapped memory areas etc.. 147 - */ 148 - extern unsigned long empty_zero_page[PAGE_SIZE/sizeof(unsigned long)]; 149 - #define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) 150 - #endif /* __ASSEMBLY__ */ 151 145 152 146 #ifdef CONFIG_HUGETLB_PAGE 153 147 ··· 433 447 #define pgd_ERROR(e) \ 434 448 printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, pgd_val(e)) 435 449 436 - extern pgd_t swapper_pg_dir[]; 437 - 438 - extern void paging_init(void); 439 - 440 450 /* Encode and de-code a swap entry */ 441 451 #define __swp_type(entry) (((entry).val >> 1) & 0x3f) 442 452 #define __swp_offset(entry) ((entry).val >> 8) ··· 442 460 #define pte_to_pgoff(pte) (pte_val(pte) >> PTE_RPN_SHIFT) 443 461 #define pgoff_to_pte(off) ((pte_t) {((off) << PTE_RPN_SHIFT)|_PAGE_FILE}) 444 462 #define PTE_FILE_MAX_BITS (BITS_PER_LONG - PTE_RPN_SHIFT) 445 - 446 - /* 447 - * kern_addr_valid is intended to indicate whether an address is a valid 448 - * kernel address. Most 32-bit archs define it as always true (like this) 449 - * but most 64-bit archs actually perform a test. What should we do here? 450 - * The only use is in fs/ncpfs/dir.c 451 - */ 452 - #define kern_addr_valid(addr) (1) 453 - 454 - #define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ 455 - remap_pfn_range(vma, vaddr, pfn, size, prot) 456 463 457 464 void pgtable_cache_init(void); 458 465
+28
include/asm-powerpc/pgtable.h
··· 2 2 #define _ASM_POWERPC_PGTABLE_H 3 3 #ifdef __KERNEL__ 4 4 5 + #ifndef __ASSEMBLY__ 6 + #include <asm/processor.h> /* For TASK_SIZE */ 7 + #include <asm/mmu.h> 8 + #include <asm/page.h> 9 + struct mm_struct; 10 + #endif /* !__ASSEMBLY__ */ 11 + 5 12 #if defined(CONFIG_PPC64) 6 13 # include <asm/pgtable-ppc64.h> 7 14 #else ··· 16 9 #endif 17 10 18 11 #ifndef __ASSEMBLY__ 12 + /* 13 + * ZERO_PAGE is a global shared page that is always zero: used 14 + * for zero-mapped memory areas etc.. 15 + */ 16 + extern unsigned long empty_zero_page[]; 17 + #define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) 18 + 19 + extern pgd_t swapper_pg_dir[]; 20 + 21 + extern void paging_init(void); 22 + 23 + /* 24 + * kern_addr_valid is intended to indicate whether an address is a valid 25 + * kernel address. Most 32-bit archs define it as always true (like this) 26 + * but most 64-bit archs actually perform a test. What should we do here? 27 + */ 28 + #define kern_addr_valid(addr) (1) 29 + 30 + #define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ 31 + remap_pfn_range(vma, vaddr, pfn, size, prot) 32 + 19 33 #include <asm-generic/pgtable.h> 20 34 #endif /* __ASSEMBLY__ */ 21 35