Lines Matching refs:ptep
48 pte_t *ptep, int nodat)
61 __ptep_ipte(addr, ptep, opt, asce, IPTE_LOCAL);
63 __ptep_ipte(addr, ptep, 0, 0, IPTE_LOCAL);
68 pte_t *ptep, int nodat)
81 __ptep_ipte(addr, ptep, opt, asce, IPTE_GLOBAL);
83 __ptep_ipte(addr, ptep, 0, 0, IPTE_GLOBAL);
88 unsigned long addr, pte_t *ptep,
93 old = *ptep;
99 ptep_ipte_local(mm, addr, ptep, nodat);
101 ptep_ipte_global(mm, addr, ptep, nodat);
107 unsigned long addr, pte_t *ptep,
112 old = *ptep;
118 pte_val(*ptep) |= _PAGE_INVALID;
121 ptep_ipte_global(mm, addr, ptep, nodat);
126 static inline pgste_t pgste_get_lock(pte_t *ptep)
139 : "=&d" (old), "=&d" (new), "=Q" (ptep[PTRS_PER_PTE])
140 : "Q" (ptep[PTRS_PER_PTE]) : "cc", "memory");
145 static inline void pgste_set_unlock(pte_t *ptep, pgste_t pgste)
151 : "=Q" (ptep[PTRS_PER_PTE])
152 : "d" (pgste_val(pgste)), "Q" (ptep[PTRS_PER_PTE])
157 static inline pgste_t pgste_get(pte_t *ptep)
161 pgste = *(unsigned long *)(ptep + PTRS_PER_PTE);
166 static inline void pgste_set(pte_t *ptep, pgste_t pgste)
169 *(pgste_t *)(ptep + PTRS_PER_PTE) = pgste;
194 static inline void pgste_set_key(pte_t *ptep, pgste_t pgste, pte_t entry,
203 VM_BUG_ON(!(pte_val(*ptep) & _PAGE_INVALID));
216 static inline pgste_t pgste_set_pte(pte_t *ptep, pgste_t pgste, pte_t entry)
235 *ptep = entry;
241 pte_t *ptep, pgste_t pgste)
249 ptep_notify(mm, addr, ptep, bits);
256 unsigned long addr, pte_t *ptep)
261 pgste = pgste_get_lock(ptep);
262 pgste = pgste_pte_notify(mm, addr, ptep, pgste);
268 unsigned long addr, pte_t *ptep,
273 pgste_set_key(ptep, pgste, new, mm);
280 pgste = pgste_set_pte(ptep, pgste, new);
281 pgste_set_unlock(ptep, pgste);
283 *ptep = new;
289 pte_t *ptep, pte_t new)
296 pgste = ptep_xchg_start(mm, addr, ptep);
298 old = ptep_flush_direct(mm, addr, ptep, nodat);
299 old = ptep_xchg_commit(mm, addr, ptep, pgste, old, new);
306 pte_t *ptep, pte_t new)
313 pgste = ptep_xchg_start(mm, addr, ptep);
315 old = ptep_flush_lazy(mm, addr, ptep, nodat);
316 old = ptep_xchg_commit(mm, addr, ptep, pgste, old, new);
323 pte_t *ptep)
331 pgste = ptep_xchg_start(mm, addr, ptep);
333 old = ptep_flush_lazy(mm, addr, ptep, nodat);
336 pgste_set(ptep, pgste);
342 pte_t *ptep, pte_t old_pte, pte_t pte)
350 pgste = pgste_get(ptep);
351 pgste_set_key(ptep, pgste, pte, mm);
352 pgste = pgste_set_pte(ptep, pgste, pte);
353 pgste_set_unlock(ptep, pgste);
355 *ptep = pte;
554 pte_t *ptep;
567 ptep = (pte_t *) pgtable;
568 pte_val(*ptep) = _PAGE_INVALID;
569 ptep++;
570 pte_val(*ptep) = _PAGE_INVALID;
577 pte_t *ptep, pte_t entry)
583 pgste = pgste_get_lock(ptep);
585 pgste_set_key(ptep, pgste, entry, mm);
586 pgste = pgste_set_pte(ptep, pgste, entry);
587 pgste_set_unlock(ptep, pgste);
591 void ptep_set_notify(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
596 pgste = pgste_get_lock(ptep);
598 pgste_set_unlock(ptep, pgste);
606 * @ptep: pointer to the page table entry
614 pte_t *ptep, int prot, unsigned long bit)
620 pgste = pgste_get_lock(ptep);
621 entry = *ptep;
627 pgste_set_unlock(ptep, pgste);
633 ptep_flush_direct(mm, addr, ptep, nodat);
638 ptep_flush_direct(mm, addr, ptep, nodat);
643 pgste = pgste_set_pte(ptep, pgste, entry);
644 pgste_set_unlock(ptep, pgste);
675 void ptep_unshadow_pte(struct mm_struct *mm, unsigned long saddr, pte_t *ptep)
680 pgste = pgste_get_lock(ptep);
683 ptep_flush_direct(mm, saddr, ptep, nodat);
685 pgste = pgste_set_pte(ptep, pgste, __pte(_PAGE_INVALID));
686 pgste_set_unlock(ptep, pgste);
702 pte_t *ptep, int reset)
710 pgste = pgste_get_lock(ptep);
712 pte = *ptep;
717 pte_clear(mm, addr, ptep);
721 pgste_set_unlock(ptep, pgste);
725 void ptep_zap_key(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
732 pgste = pgste_get_lock(ptep);
735 ptev = pte_val(*ptep);
738 pgste_set_unlock(ptep, pgste);
746 pte_t *ptep)
753 pgste = pgste_get_lock(ptep);
756 pte = *ptep;
758 pgste = pgste_pte_notify(mm, addr, ptep, pgste);
760 ptep_ipte_global(mm, addr, ptep, nodat);
765 *ptep = pte;
767 pgste_set_unlock(ptep, pgste);
779 pte_t *ptep;
804 ptep = pte_alloc_map_lock(mm, pmdp, addr, &ptl);
805 if (unlikely(!ptep))
808 new = old = pgste_get_lock(ptep);
814 if (!(pte_val(*ptep) & _PAGE_INVALID)) {
817 paddr = pte_val(*ptep) & PAGE_MASK;
831 pgste_set_unlock(ptep, new);
832 pte_unmap_unlock(ptep, ptl);
881 pte_t *ptep;
903 ptep = pte_alloc_map_lock(mm, pmdp, addr, &ptl);
904 if (unlikely(!ptep))
907 new = old = pgste_get_lock(ptep);
911 if (!(pte_val(*ptep) & _PAGE_INVALID)) {
912 paddr = pte_val(*ptep) & PAGE_MASK;
923 pgste_set_unlock(ptep, new);
924 pte_unmap_unlock(ptep, ptl);
936 pte_t *ptep;
959 ptep = pte_alloc_map_lock(mm, pmdp, addr, &ptl);
960 if (unlikely(!ptep))
963 pgste = pgste_get_lock(ptep);
965 paddr = pte_val(*ptep) & PAGE_MASK;
966 if (!(pte_val(*ptep) & _PAGE_INVALID))
970 pgste_set_unlock(ptep, pgste);
971 pte_unmap_unlock(ptep, ptl);
995 pte_t *ptep;
1005 ptep = get_locked_pte(mm, hva, &ptl);
1006 if (unlikely(!ptep))
1008 pgste = pgste_get_lock(ptep);
1011 *oldpte = pte_val(*ptep);
1025 if (pte_val(*ptep) & _PAGE_INVALID)
1031 if (pte_val(*ptep) & _PAGE_INVALID)
1036 if (!(pte_val(*ptep) & _PAGE_INVALID)) {
1060 if (!(pte_val(*ptep) & _PAGE_INVALID)) {
1078 pgste_set_unlock(ptep, pgste);
1079 pte_unmap_unlock(ptep, ptl);
1100 pte_t *ptep;
1105 ptep = get_locked_pte(mm, hva, &ptl);
1106 if (unlikely(!ptep))
1108 new = pgste_get_lock(ptep);
1113 pgste_set_unlock(ptep, new);
1114 pte_unmap_unlock(ptep, ptl);
1131 pte_t *ptep;
1136 ptep = get_locked_pte(mm, hva, &ptl);
1137 if (unlikely(!ptep))
1139 *pgstep = pgste_val(pgste_get(ptep));
1140 pte_unmap_unlock(ptep, ptl);