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 。
c s&f F 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位是页内偏移),这句话的含义是将
wy s+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软件测试网NUNSx C!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}rtSb OA`)E

fm2P]&XC#~ D0    158         jmp     1f
iJ5PVi9s0    159 1:      /* Install relocated selectors (FS/GS unused). */
h[}Q9J0|+c0    160         lgdt    gdt_descr51Testing软件测试网)r2P6T| Lr1L(i
                   现在就不需要__PAGE_OFFSET了,因为从 0xFF000000 开始的 12M 已经映射到物理地址51Testing软件测试网#au)I!`;E2K k b
                   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

 

评分:0

我来说两句

Open Toolbar