Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2338 → Rev 2339

/branches/arm/boot/arch/arm32/loader/mm.c
47,7 → 47,7
*
* @note If #frame is not 1MB aligned, first lower 1MB aligned frame will be used.
*/
static void init_pte_level0_section(pte_level0_section_t* pte, unsigned frame)
static void init_pte_level0_section(pte_level0_section_t* pte, unsigned int frame)
{
pte->descriptor_type = PTE_DESCRIPTOR_SECTION;
pte->bufferable = 0;
57,7 → 57,7
pte->should_be_zero_1 = 0;
pte->access_permission = PTE_AP_USER_NO_KERNEL_RW;
pte->should_be_zero_2 = 0;
pte->section_base_addr = (frame << FRAME_WIDTH) >> 20;
pte->section_base_addr = frame;
}
 
 
65,17 → 65,17
static void init_page_table(void)
{
int i;
const unsigned int first_kernel_section = ADDR2PFN(PA2KA(0)) / FRAMES_PER_SECTION;
const unsigned int first_kernel_page = ADDR2PFN(PA2KA(0));
 
// create 1:1 virtual-physical mapping (in lower 2GB)
for (i = 0; i < first_kernel_section; i++) {
init_pte_level0_section(&page_table[i], i * FRAMES_PER_SECTION);
for (i = 0; i < first_kernel_page; i++) {
init_pte_level0_section(&page_table[i], i);
}
 
// create 1:1 virtual-physical mapping in kernel space (upper 2GB),
// physical addresses start from 0
for (i = first_kernel_section; i < PTL0_ENTRIES; i++) {
init_pte_level0_section(&page_table[i], (i - first_kernel_section) * FRAMES_PER_SECTION);
for (i = first_kernel_page; i < PTL0_ENTRIES; i++) {
init_pte_level0_section(&page_table[i], i - first_kernel_page);
}
}