268,27 → 268,11 |
v->present.tag.tag_word = tag; |
} |
|
extern uintptr_t last_frame; |
|
uintptr_t hw_map(uintptr_t physaddr, size_t size) |
uintptr_t hw_map(uintptr_t physaddr, size_t size __attribute__ ((unused))) |
{ |
if (last_frame + ALIGN_UP(size, PAGE_SIZE) > |
KA2PA(KERNEL_ADDRESS_SPACE_END_ARCH)) |
panic("Unable to map physical memory %p (%d bytes)", physaddr, |
size) |
|
uintptr_t virtaddr = PA2KA(last_frame); |
pfn_t i; |
for (i = 0; i < ADDR2PFN(ALIGN_UP(size, PAGE_SIZE)); i++) { |
uintptr_t addr = PFN2ADDR(i); |
page_mapping_insert(AS_KERNEL, virtaddr + addr, physaddr + addr, |
PAGE_NOT_CACHEABLE | PAGE_WRITE); |
/* This is a dirty hack. */ |
return PA2KA(physaddr); |
} |
|
last_frame = ALIGN_UP(last_frame + size, FRAME_SIZE); |
|
return virtaddr; |
} |
|
/** @} |
*/ |