[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] about __XEN_VIRT_START and 0x100000
On 19/08/2011 09:59, "Lin-Bao Zhang" <2004.zhang@xxxxxxxxx> wrote: > thanks very much! > another question: > > in xen-4.1.0: code about trampoline.S > 1, in head.S: > ------------------------------------------------------------------------------ > ------- > /* Copy bootstrap trampoline to low memory, below 1MB. */ > mov $sym_phys(trampoline_start),%esi > mov $bootsym_phys(trampoline_start),%edi > mov $trampoline_end - trampoline_start,%ecx > rep movsb > //bob comment, I know its function :copy beginning address(esi) 's ecx > bytes to edi address. > > mov $bootsym_phys(early_stack),%esp > call cmdline_parse_early > > /* Jump into the relocated trampoline. */ > jmp $BOOT_CS32,$bootsym_phys(trampoline_boot_cpu_entry) > > a)where defines early_stack ? > I just see: > early_stack: > (the last line in file ,no content again) Stacks grow downwards/backwards in memory. The early_stack definition is immediately *before* the early_stack label. > b) what is function of ” mov $bootsym_phys(early_stack),%esp" ? > is this related with trampoline relocation ? The trampoline stack (early_stack) is now allocated within the trampoline code/data area, rather than being hard-coded at an address (e.g., 0x98000). > c)how to make sure these trampoline code can't overlap other area for > example EBDA(directly below 0xa0000) ? Move it lower. In 4.1 you can see we moved the trampoline down to 0x7c000. It fits entirely below 0x80000, so it cannot overlap within even the theoretically largest possible 128kB EBDA. > d) jmp $BOOT_CS32,$bootsym_phys(trampoline_boot_cpu_entry) > as my idea , should jump to BOOT_TRAMPOLINE ,but why jump to > trampoline_boot_cpu_entry ? what is relationship between > trampoline_boot_cpu_entry and BOOT_TRAMPOLINE ? trampoline_boot_cpu_entry is not at the start of the trampoline area, hence jumping at BOOT_TRAMPOLINE would not work. We instead jump at BOOT_TRAMPOLINE + (trampoline_boot_cpu_entry-trampoline_start). Handily that is exactly what bootsym_phys() macro calculates for us. -- Keir > > 2, about reloc.S > > #include "cmdline.S" > > reloc: > #include "reloc.S" > > .align 16 > .globl trampoline_start, trampoline_end > trampoline_start: > #include "trampoline.S" > trampoline_end: > ------------------------------------------------------------------------------ > ------------- > why I can't find reloc.S in my xen-4.1.0 code ? > > thanks very much! maybe my questions are too many , thanks again! > > -Bob Zhang > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxx > http://lists.xensource.com/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |