@@ -119,7 +119,8 @@ __start:
/* Save the Multiboot info struct (after relocation) for later use. */
mov $sym_phys(cpu0_stack)+1024,%esp
- push %ebx
+ push %eax /* Boot trampoline address. */
+ push %ebx /* Multiboot information address. */
call reloc
mov %eax,sym_phys(multiboot_ptr)
@@ -10,15 +10,16 @@
* Keir Fraser <keir@xen.org>
*/
-/* entered with %eax = BOOT_TRAMPOLINE */
+/*
+ * This entry point is entered from xen/arch/x86/boot/head.S with:
+ * - 0x4(%esp) = MULTIBOOT_INFORMATION_ADDRESS,
+ * - 0x8(%esp) = BOOT_TRAMPOLINE_ADDRESS.
+ */
asm (
" .text \n"
" .globl _start \n"
"_start: \n"
- " push %eax \n"
- " push 0x8(%esp) \n"
- " call reloc \n"
- " ret $0x4 \n"
+ " jmp reloc \n"
);
typedef unsigned int u32;