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

Function pmap_pkru_same

freebsd/amd64/amd64/pmap.c:10926–10953  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10924}
10925
10926static bool
10927pmap_pkru_same(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
10928{
10929 struct pmap_pkru_range *ppr, *prev_ppr;
10930 vm_offset_t va;
10931
10932 PMAP_LOCK_ASSERT(pmap, MA_OWNED);
10933 if (pmap->pm_type != PT_X86 ||
10934 (cpu_stdext_feature2 & CPUID_STDEXT2_PKU) == 0 ||
10935 sva >= VM_MAXUSER_ADDRESS)
10936 return (true);
10937 MPASS(eva <= VM_MAXUSER_ADDRESS);
10938 for (va = sva; va < eva; prev_ppr = ppr) {
10939 ppr = rangeset_lookup(&pmap->pm_pkru, va);
10940 if (va == sva)
10941 prev_ppr = ppr;
10942 else if ((ppr == NULL) ^ (prev_ppr == NULL))
10943 return (false);
10944 if (ppr == NULL) {
10945 va += PAGE_SIZE;
10946 continue;
10947 }
10948 if (prev_ppr->pkru_keyidx != ppr->pkru_keyidx)
10949 return (false);
10950 va = ppr->pkru_rs_el.re_end;
10951 }
10952 return (true);
10953}
10954
10955static pt_entry_t
10956pmap_pkru_get(pmap_t pmap, vm_offset_t va)

Callers 2

pmap_enter_largepageFunction · 0.85
pmap_enter_pdeFunction · 0.85

Calls 1

rangeset_lookupFunction · 0.85

Tested by

no test coverage detected