page.h 676 B

123456789101112131415161718192021222324252627
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #include <asm/shmparam.h>
  3. extern void flush_dcache_page(struct page *page);
  4. static inline unsigned long pages_do_alias(unsigned long addr1,
  5. unsigned long addr2)
  6. {
  7. return (addr1 ^ addr2) & (SHMLBA-1);
  8. }
  9. static inline void clear_user_page(void *addr, unsigned long vaddr,
  10. struct page *page)
  11. {
  12. clear_page(addr);
  13. if (pages_do_alias((unsigned long) addr, vaddr & PAGE_MASK))
  14. flush_dcache_page(page);
  15. }
  16. static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
  17. struct page *page)
  18. {
  19. copy_page(to, from);
  20. if (pages_do_alias((unsigned long) to, vaddr & PAGE_MASK))
  21. flush_dcache_page(page);
  22. }