1/* Xen-specific pieces of head.S, intended to be included in the right 2 place in head.S */ 3 4#ifdef CONFIG_XEN 5 6#include <linux/elfnote.h> 7#include <linux/init.h> 8#include <asm/boot.h> 9#include <xen/interface/elfnote.h> 10 11 __INIT 12ENTRY(startup_xen) 13 movl %esi,xen_start_info 14 cld 15 movl $(init_thread_union+THREAD_SIZE),%esp 16 jmp xen_start_kernel 17 18 __FINIT 19 20.pushsection .bss.page_aligned 21 .align PAGE_SIZE_asm 22ENTRY(hypercall_page) 23 .skip 0x1000 24.popsection 25 26 ELFNOTE(Xen, XEN_ELFNOTE_GUEST_OS, .asciz "linux") 27 ELFNOTE(Xen, XEN_ELFNOTE_GUEST_VERSION, .asciz "2.6") 28 ELFNOTE(Xen, XEN_ELFNOTE_XEN_VERSION, .asciz "xen-3.0") 29 ELFNOTE(Xen, XEN_ELFNOTE_VIRT_BASE, .long __PAGE_OFFSET) 30 ELFNOTE(Xen, XEN_ELFNOTE_ENTRY, .long startup_xen) 31 ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, .long hypercall_page) 32 ELFNOTE(Xen, XEN_ELFNOTE_FEATURES, .asciz "!writable_page_tables|pae_pgdir_above_4gb") 33#ifdef CONFIG_X86_PAE 34 ELFNOTE(Xen, XEN_ELFNOTE_PAE_MODE, .asciz "yes") 35#else 36 ELFNOTE(Xen, XEN_ELFNOTE_PAE_MODE, .asciz "no") 37#endif 38 ELFNOTE(Xen, XEN_ELFNOTE_LOADER, .asciz "generic") 39 40#endif /*CONFIG_XEN */ 41