XEN: DIRECTMAP_MBYTES
上一篇 /
下一篇 2007-12-12 00:36:28
/ 个人分类:Virtualization
[http://hi.baidu.com/realvm]51Testing软件测试网 ]7h!I e Y+O0^
51Testing软件测试网0X{X [A\在 "./include/asm-x86/config.h" 中 DIRECTMAP_MBYTES 的定义是12, XEN 把线性地址的低12M直接映射物理内存的低12M, 也就是说线性地址 0x00000000 - 0x00C00000 直接映射到物理内存 0x00000000 - 0x00C00000 。51Testing软件测试网K.Q;[9hv'Rv2W
:{T;_)e$~X0下面是 ./arch/x86/boot/x86_32.S 中初始化页表的内容:
:}venxf7m*u$qt0
-ys9e4`
q-pQ0 109 /* Initialize low and high mappings of all memory with 4MB pages */51Testing软件测试网le+g+FQWh
110 mov $idle_pg_table-__PAGE_OFFSET,%edi51Testing软件测试网P%K)G a&@D"T&c
现在还没有页表映射,所以还需要 -__PAGE_OFFSET51Testing软件测试网 t/vJ5I"WJ#T%f#kF-x
51Testing软件测试网||$qU2^.JvUE
111 mov $0xe3,%eax /* PRESENT+RW+A+D+4MB */51Testing软件测试网Y$]~!S
C^7t]
$0xe3 : PS位置1, 说明页大小是4M
I._AZ]051Testing软件测试网N2`(]/@#C5r
112 1: mov %eax,__PAGE_OFFSET>>20(%edi) /* high mapping */51Testing软件测试网;N.e0G/\en{3k
__PAGE_OFFSET>>20 有些困惑,实际上是这样的: __PAGE_OFFSET>>20 就是线性地址51Testing软件测试网/S5J
_U9a~
0xFF000000 的页号0xff0(页大小是4M时,线性地址的低20位是页内偏移),这句话的含义是将51Testing软件测试网S1^:O?)sxnL
0xff0(+ 1, 2 ) 页映射到 物理0(1, 2 )页
.lCZ(C9j3? hp051Testing软件测试网^zTx3L)].GG%F0F(@
113 stosl /* low mapping */
$em"gy;T#J?0
ifj1uD!g;C`re0v0
w*y_l9Q0 114 add $(1<<L2_PAGETABLE_SHIFT),%eax
'i/vI"z
}(zFU0 115 cmp $DIRECTMAP_PHYS_END+0xe3,%eax
avuvXP/S V!U\.]d0 低12M
~#K#\0wX(iAG0
YyQdAq#Ka0 116 jne 1b51Testing软件测试网7xn1C:mBpO
117 1: stosl /* low mappings cover as much physmem as possible */51Testing软件测试网"v@M bVk%jKZb
118 add $(1<<L2_PAGETABLE_SHIFT),%eax51Testing软件测试网 QdY-CM`z
119 cmp $HYPERVISOR_VIRT_START+0xe3,%eax
0Z5?,a8ca{q0 映射到 0XFC000000 止51Testing软件测试网?5y;lt7ONS+N2v%G
UMb2DI+~5g0 120 jne 1b51Testing软件测试网9v0LS9`3l6\ cR
\5f&y-k1z0
Q*C
i+wT2tb9^.Gd%\0
g3b/|!bM0。。。
1L#[ xO)P{K.Nr0
*a+y+lAIdC(j0 154 mov $idle_pg_table-__PAGE_OFFSET,%eax51Testing软件测试网5PvxSM-{
155 mov %eax,%cr3
8R m(}-z/k0 156 mov $0x80050033,%eax /* hi-to-lo: PG,AM,WP,NE,ET,MP,PE */
&x:o'U(~h.R:pF0 157 mov %eax,%cr0
.a;uZ!}"E{dX0 启动页表映射51Testing软件测试网c`? _N+e
|
51Testing软件测试网O"sif4i#B
158 jmp 1f
2_!|(?2rP0 159 1: /* Install relocated selectors (FS/GS unused). */
M-`0UY+RWQ0 160 lgdt gdt_descr
cH9Hu ?w0Cn0 现在就不需要__PAGE_OFFSET了,因为从 0xFF000000 开始的 12M 已经映射到物理地址51Testing软件测试网5lhLe(Zcq*S
0-0x00C00000 上了51Testing软件测试网b7m2]9g
Rb&Q+w5U/`'k
51Testing软件测试网H4\$Mn
^d
161 mov $(__HYPERVISOR_DS),%ecx
Z2e1tp1O3JQ ^
UO
g{051Testing软件测试网6A2b_*BCt|)d5b6|
收藏
举报
TAG:
virtualization
Xen
Virtualization