27,9 → 27,29 |
*/ |
|
#include <arch/mm/page.h> |
#include <arch/mm/tlb.h> |
#include <genarch/mm/page_ht.h> |
#include <mm/frame.h> |
#include <bitops.h> |
|
void page_arch_init(void) |
{ |
page_mapping_operations = &ht_mapping_operations; |
} |
|
__address hw_map(__address physaddr, size_t size) |
{ |
unsigned int order; |
|
if (size <= FRAME_SIZE) |
order = 0; |
else |
order = (fnzb32(size - 1) + 1) - FRAME_WIDTH; |
|
__address virtaddr = PA2KA(PFN2ADDR(frame_alloc(order, FRAME_KA))); |
|
dtlb_insert_mapping(virtaddr, physaddr, PAGESIZE_512K, true, false); |
dtlb_insert_mapping(virtaddr + 512 * 1024, physaddr + 512 * 1024, PAGESIZE_512K, true, false); |
|
return virtaddr; |
} |