Merge tag 'x86_shstk_for_6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[sfrench/cifs-2.6.git] / arch / nios2 / include / asm / pgtable.h
index cf1ffbc1a121d471f89646a4df2a95076c107464..5144506dfa693270523e52e2ae95674c311fa3fc 100644 (file)
@@ -178,14 +178,21 @@ static inline void set_pte(pte_t *ptep, pte_t pteval)
        *ptep = pteval;
 }
 
-static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
-                             pte_t *ptep, pte_t pteval)
+static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
+               pte_t *ptep, pte_t pte, unsigned int nr)
 {
-       unsigned long paddr = (unsigned long)page_to_virt(pte_page(pteval));
-
-       flush_dcache_range(paddr, paddr + PAGE_SIZE);
-       set_pte(ptep, pteval);
+       unsigned long paddr = (unsigned long)page_to_virt(pte_page(pte));
+
+       flush_dcache_range(paddr, paddr + nr * PAGE_SIZE);
+       for (;;) {
+               set_pte(ptep, pte);
+               if (--nr == 0)
+                       break;
+               ptep++;
+               pte_val(pte) += 1;
+       }
 }
+#define set_ptes set_ptes
 
 static inline int pmd_none(pmd_t pmd)
 {
@@ -202,7 +209,7 @@ static inline void pte_clear(struct mm_struct *mm,
 
        pte_val(null) = (addr >> PAGE_SHIFT) & 0xf;
 
-       set_pte_at(mm, addr, ptep, null);
+       set_pte(ptep, null);
 }
 
 /*
@@ -273,7 +280,10 @@ static inline pte_t pte_swp_clear_exclusive(pte_t pte)
 extern void __init paging_init(void);
 extern void __init mmu_init(void);
 
-extern void update_mmu_cache(struct vm_area_struct *vma,
-                            unsigned long address, pte_t *pte);
+void update_mmu_cache_range(struct vm_fault *vmf, struct vm_area_struct *vma,
+               unsigned long address, pte_t *ptep, unsigned int nr);
+
+#define update_mmu_cache(vma, addr, ptep) \
+       update_mmu_cache_range(NULL, vma, addr, ptep, 1)
 
 #endif /* _ASM_NIOS2_PGTABLE_H */