Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/mm/km.c

    r1ccd0aa rf7f47a7  
    4646#include <debug.h>
    4747#include <arch.h>
    48 #include <align.h>
    49 #include <macros.h>
    50 #include <bitops.h>
    5148
    5249static ra_arena_t *km_ni_arena;
     
    123120        ra_free(km_ni_arena, page, size);
    124121}
    125 
    126 uintptr_t km_map(uintptr_t paddr, size_t size, unsigned int flags)
    127 {
    128         uintptr_t vaddr;
    129         size_t asize;
    130         size_t align;
    131         uintptr_t offs;
    132 
    133         asize = ALIGN_UP(size, PAGE_SIZE);
    134         align = ispwr2(size) ? size : (1U << (fnzb(size) + 1));
    135         vaddr = km_page_alloc(asize, max(PAGE_SIZE, align));
    136 
    137         page_table_lock(AS_KERNEL, true);
    138         for (offs = 0; offs < asize; offs += PAGE_SIZE) {
    139                 page_mapping_insert(AS_KERNEL, vaddr + offs, paddr + offs,
    140                     flags);
    141         }
    142         page_table_unlock(AS_KERNEL, true);
    143        
    144         return vaddr;
    145 }
    146 
    147122
    148123/** Unmap kernen non-identity page.
     
    190165            FRAME_HIGHMEM | FRAME_ATOMIC | flags);
    191166        if (frame) {
    192                 page = km_map(frame, PAGE_SIZE,
    193                     PAGE_READ | PAGE_WRITE | PAGE_CACHEABLE);
     167                page = km_page_alloc(PAGE_SIZE, PAGE_SIZE);
    194168                ASSERT(page);   // FIXME
     169                page_table_lock(AS_KERNEL, true);
     170                page_mapping_insert(AS_KERNEL, page, frame,
     171                    PAGE_CACHEABLE | PAGE_READ | PAGE_WRITE);
     172                page_table_unlock(AS_KERNEL, true);
    195173        } else {
    196174                frame = (uintptr_t) frame_alloc_noreserve(ONE_FRAME,
Note: See TracChangeset for help on using the changeset viewer.