diff --git a/ChangeLog b/ChangeLog index 1fac7e8f0..62759bb25 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-12-16 Vladimir Serbinenko + + Make grub_xen_hypercall on i386 cdecl rather than stdcall to avoid + linker trying to "fixup" the code. + 2013-12-16 Vladimir Serbinenko * grub-core/kern/x86_64/xen/startup.S: Align stack. diff --git a/grub-core/kern/i386/xen/hypercall.S b/grub-core/kern/i386/xen/hypercall.S index aa47cac2c..09d75c3a5 100644 --- a/grub-core/kern/i386/xen/hypercall.S +++ b/grub-core/kern/i386/xen/hypercall.S @@ -40,4 +40,4 @@ FUNCTION(grub_xen_hypercall) popl %edi popl %esi popl %ebp - retl $16 + ret diff --git a/include/grub/i386/xen/hypercall.h b/include/grub/i386/xen/hypercall.h index 0152b2b2f..198ee94af 100644 --- a/include/grub/i386/xen/hypercall.h +++ b/include/grub/i386/xen/hypercall.h @@ -26,7 +26,7 @@ EXPORT_FUNC (grub_xen_hypercall) (grub_uint32_t callno, grub_uint32_t a0, grub_uint32_t a1, grub_uint32_t a2, grub_uint32_t a3, grub_uint32_t a4, grub_uint32_t a5) -__attribute__ ((regparm (3), stdcall)); +__attribute__ ((regparm (3), cdecl)); static inline int grub_xen_sched_op (int cmd, void *arg)