diff options
Diffstat (limited to 'arch/sh/include/asm/pgtable_64.h')
| -rw-r--r-- | arch/sh/include/asm/pgtable_64.h | 26 | 
1 files changed, 14 insertions, 12 deletions
diff --git a/arch/sh/include/asm/pgtable_64.h b/arch/sh/include/asm/pgtable_64.h index 17cdbecc3ad..0ee46776dad 100644 --- a/arch/sh/include/asm/pgtable_64.h +++ b/arch/sh/include/asm/pgtable_64.h @@ -43,11 +43,6 @@ static __inline__ void set_pte(pte_t *pteptr, pte_t pteval)  }  #define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval) -static __inline__ void pmd_set(pmd_t *pmdp,pte_t *ptep) -{ -	pmd_val(*pmdp) = (unsigned long) ptep; -} -  /*   * PGD defines. Top level.   */ @@ -128,8 +123,21 @@ static __inline__ void pmd_set(pmd_t *pmdp,pte_t *ptep)  #define _PAGE_DIRTY	0x400  /* software: page accessed in write */  #define _PAGE_ACCESSED	0x800  /* software: page referenced */ +/* Wrapper for extended mode pgprot twiddling */ +#define _PAGE_EXT(x)		((unsigned long long)(x) << 32) + +/* + * We can use the sign-extended bits in the PTEL to get 32 bits of + * software flags. This works for now because no implementations uses + * anything above the PPN field. + */ +#define _PAGE_WIRED	_PAGE_EXT(0x001) /* software: wire the tlb entry */ + +#define _PAGE_CLEAR_FLAGS	(_PAGE_PRESENT | _PAGE_FILE | _PAGE_SHARED | \ +				 _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_WIRED) +  /* Mask which drops software flags */ -#define _PAGE_FLAGS_HARDWARE_MASK	0xfffffffffffff3dbLL +#define _PAGE_FLAGS_HARDWARE_MASK	(NEFF_MASK & ~(_PAGE_CLEAR_FLAGS))  /*   * HugeTLB support @@ -203,12 +211,6 @@ static __inline__ void pmd_set(pmd_t *pmdp,pte_t *ptep)  #define pgprot_writecombine(prot) __pgprot(pgprot_val(prot) & ~_PAGE_CACHABLE)  /* - * Handling allocation failures during page table setup. - */ -extern void __handle_bad_pmd_kernel(pmd_t * pmd); -#define __handle_bad_pmd(x)	__handle_bad_pmd_kernel(x) - -/*   * PTE level access routines.   *   * Note1:  |