Subversion Repositories HelenOS-historic

Rev

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

Rev 684 Rev 715
Line 30... Line 30...
30
#include <genarch/mm/page_ht.h>
30
#include <genarch/mm/page_ht.h>
31
#include <mm/page.h>
31
#include <mm/page.h>
32
#include <config.h>
32
#include <config.h>
33
#include <panic.h>
33
#include <panic.h>
34
 
34
 
-
 
35
 
-
 
36
static void set_VHPT_environment(void)
-
 
37
{
-
 
38
    /*
-
 
39
    TODO:
-
 
40
    */
-
 
41
   
-
 
42
    int i;
-
 
43
   
-
 
44
    /* First set up REGION REGISTER 0 */
-
 
45
   
-
 
46
    region_register rr;
-
 
47
    rr.map.ve=0;                  /*Disable Walker*/
-
 
48
    rr.map.ps=PAGE_WIDTH;
-
 
49
    rr.map.rid=REGION_RID_MAIN;
-
 
50
   
-
 
51
    asm
-
 
52
    (
-
 
53
        "mov rr[r0]=%0;;"
-
 
54
        :
-
 
55
        :"r"(rr.word)
-
 
56
    );
-
 
57
       
-
 
58
    /* And Invalidate the rest of REGION REGISTERS */
-
 
59
   
-
 
60
    for(i=1;i<REGION_REGISTERS;i++)
-
 
61
    {
-
 
62
        rr.map.rid=REGION_RID_FIRST_INVALID+i-1;
-
 
63
        asm
-
 
64
        (
-
 
65
            "mov r8=%1;;"
-
 
66
            "mov rr[r8]=%0;;"
-
 
67
            :
-
 
68
            :"r"(rr.word),"r"(i)
-
 
69
            :"r8"
-
 
70
        );
-
 
71
    };
-
 
72
 
-
 
73
    PTA_register pta;
-
 
74
    pta.map.ve=0;                   /*Disable Walker*/
-
 
75
    pta.map.vf=1;                   /*Large entry format*/
-
 
76
    pta.map.size=VHPT_WIDTH;
-
 
77
    pta.map.base=VHPT_BASE;
-
 
78
   
-
 
79
   
-
 
80
    /*Write PTA*/
-
 
81
    asm
-
 
82
    (
-
 
83
        "mov cr8=%0;;"
-
 
84
        :
-
 
85
        :"r"(pta.word)
-
 
86
    ); 
-
 
87
   
-
 
88
}  
-
 
89
 
-
 
90
 
35
void page_arch_init(void)
91
void page_arch_init(void)
36
{
92
{
37
    page_operations = &page_ht_operations;
93
    page_operations = &page_ht_operations;
-
 
94
    set_VHPT_environment();
38
}
95
}