diff options
Diffstat (limited to 'arch/sparc/include/asm/pgtable_64.h')
| -rw-r--r-- | arch/sparc/include/asm/pgtable_64.h | 15 | 
1 files changed, 12 insertions, 3 deletions
diff --git a/arch/sparc/include/asm/pgtable_64.h b/arch/sparc/include/asm/pgtable_64.h index b77128c8052..1e03c5a6b4f 100644 --- a/arch/sparc/include/asm/pgtable_64.h +++ b/arch/sparc/include/asm/pgtable_64.h @@ -655,9 +655,11 @@ static inline int pte_special(pte_t pte)  #define pte_unmap(pte)			do { } while (0)  /* Actual page table PTE updates.  */ -extern void tlb_batch_add(struct mm_struct *mm, unsigned long vaddr, pte_t *ptep, pte_t orig); +extern void tlb_batch_add(struct mm_struct *mm, unsigned long vaddr, +			  pte_t *ptep, pte_t orig, int fullmm); -static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte) +static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr, +			     pte_t *ptep, pte_t pte, int fullmm)  {  	pte_t orig = *ptep; @@ -670,12 +672,19 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *p  	 *             and SUN4V pte layout, so this inline test is fine.  	 */  	if (likely(mm != &init_mm) && (pte_val(orig) & _PAGE_VALID)) -		tlb_batch_add(mm, addr, ptep, orig); +		tlb_batch_add(mm, addr, ptep, orig, fullmm);  } +#define set_pte_at(mm,addr,ptep,pte)	\ +	__set_pte_at((mm), (addr), (ptep), (pte), 0) +  #define pte_clear(mm,addr,ptep)		\  	set_pte_at((mm), (addr), (ptep), __pte(0UL)) +#define __HAVE_ARCH_PTE_CLEAR_NOT_PRESENT_FULL +#define pte_clear_not_present_full(mm,addr,ptep,fullmm)	\ +	__set_pte_at((mm), (addr), (ptep), __pte(0UL), (fullmm)) +  #ifdef DCACHE_ALIASING_POSSIBLE  #define __HAVE_ARCH_MOVE_PTE  #define move_pte(pte, prot, old_addr, new_addr)				\  |