diff --git a/ChangeLog b/ChangeLog index 9b11ce020..3edb0d0a3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2013-11-07 Vladimir Serbinenko + + * grub-core/kern/ieee1275/cmain.c: Add explicit attribute on asm + bindings. + * grub-core/lib/reed_solomon.c: Likewise. + * include/grub/i386/gdb.h: Likewise. + * include/grub/i386/pc/int.h: Likewise. + * include/grub/i386/pc/pxe.h: Likewise. + * include/grub/ieee1275/ieee1275.h: Likewise. + 2013-11-07 Vladimir Serbinenko Import libgcrypt 1.5.3. diff --git a/grub-core/kern/ieee1275/cmain.c b/grub-core/kern/ieee1275/cmain.c index abd1ca96c..d92ae14f5 100644 --- a/grub-core/kern/ieee1275/cmain.c +++ b/grub-core/kern/ieee1275/cmain.c @@ -22,7 +22,7 @@ #include #include -int (*grub_ieee1275_entry_fn) (void *); +int (*grub_ieee1275_entry_fn) (void *) GRUB_IEEE1275_ENTRY_FN_ATTRIBUTE; grub_ieee1275_phandle_t grub_ieee1275_chosen; grub_ieee1275_ihandle_t grub_ieee1275_mmu; diff --git a/grub-core/lib/reed_solomon.c b/grub-core/lib/reed_solomon.c index 51b58b8e2..04a271619 100644 --- a/grub-core/lib/reed_solomon.c +++ b/grub-core/lib/reed_solomon.c @@ -53,7 +53,11 @@ typedef unsigned char grub_uint8_t; #include #endif void -grub_reed_solomon_recover (void *ptr_, grub_size_t s, grub_size_t rs); +grub_reed_solomon_recover (void *ptr_, grub_size_t s, grub_size_t rs) +#ifdef __i386__ + __attribute__ ((regparm(3))) +#endif + ; #endif #define GF_SIZE 8 diff --git a/include/grub/i386/gdb.h b/include/grub/i386/gdb.h index 174f4dc09..070bb82da 100644 --- a/include/grub/i386/gdb.h +++ b/include/grub/i386/gdb.h @@ -71,7 +71,7 @@ struct grub_cpu_idt_descriptor extern void (*grub_gdb_trapvec[]) (void); void grub_gdb_idtinit (void); void grub_gdb_idtrestore (void); -void grub_gdb_trap (int trap_no); +void grub_gdb_trap (int trap_no) __attribute__ ((regparm(3))); #endif /* ! ASM */ #endif /* ! GRUB_GDB_CPU_HEADER */ diff --git a/include/grub/i386/pc/int.h b/include/grub/i386/pc/int.h index 44e7f52bb..fae2e877c 100644 --- a/include/grub/i386/pc/int.h +++ b/include/grub/i386/pc/int.h @@ -52,7 +52,8 @@ struct grub_bios_int_registers #endif void EXPORT_FUNC (grub_bios_interrupt) (grub_uint8_t intno, - struct grub_bios_int_registers *regs); + struct grub_bios_int_registers *regs) + __attribute__ ((regparm(3))); struct grub_i386_idt { grub_uint16_t limit; diff --git a/include/grub/i386/pc/pxe.h b/include/grub/i386/pc/pxe.h index 96f65acf9..7794379ee 100644 --- a/include/grub/i386/pc/pxe.h +++ b/include/grub/i386/pc/pxe.h @@ -280,7 +280,7 @@ struct grub_pxenv_unload_stack grub_uint8_t reserved[10]; } __attribute__ ((packed)); -int EXPORT_FUNC(grub_pxe_call) (int func, void * data, grub_uint32_t pxe_rm_entry); +int EXPORT_FUNC(grub_pxe_call) (int func, void * data, grub_uint32_t pxe_rm_entry) __attribute__ ((regparm(3))); extern struct grub_pxe_bangpxe *grub_pxe_pxenv; diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h index 1b240d3df..dc54beabb 100644 --- a/include/grub/ieee1275/ieee1275.h +++ b/include/grub/ieee1275/ieee1275.h @@ -76,7 +76,13 @@ extern void (*EXPORT_VAR(grub_ieee1275_net_config)) (const char *dev, /* Maps a device alias to a pathname. */ extern grub_ieee1275_phandle_t EXPORT_VAR(grub_ieee1275_chosen); extern grub_ieee1275_ihandle_t EXPORT_VAR(grub_ieee1275_mmu); -extern int (* EXPORT_VAR(grub_ieee1275_entry_fn)) (void *); +#ifdef __i386__ +#define GRUB_IEEE1275_ENTRY_FN_ATTRIBUTE __attribute__ ((regparm(3))) +#else +#define GRUB_IEEE1275_ENTRY_FN_ATTRIBUTE +#endif + +extern int (* EXPORT_VAR(grub_ieee1275_entry_fn)) (void *) GRUB_IEEE1275_ENTRY_FN_ATTRIBUTE; /* Static heap, used only if FORCE_CLAIM is set, happens on Open Hack'Ware. Should be in platform-specific