Subversion Repositories HelenOS

Rev

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

Rev 548 Rev 566
Line 38... Line 38...
38
#include <synch/spinlock.h>
38
#include <synch/spinlock.h>
39
#include <debug.h>
39
#include <debug.h>
40
#include <memstr.h>
40
#include <memstr.h>
41
#include <print.h>
41
#include <print.h>
42
 
42
 
43
__address bootstrap_dba;
43
static __address bootstrap_dba;
44
 
44
 
45
void page_arch_init(void)
45
void page_arch_init(void)
46
{
46
{
47
    __address dba;
47
    __address dba;
48
    __address cur;
48
    __address cur;
Line 61... Line 61...
61
 
61
 
62
        trap_register(14, page_fault);
62
        trap_register(14, page_fault);
63
        write_cr3(KA2PA(dba));
63
        write_cr3(KA2PA(dba));
64
    }
64
    }
65
    else {
65
    else {
66
        /*
-
 
67
         * Application processors need to create their own view of the
-
 
68
         * virtual address space. Because of that, each AP copies
-
 
69
         * already-initialized paging information from the bootstrap
-
 
70
         * processor and adjusts it to fulfill its needs.
-
 
71
         */
-
 
72
 
-
 
73
        dba = frame_alloc(FRAME_KA | FRAME_PANIC, ONE_FRAME);
-
 
74
        memcpy((void *)dba, (void *)bootstrap_dba , PAGE_SIZE);
-
 
75
        write_cr3(KA2PA(dba));
66
        write_cr3(KA2PA(bootstrap_dba));
76
    }
67
    }
77
 
68
 
78
    paging_on();
69
    paging_on();
79
}
70
}