XEN: DIRECTMAP_MBYTES
上一篇 /
下一篇 2007-12-12 00:36:28
/ 个人分类:Virtualization
[http://hi.baidu.com/realvm]51Testing软件测试网0rww,zzN4m[v
51Testing软件测试网
yaqBmu$ksn在 "./include/asm-x86/config.h" 中 DIRECTMAP_MBYTES 的定义是12, XEN 把线性地址的低12M直接映射物理内存的低12M, 也就是说线性地址 0x00000000 - 0x00C00000 直接映射到物理内存 0x00000000 - 0x00C00000 。
cs&fF
lbMu(quM0
?r)Sx/]%G \0下面是 ./arch/x86/boot/x86_32.S 中初始化页表的内容:51Testing软件测试网,ae1H!?y _I
51Testing软件测试网yD"IN y?D
109 /* Initialize low and high mappings of all memory with 4MB pages */
zpD0F9|0 110 mov $idle_pg_table-__PAGE_OFFSET,%edi51Testing软件测试网.rK'V.v#db:NF)y_4O
现在还没有页表映射,所以还需要 -__PAGE_OFFSET
Y%O
B?q E Yk
\051Testing软件测试网6JN e }'`_-{8iZ
111 mov $0xe3,%eax /* PRESENT+RW+A+D+4MB */51Testing软件测试网+P/~'x7h'b}
$0xe3 : PS位置1, 说明页大小是4M51Testing软件测试网[tY'__
{RD4c%yH/He2U t0 112 1: mov %eax,__PAGE_OFFSET>>20(%edi) /* high mapping */
Z;Z)b9ax&kn`0 __PAGE_OFFSET>>20 有些困惑,实际上是这样的: __PAGE_OFFSET>>20 就是线性地址51Testing软件测试网E
O
Tk`
0xFF000000 的页号0xff0(页大小是4M时,线性地址的低20位是页内偏移),这句话的含义是将
wys+D)C*s1D!A7F0 0xff0(+ 1, 2 ) 页映射到 物理0(1, 2 )页
_/XW{;I+j S!n0
TT)O"{\0 113 stosl /* low mapping */51Testing软件测试网(a(LSu"O&hNK2sm
51Testing软件测试网C3`7kjSC
51Testing软件测试网}I6D.w9fc([1^a;l
114 add $(1<<L2_PAGETABLE_SHIFT),%eax
M}
K
I#dQu-a0 115 cmp $DIRECTMAP_PHYS_END+0xe3,%eax51Testing软件测试网:_k:V8i\$~O{
低12M51Testing软件测试网8[j4How-e(hJ
51Testing软件测试网!Gs4nJT
116 jne 1b51Testing软件测试网ltx3fQE/j"z
117 1: stosl /* low mappings cover as much physmem as possible */
9c6bi"ecb5Q\0 118 add $(1<<L2_PAGETABLE_SHIFT),%eax51Testing软件测试网2\*B/KiCt8SY
119 cmp $HYPERVISOR_VIRT_START+0xe3,%eax51Testing软件测试网 es b/M bKhK
映射到 0XFC000000 止51Testing软件测试网5J'pw(p0k4j
8C#QE)KKHEK0p!v0W0 120 jne 1b51Testing软件测试网;dkc$o#n-}
9M#X8sk9f-Z'G'L,r%c0
4L h-v+fzR*`0
K
kSE?.A8^E0L0。。。51Testing软件测试网I8MnLT+~
51Testing软件测试网NUNSxC!Cvh|!bu
154 mov $idle_pg_table-__PAGE_OFFSET,%eax51Testing软件测试网P#P@*pn$z.AX;JC9m
155 mov %eax,%cr351Testing软件测试网n5q.{4U's)Hyn?4j
156 mov $0x80050033,%eax /* hi-to-lo: PG,AM,WP,NE,ET,MP,PE */51Testing软件测试网X-uAF0G
157 mov %eax,%cr0
z:c%X @W\z9F0 启动页表映射51Testing软件测试网M+Z}rtSbOA`)E
fm2P]&XC#~ D0 158 jmp 1f
iJ5P Vi9s0 159 1: /* Install relocated selectors (FS/GS unused). */
h[}Q9J0|+c0 160 lgdt gdt_descr51Testing软件测试网)r2P6T|L r1L(i
现在就不需要__PAGE_OFFSET了,因为从 0xFF000000 开始的 12M 已经映射到物理地址51Testing软件测试网#au)I!`;E2Kkb
0-0x00C00000 上了
9W
qFJ"e$U5}051Testing软件测试网8}8Mx9fGq?K
161 mov $(__HYPERVISOR_DS),%ecx
L)B~p0gwy0y0
A
w6~&ay0R:sZ,K0
收藏
举报
TAG:
virtualization
Xen
Virtualization