highmem.c 775 B

123456789101112131415161718192021222324252627282930313233343536
  1. // SPDX-License-Identifier: GPL-2.0
  2. // Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
  3. #include <linux/module.h>
  4. #include <linux/highmem.h>
  5. #include <linux/smp.h>
  6. #include <linux/memblock.h>
  7. #include <asm/fixmap.h>
  8. #include <asm/tlbflush.h>
  9. #include <asm/cacheflush.h>
  10. unsigned long highstart_pfn, highend_pfn;
  11. void kmap_flush_tlb(unsigned long addr)
  12. {
  13. flush_tlb_one(addr);
  14. }
  15. EXPORT_SYMBOL(kmap_flush_tlb);
  16. void __init kmap_init(void)
  17. {
  18. unsigned long vaddr;
  19. pgd_t *pgd;
  20. pmd_t *pmd;
  21. pud_t *pud;
  22. pte_t *pte;
  23. vaddr = PKMAP_BASE;
  24. fixrange_init(vaddr, vaddr + PAGE_SIZE*LAST_PKMAP, swapper_pg_dir);
  25. pgd = swapper_pg_dir + pgd_index(vaddr);
  26. pud = (pud_t *)pgd;
  27. pmd = pmd_offset(pud, vaddr);
  28. pte = pte_offset_kernel(pmd, vaddr);
  29. pkmap_page_table = pte;
  30. }