Subversion Repositories HelenOS

Rev

Rev 1809 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1809 Rev 1816
Line 75... Line 75...
75
    }
75
    }
76
 
76
 
77
    paging_on();
77
    paging_on();
78
}
78
}
79
 
79
 
80
 
-
 
81
uintptr_t hw_map(uintptr_t physaddr, size_t size)
-
 
82
{
-
 
83
    if (last_frame + ALIGN_UP(size, PAGE_SIZE) > KA2PA(KERNEL_ADDRESS_SPACE_END_ARCH))
-
 
84
        panic("Unable to map physical memory %p (%d bytes)", physaddr, size)
-
 
85
   
-
 
86
    uintptr_t virtaddr = PA2KA(last_frame);
-
 
87
    pfn_t i;
-
 
88
    for (i = 0; i < ADDR2PFN(ALIGN_UP(size, PAGE_SIZE)); i++)
-
 
89
        page_mapping_insert(AS_KERNEL, virtaddr + PFN2ADDR(i), physaddr + PFN2ADDR(i), PAGE_NOT_CACHEABLE);
-
 
90
   
-
 
91
    last_frame = ALIGN_UP(last_frame + size, FRAME_SIZE);
-
 
92
   
-
 
93
    return virtaddr;
-
 
94
}
-
 
95
 
-
 
96
void page_fault(int n, istate_t *istate)
80
void page_fault(int n, istate_t *istate)
97
{
81
{
98
        uintptr_t page;
82
    uintptr_t page;
99
    pf_access_t access;
83
    pf_access_t access;
100
   
84