Changes in kernel/generic/src/mm/page.c [d4673296:2107e79] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/mm/page.c
rd4673296 r2107e79 65 65 #include <arch/mm/asid.h> 66 66 #include <mm/as.h> 67 #include <mm/km.h> 67 68 #include <mm/frame.h> 68 69 #include <arch/barrier.h> … … 75 76 #include <errno.h> 76 77 #include <align.h> 78 #include <macros.h> 79 #include <bitops.h> 77 80 78 81 /** Virtual operations for page subsystem. */ … … 190 193 } 191 194 195 uintptr_t hw_map(uintptr_t physaddr, size_t size) 196 { 197 uintptr_t virtaddr; 198 size_t asize; 199 size_t align; 200 pfn_t i; 201 202 asize = ALIGN_UP(size, PAGE_SIZE); 203 align = ispwr2(size) ? size : (1U << (fnzb(size) + 1)); 204 virtaddr = km_page_alloc(asize, max(PAGE_SIZE, align)); 205 206 page_table_lock(AS_KERNEL, true); 207 for (i = 0; i < ADDR2PFN(asize); i++) { 208 uintptr_t addr = PFN2ADDR(i); 209 page_mapping_insert(AS_KERNEL, virtaddr + addr, physaddr + addr, 210 PAGE_NOT_CACHEABLE | PAGE_WRITE); 211 } 212 page_table_unlock(AS_KERNEL, true); 213 214 return virtaddr; 215 } 216 192 217 int page_find_mapping(uintptr_t virt, void **phys) 193 218 {
Note:
See TracChangeset
for help on using the changeset viewer.