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

Function pmap_steal_memory

freebsd/mips/mips/pmap.c:396–425  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

394}
395
396vm_offset_t
397pmap_steal_memory(vm_size_t size)
398{
399 vm_paddr_t bank_size, pa;
400 vm_offset_t va;
401
402 size = round_page(size);
403 bank_size = phys_avail[1] - phys_avail[0];
404 while (size > bank_size) {
405 int i;
406
407 for (i = 0; phys_avail[i + 2]; i += 2) {
408 phys_avail[i] = phys_avail[i + 2];
409 phys_avail[i + 1] = phys_avail[i + 3];
410 }
411 phys_avail[i] = 0;
412 phys_avail[i + 1] = 0;
413 if (!phys_avail[0])
414 panic("pmap_steal_memory: out of memory");
415 bank_size = phys_avail[1] - phys_avail[0];
416 }
417
418 pa = phys_avail[0];
419 phys_avail[0] += size;
420 if (MIPS_DIRECT_MAPPABLE(pa) == 0)
421 panic("Out of memory below 512Meg?");
422 va = MIPS_PHYS_TO_DIRECT(pa);
423 bzero((caddr_t)va, size);
424 return (va);
425}
426
427/*
428 * Bootstrap the system enough to run with virtual memory. This

Callers 3

pmap_bootstrapFunction · 0.85
mips_proc0_initFunction · 0.85

Calls 2

bzeroFunction · 0.85
panicFunction · 0.50

Tested by

no test coverage detected