Changeset a1b9f63 in mainline for kernel/generic/src/mm/km.c
- Timestamp:
- 2018-08-31T10:32:40Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6bf5b8c
- Parents:
- b1834a01
- git-author:
- Jakub Jermar <jakub@…> (2018-08-31 09:54:11)
- git-committer:
- Jakub Jermar <jakub@…> (2018-08-31 10:32:40)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/mm/km.c
rb1834a01 ra1b9f63 130 130 131 131 static uintptr_t 132 km_map_aligned(uintptr_t paddr, size_t size, unsigned int flags)132 km_map_aligned(uintptr_t paddr, size_t size, size_t align, unsigned int flags) 133 133 { 134 134 uintptr_t vaddr; 135 size_t align;136 135 uintptr_t offs; 136 137 if (align == KM_NATURAL_ALIGNMENT) 138 align = ispwr2(size) ? size : (1U << (fnzb(size) + 1)); 137 139 138 140 assert(ALIGN_DOWN(paddr, FRAME_SIZE) == paddr); 139 141 assert(ALIGN_UP(size, FRAME_SIZE) == size); 140 141 /* Enforce natural or at least PAGE_SIZE alignment. */ 142 align = ispwr2(size) ? size : (1U << (fnzb(size) + 1));142 assert(ispwr2(align)); 143 144 /* Enforce at least PAGE_SIZE alignment. */ 143 145 vaddr = km_page_alloc(size, max(PAGE_SIZE, align)); 144 146 … … 185 187 * @return New virtual address mapped to paddr. 186 188 */ 187 uintptr_t km_map(uintptr_t paddr, size_t size, unsigned int flags)189 uintptr_t km_map(uintptr_t paddr, size_t size, size_t align, unsigned int flags) 188 190 { 189 191 uintptr_t page; … … 192 194 offs = paddr - ALIGN_DOWN(paddr, FRAME_SIZE); 193 195 page = km_map_aligned(ALIGN_DOWN(paddr, FRAME_SIZE), 194 ALIGN_UP(size + offs, FRAME_SIZE), flags);196 ALIGN_UP(size + offs, FRAME_SIZE), align, flags); 195 197 196 198 return page + offs; … … 256 258 frame = frame_alloc(1, FRAME_HIGHMEM | FRAME_ATOMIC | flags, 0); 257 259 if (frame) { 258 page = km_map(frame, PAGE_SIZE, 260 page = km_map(frame, PAGE_SIZE, PAGE_SIZE, 259 261 PAGE_READ | PAGE_WRITE | PAGE_CACHEABLE); 260 262 if (!page) {
Note:
See TracChangeset
for help on using the changeset viewer.