XEN: DIRECTMAP_MBYTES

上一篇 / 下一篇  2007-12-12 00:36:28 / 个人分类:Virtualization

[http://hi.baidu.com/realvm]51Testing软件测试网 ]7h!Ie 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)Ga&@D"T&c
                   现在还没有页表映射,所以还需要 -__PAGE_OFFSET51Testing软件测试网 t/vJ5I"W J#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 }(z FU0    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软件测试网 Qd Y-CM`z
    119         cmp     $HYPERVISOR_VIRT_START+0xe3,%eax
0Z5?,a8ca{q0                   映射到 0XFC000000 止51Testing软件测试网 ?5y;lt7O NS+N2v%G

UMb2DI+~5g0    120         jne     1b51Testing软件测试网9v0LS9`3l6\ cR

\5f&y-k1z0
Q*C i+wT2tb9^.Gd%\0
g3b/|!b M0。。。
1L#[xO)P{K.N r0
*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(Z cq*S
                   0-0x00C00000 上了51Testing软件测试网b7m2]9g Rb&Q+w5U/`'k
51Testing软件测试网H4\$Mn ^d
    161         mov     $(__HYPERVISOR_DS),%ecx
Z2e1tp1O3J Q ^ UO g{051Testing软件测试网6A2b_*B Ct|)d5b6|


TAG: virtualization Xen Virtualization

 

评分:0

我来说两句

Open Toolbar