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 33... Line 33...
33
#include <arch/interrupt.h>
33
#include <arch/interrupt.h>
34
#include <arch/asm.h>
34
#include <arch/asm.h>
35
#include <config.h>
35
#include <config.h>
36
#include <memstr.h>
36
#include <memstr.h>
37
 
37
 
38
__address bootstrap_dba;
38
static __address bootstrap_dba;
39
 
39
 
40
void page_arch_init(void)
40
void page_arch_init(void)
41
{
41
{
42
    __address dba;
42
    __address dba;
43
    __address cur;
43
    __address cur;
Line 57... Line 57...
57
 
57
 
58
        trap_register(14, page_fault);
58
        trap_register(14, page_fault);
59
        write_cr3(KA2PA(dba));
59
        write_cr3(KA2PA(dba));
60
    }
60
    }
61
    else {
61
    else {
62
        /*
-
 
63
         * Application processors need to create their own view of the
-
 
64
         * virtual address space. Because of that, each AP copies
-
 
65
         * already-initialized paging information from the bootstrap
-
 
66
         * processor and adjusts it to fulfill its needs.
-
 
67
         */
-
 
68
 
-
 
69
        dba = frame_alloc(FRAME_KA | FRAME_PANIC, ONE_FRAME);
-
 
70
        memcpy((void *)dba, (void *)bootstrap_dba , PAGE_SIZE);
-
 
71
        write_cr3(KA2PA(dba));
62
        write_cr3(KA2PA(bootstrap_dba));
72
    }
63
    }
73
}
64
}