diff options
author | Steven J. Magnani <steve@digidescorp.com> | 2010-11-10 19:23:45 +0100 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2010-11-10 19:44:36 +0100 |
commit | 4dc998596f0ed8c9f1da6dc57a5640e3928cc12b (patch) | |
tree | 0909ba492763f96a9cbf0e840dc1a6bc7b5df221 /libc/sysdeps/linux/microblaze/__longjmp.S | |
parent | ffc5c7769dff075629e27a351b5c403e50a9f57d (diff) |
microblaze: Fix setjmp/longjmp
Some state and registers are missing from setjmp/longjmp handling.
Signed-off-by: Steven J. Magnani <steve@digidescorp.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'libc/sysdeps/linux/microblaze/__longjmp.S')
-rw-r--r-- | libc/sysdeps/linux/microblaze/__longjmp.S | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/libc/sysdeps/linux/microblaze/__longjmp.S b/libc/sysdeps/linux/microblaze/__longjmp.S index 2752f0bd3..c4423bec5 100644 --- a/libc/sysdeps/linux/microblaze/__longjmp.S +++ b/libc/sysdeps/linux/microblaze/__longjmp.S @@ -16,30 +16,34 @@ #define _ASM #include <bits/setjmp.h> -#include <clinkage.h> +#include <libc-symbols.h> .text -C_ENTRY(__longjmp): + .globl C_SYMBOL_NAME(__longjmp) + .align 4 +C_SYMBOL_NAME(__longjmp): /* load registers from memory to r5 (arg0) */ lwi r1, r5, 0 lwi r15, r5, 4 - lwi r18, r5, 8 - lwi r19, r5, 12 - lwi r20, r5, 16 - lwi r21, r5, 20 - lwi r22, r5, 24 - lwi r23, r5, 28 - lwi r24, r5, 32 - lwi r25, r5, 36 - lwi r26, r5, 40 - lwi r27, r5, 44 - lwi r28, r5, 48 - lwi r29, r5, 52 - lwi r30, r5, 56 + lwi r2, r5, 8 + lwi r13, r5, 12 + lwi r18, r5, 16 + lwi r19, r5, 20 + lwi r20, r5, 24 + lwi r21, r5, 28 + lwi r22, r5, 32 + lwi r23, r5, 36 + lwi r24, r5, 40 + lwi r25, r5, 44 + lwi r26, r5, 48 + lwi r27, r5, 52 + lwi r28, r5, 56 + lwi r29, r5, 60 + lwi r30, r5, 64 + lwi r31, r5, 68 addi r3, r0, 1 /* return val */ rtsd r15, 8 /* normal return */ nop -C_END(__longjmp) libc_hidden_def(__longjmp) |