Rev 726 | Rev 746 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 726 | Rev 728 | ||
---|---|---|---|
Line 27... | Line 27... | ||
27 | */ |
27 | */ |
28 | 28 | ||
29 | #include <arch/mm/page.h> |
29 | #include <arch/mm/page.h> |
30 | #include <arch/types.h> |
30 | #include <arch/types.h> |
31 | #include <genarch/mm/page_ht.h> |
31 | #include <genarch/mm/page_ht.h> |
- | 32 | #include <print.h> |
|
32 | #include <mm/page.h> |
33 | #include <mm/page.h> |
33 | #include <config.h> |
34 | #include <config.h> |
34 | #include <panic.h> |
35 | #include <panic.h> |
35 | 36 | ||
36 | __u64 thash(__u64 va); |
37 | __u64 thash(__u64 va); |
Line 62... | Line 63... | ||
62 | } |
63 | } |
63 | 64 | ||
64 | 65 | ||
65 | static void set_VHPT_environment(void) |
66 | static void set_VHPT_environment(void) |
66 | { |
67 | { |
67 | return; |
68 | |
68 | 69 | ||
69 | /* |
70 | /* |
70 | TODO: |
71 | TODO: |
71 | */ |
72 | */ |
72 | 73 | ||
Line 79... | Line 80... | ||
79 | rr.map.ps=PAGE_WIDTH; |
80 | rr.map.ps=PAGE_WIDTH; |
80 | rr.map.rid=REGION_RID_MAIN; |
81 | rr.map.rid=REGION_RID_MAIN; |
81 | 82 | ||
82 | asm |
83 | asm |
83 | ( |
84 | ( |
- | 85 | ";;\n" |
|
- | 86 | "srlz.i;;\n" |
|
- | 87 | "srlz.d;;\n" |
|
84 | "mov rr[r0]=%0;;" |
88 | "{mov rr[r0]=%0};;\n" |
- | 89 | "srlz.i;;\n" |
|
- | 90 | "srlz.d;;\n" |
|
- | 91 | ";;\n" |
|
85 | : |
92 | : |
86 | :"r"(rr.word) |
93 | :"r"(rr.word) |
87 | ); |
94 | ); |
- | 95 | ||
88 | 96 | ||
89 | /* And Invalidate the rest of REGION REGISTERS */ |
97 | /* And Invalidate the rest of REGION REGISTERS */ |
90 | - | ||
91 | for(i=1;i<REGION_REGISTERS;i++) |
98 | for(i=1;i<REGION_REGISTERS;i++) |
92 | { |
99 | { |
93 | rr.map.rid=REGION_RID_FIRST_INVALID+i-1; |
100 | rr.map.rid=REGION_RID_FIRST_INVALID+i-1; |
94 | asm |
101 | asm |
95 | ( |
102 | ( |
- | 103 | ";;\n" |
|
96 | "mov r8=%1;;" |
104 | /* "mov r8=%1;;\n"*/ |
97 | "mov rr[r8]=%0;;" |
105 | /* "mov rr[r8]=%0;;\n"*/ |
- | 106 | "srlz.i;;\n" |
|
- | 107 | "srlz.d;;\n" |
|
- | 108 | "{mov rr[%1]=%0};;\n" |
|
- | 109 | "srlz.i;;\n" |
|
- | 110 | "srlz.d;;\n" |
|
98 | : |
111 | : |
99 | :"r"(rr.word),"r"(i) |
112 | :"r"(rr.word),"r"(i) |
100 | :"r8" |
113 | :"r8" |
101 | ); |
114 | ); |
102 | }; |
115 | }; |
103 | 116 | ||
- | 117 | ||
- | 118 | ||
104 | PTA_register pta; |
119 | PTA_register pta; |
105 | pta.map.ve=0; /*Disable Walker*/ |
120 | pta.map.ve=0; /*Disable Walker*/ |
106 | pta.map.vf=1; /*Large entry format*/ |
121 | pta.map.vf=1; /*Large entry format*/ |
107 | pta.map.size=VHPT_WIDTH; |
122 | pta.map.size=VHPT_WIDTH; |
108 | pta.map.base=VHPT_BASE; |
123 | pta.map.base=VHPT_BASE; |
109 | 124 | ||
- | 125 | return ; |
|
- | 126 | ||
- | 127 | printf("pta struct size:%d\n",sizeof(pta)); |
|
110 | 128 | ||
111 | /*Write PTA*/ |
129 | /*Write PTA*/ |
112 | asm |
130 | asm |
113 | ( |
131 | ( |
114 | "mov cr8=%0;;" |
132 | "mov cr8=%0;;" |
115 | : |
133 | : |
116 | :"r"(pta.word) |
134 | :"r"(pta.word) |
117 | ); |
135 | ); |
118 | 136 | return ; |
|
119 | } |
137 | } |
120 | 138 | ||
121 | 139 | ||
122 | void page_arch_init(void) |
140 | void page_arch_init(void) |
123 | { |
141 | { |