MCPcopy Create free account
hub / github.com/F-Stack/f-stack / invlpg_pcid_handler

Function invlpg_pcid_handler

freebsd/amd64/amd64/mp_machdep.c:927–949  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

925}
926
927static void
928invlpg_pcid_handler(pmap_t smp_tlb_pmap, vm_offset_t smp_tlb_addr1)
929{
930 uint64_t kcr3, ucr3;
931 uint32_t pcid;
932
933#ifdef COUNT_XINVLTLB_HITS
934 xhits_pg[PCPU_GET(cpuid)]++;
935#endif /* COUNT_XINVLTLB_HITS */
936#ifdef COUNT_IPIS
937 (*ipi_invlpg_counts[PCPU_GET(cpuid)])++;
938#endif /* COUNT_IPIS */
939
940 invlpg(smp_tlb_addr1);
941 if (smp_tlb_pmap == PCPU_GET(curpmap) &&
942 (ucr3 = smp_tlb_pmap->pm_ucr3) != PMAP_NO_CR3 &&
943 PCPU_GET(ucr3_load_mask) == PMAP_UCR3_NOMASK) {
944 pcid = smp_tlb_pmap->pm_pcids[PCPU_GET(cpuid)].pm_pcid;
945 kcr3 = smp_tlb_pmap->pm_cr3 | pcid | CR3_PCID_SAVE;
946 ucr3 |= pcid | PMAP_PCID_USER_PT | CR3_PCID_SAVE;
947 pmap_pti_pcid_invlpg(ucr3, kcr3, smp_tlb_addr1);
948 }
949}
950
951static void
952invlrng_handler(vm_offset_t smp_tlb_addr1, vm_offset_t smp_tlb_addr2)

Callers 1

invlop_handler_one_reqFunction · 0.85

Calls 1

invlpgFunction · 0.50

Tested by

no test coverage detected