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

Function pmap_kremove_device

freebsd/arm64/arm64/pmap.c:1512–1536  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1510}
1511
1512void
1513pmap_kremove_device(vm_offset_t sva, vm_size_t size)
1514{
1515 pt_entry_t *pte;
1516 vm_offset_t va;
1517 int lvl;
1518
1519 KASSERT((sva & L3_OFFSET) == 0,
1520 ("pmap_kremove_device: Invalid virtual address"));
1521 KASSERT((size & PAGE_MASK) == 0,
1522 ("pmap_kremove_device: Mapping is not page-sized"));
1523
1524 va = sva;
1525 while (size != 0) {
1526 pte = pmap_pte(kernel_pmap, va, &lvl);
1527 KASSERT(pte != NULL, ("Invalid page table, va: 0x%lx", va));
1528 KASSERT(lvl == 3,
1529 ("Invalid device pagetable level: %d != 3", lvl));
1530 pmap_clear(pte);
1531
1532 va += PAGE_SIZE;
1533 size -= PAGE_SIZE;
1534 }
1535 pmap_invalidate_range(kernel_pmap, sva, va);
1536}
1537
1538/*
1539 * Used to map a range of physical addresses into kernel

Callers

nothing calls this directly

Calls 2

pmap_pteFunction · 0.70
pmap_invalidate_rangeFunction · 0.70

Tested by

no test coverage detected