[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 03/16] x86/boot: call reloc() using cdecl calling convention
>>> On 15.04.16 at 14:33, <daniel.kiper@xxxxxxxxxx> wrote: > --- a/xen/arch/x86/boot/reloc.c > +++ b/xen/arch/x86/boot/reloc.c > @@ -10,15 +10,25 @@ > * Keir Fraser <keir@xxxxxxx> > */ > > -/* 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 %ebp \n" > + " mov %esp,%ebp \n" > " call 1f \n" > - "1: pop %ebx \n" > - " mov %eax,alloc-1b(%ebx) \n" > - " jmp reloc \n" > + "1: pop %ecx \n" > + " mov 0xc(%ebp),%eax \n" > + " mov %eax,alloc-1b(%ecx) \n" > + " push 0x8(%ebp) \n" > + " call reloc \n" > + " leave \n" > + " ret \n" > ); If Andrew's suggestion to remove this asm() altogether doesn't work out, then I do not see justification for adding a frame pointer here - addressing through %esp should be quite fine. Which in turn would eliminate the need to convert jmp to call. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |