Subversion Repositories HelenOS

Rev

Rev 4263 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4263 Rev 4327
Line 60... Line 60...
60
 * @return Virtual address of the page where the device is mapped.
60
 * @return Virtual address of the page where the device is mapped.
61
 *
61
 *
62
 */
62
 */
63
uintptr_t hw_map(uintptr_t physaddr, size_t size)
63
uintptr_t hw_map(uintptr_t physaddr, size_t size)
64
{
64
{
65
    if (last_frame + ALIGN_UP(size, PAGE_SIZE) > KA2PA(KERNEL_ADDRESS_SPACE_END_ARCH))
-
 
66
        panic("Unable to map physical memory %p (%d bytes).", physaddr, size)
-
 
67
   
-
 
68
    uintptr_t virtaddr = PA2KA(last_frame);
-
 
69
    pfn_t i;
-
 
70
    for (i = 0; i < ADDR2PFN(ALIGN_UP(size, PAGE_SIZE)); i++) {
-
 
71
        uintptr_t addr = PFN2ADDR(i);
-
 
72
        page_mapping_insert(AS_KERNEL, virtaddr + addr, physaddr + addr, PAGE_NOT_CACHEABLE | PAGE_WRITE);
-
 
73
    }
-
 
74
   
-
 
75
    last_frame = ALIGN_UP(last_frame + size, FRAME_SIZE);
-
 
76
   
-
 
77
    return virtaddr;
65
    return PA2KA(physaddr);
78
}
66
}
79
 
67
 
80
/** @}
68
/** @}
81
 */
69
 */