Changeset 70922c2 in mainline for kernel/generic/src/mm/page.c


Ignore:
Timestamp:
2012-02-01T00:09:22Z (12 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ffcc5776
Parents:
cb3dbb63 (diff), 3d4750f (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Mainline changes.

File:
1 edited

Legend:

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

    rcb3dbb63 r70922c2  
    6565#include <arch/mm/asid.h>
    6666#include <mm/as.h>
    67 #include <mm/km.h>
    6867#include <mm/frame.h>
    6968#include <arch/barrier.h>
     
    7675#include <errno.h>
    7776#include <align.h>
    78 #include <macros.h>
    79 #include <bitops.h>
    8077
    8178/** Virtual operations for page subsystem. */
     
    8582{
    8683        page_arch_init();
    87 }
    88 
    89 /** Map memory structure
    90  *
    91  * Identity-map memory structure
    92  * considering possible crossings
    93  * of page boundaries.
    94  *
    95  * @param addr Address of the structure.
    96  * @param size Size of the structure.
    97  *
    98  */
    99 void map_structure(uintptr_t addr, size_t size)
    100 {
    101         size_t length = size + (addr - (addr & ~(PAGE_SIZE - 1)));
    102         size_t cnt = length / PAGE_SIZE + (length % PAGE_SIZE > 0);
    103        
    104         size_t i;
    105         for (i = 0; i < cnt; i++)
    106                 page_mapping_insert(AS_KERNEL, addr + i * PAGE_SIZE,
    107                     addr + i * PAGE_SIZE, PAGE_NOT_CACHEABLE | PAGE_WRITE);
    108        
    109         /* Repel prefetched accesses to the old mapping. */
    110         memory_barrier();
    11184}
    11285
     
    193166}
    194167
    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 
    217168int page_find_mapping(uintptr_t virt, void **phys)
    218169{
Note: See TracChangeset for help on using the changeset viewer.