Xen源代码分析(三)——x86_32.s
X86_32.s文件,启动汇编程序的最后阶段,主要工作为装入堆栈指针, Xen会在栈顶分配一个cpu_info结构,这个结构包含很多重要的成员:1)客户系统的切换上下文2)当前运行的vcpu指针3)物理处理器编号.1,IDT的处理,整个idt_table的向量入口都初始化ignore_int,这个中断处理函数打印"Unknown interrupt(cr2=XXXXXXXX)"信息后系统进入循环
2,如果是BSP,跳转到__start_xen否则,跳转到start_secondary
1 .code32
2
3 /* Enable full CR4 features. */
4 mov mmu_cr4_features,%eax
5 mov %eax,%cr4
6
7 /* Initialise stack. */
8 /*在栈顶分配一个cpu_info结构(参见下图),这个结构包含很多重要的成员:
9 1)客户系统的切换上下文2)当前运行的vcpu指针3)物理处理器编号*/
10 mov stack_start,%esp
11 or $(STACK_SIZE-CPUINFO_sizeof),%esp
12
13 /* Reset EFLAGS (subsumes CLI and CLD). */
14 pushl $0
15 popf
16
17 lidt idt_descr/*加载中断描述符表*/
18
19 test %ebx,%ebx
20 jnz start_secondary
21
22 /* Initialise IDT with simple error defaults. */
23 lea ignore_int,%edx
24 mov $(__HYPERVISOR_CS physical mapping table. Ring 0 can access all memory. */
99 #define GUEST_DESC(d) \
100 .long ((MACH2PHYS_VIRT_END - 1) >> 12) & 0xffff, \
101 ((MACH2PHYS_VIRT_END - 1) >> 12) & (0xf
页:
[1]