Subversion Repositories HelenOS

Rev

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

Rev 2725 Rev 3104
Line 67... Line 67...
67
extern void xen_failsafe_callback(void);
67
extern void xen_failsafe_callback(void);
68
 
68
 
69
void arch_pre_main(void)
69
void arch_pre_main(void)
70
{
70
{
71
    pte_t pte;
71
    pte_t pte;
72
    memsetb((uintptr_t) &pte, sizeof(pte), 0);
72
    memsetb(&pte, sizeof(pte), 0);
73
   
73
   
74
    pte.present = 1;
74
    pte.present = 1;
75
    pte.writeable = 1;
75
    pte.writeable = 1;
76
    pte.frame_address = ADDR2PFN((uintptr_t) start_info.shared_info);
76
    pte.frame_address = ADDR2PFN((uintptr_t) start_info.shared_info);
77
    ASSERT(xen_update_va_mapping(&shared_info, pte, UVMF_INVLPG) == 0);
77
    ASSERT(xen_update_va_mapping(&shared_info, pte, UVMF_INVLPG) == 0);
Line 101... Line 101...
101
        if ((PTL0_INDEX(va) != last_ptl0) && (GET_PTL1_FLAGS(start_info.ptl0, PTL0_INDEX(va)) & PAGE_NOT_PRESENT)) {
101
        if ((PTL0_INDEX(va) != last_ptl0) && (GET_PTL1_FLAGS(start_info.ptl0, PTL0_INDEX(va)) & PAGE_NOT_PRESENT)) {
102
            /* New page directory entry needed */
102
            /* New page directory entry needed */
103
            uintptr_t tpa = PFN2ADDR(meminfo.start + meminfo.reserved);
103
            uintptr_t tpa = PFN2ADDR(meminfo.start + meminfo.reserved);
104
            uintptr_t tva = PA2KA(tpa);
104
            uintptr_t tva = PA2KA(tpa);
105
           
105
           
106
            memsetb(tva, PAGE_SIZE, 0);
106
            memsetb((void *) tva, PAGE_SIZE, 0);
107
           
107
           
108
            pte_t *tptl3 = (pte_t *) PA2KA(GET_PTL1_ADDRESS(start_info.ptl0, PTL0_INDEX(tva)));
108
            pte_t *tptl3 = (pte_t *) PA2KA(GET_PTL1_ADDRESS(start_info.ptl0, PTL0_INDEX(tva)));
109
            SET_FRAME_ADDRESS(tptl3, PTL3_INDEX(tva), 0);
109
            SET_FRAME_ADDRESS(tptl3, PTL3_INDEX(tva), 0);
110
            SET_PTL1_ADDRESS(start_info.ptl0, PTL0_INDEX(va), tpa);
110
            SET_PTL1_ADDRESS(start_info.ptl0, PTL0_INDEX(va), tpa);
111
            SET_FRAME_ADDRESS(tptl3, PTL3_INDEX(tva), tpa);
111
            SET_FRAME_ADDRESS(tptl3, PTL3_INDEX(tva), tpa);