text: #ifndef _ASM_POWERPC_PGTABLE_H
  #define _ASM_POWERPC_PGTABLE_H
  #ifdef __KERNEL__
  
  #ifndef __ASSEMBLY__
  #include <asm/processor.h>		/* For TASK_SIZE */
  #include <asm/mmu.h>
  #include <asm/page.h>
  struct mm_struct;
  #endif /* !__ASSEMBLY__ */
  
  #if defined(CONFIG_PPC64)
  #  include <asm/pgtable-ppc64.h>
  #else
  #  include <asm/pgtable-ppc32.h>
  #endif
  
  #ifndef __ASSEMBLY__
  /*
   * ZERO_PAGE is a global shared page that is always zero: used
   * for zero-mapped memory areas etc..
   */
  extern unsigned long empty_zero_page[];
  #define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page))
  
  extern pgd_t swapper_pg_dir[];
  
  extern void paging_init(void);
  
  /*
   * kern_addr_valid is intended to indicate whether an address is a valid
   * kernel address.  Most 32-bit archs define it as always true (like this)
   * but most 64-bit archs actually perform a test.  What should we do here?
   */
  #define kern_addr_valid(addr)	(1)
  
  #define io_remap_pfn_range(vma, vaddr, pfn, size, prot)		\
  		remap_pfn_range(vma, vaddr, pfn, size, prot)
  
  #include <asm-generic/pgtable.h>
  #endif /* __ASSEMBLY__ */
  
  #endif /* __KERNEL__ */
  #endif /* _ASM_POWERPC_PGTABLE_H */
  