* grub-core/lib/ia64/setjmp.S: Fix the name of setjmp function.
+2013-03-02 Vladimir Serbinenko <phcoder@gmail.com>
+
+ * grub-core/lib/ia64/longjmp.S: Fix the name of longjmp function.
+ * grub-core/lib/ia64/setjmp.S: Fix the name of setjmp function.
+
2013-03-02 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/script/execute.c (gettext_append): Remove nested functions.
/* __longjmp(__jmp_buf buf, int val) */
- .text
- .global longjmp
- .proc longjmp
-longjmp:
+ .text
+
+ .proc EXT_C(grub_longjmp)
+FUNCTION(grub_longjmp)
alloc r8=ar.pfs,2,1,0,0
mov r27=ar.rsc
add r2=0x98,in0 // r2 <- &jmpbuf.orig_jmp_buf_addr
invala // virt. -> phys. regnum mapping may change
mov pr=r24,-1
br.ret.dptk.few rp
- .endp longjmp
+ .endp EXT_C(grub_longjmp)
/* The following two entry points are the traditional entry points: */
.text
- .global setjmp
- .proc setjmp
-setjmp:
+
+ .proc EXT_C(grub_setjmp)
+FUNCTION(grub_setjmp)
alloc r8=ar.pfs,2,0,0,0
mov in1=1
br.cond.sptk.many __sigsetjmp
- .endp setjmp
+ .endp EXT_C(grub_setjmp)
/* __sigsetjmp(__jmp_buf buf, int savemask) */
/* the __jmp_buf element type should be __float80 per ABI... */
typedef long grub_jmp_buf[_JBLEN] __attribute__ ((aligned (16))); /* guarantees 128-bit alignment! */
-int grub_setjmp (grub_jmp_buf env);
+int grub_setjmp (grub_jmp_buf env) __attribute__ ((returns_twice));
void grub_longjmp (grub_jmp_buf env, int val) __attribute__ ((noreturn));