OSDN Git Service

If floating point was enabled, setjmp would write to memory well past the
authorDavid McCullough <davidm@snapgear.com>
Mon, 17 Feb 2003 12:20:42 +0000 (12:20 -0000)
committerDavid McCullough <davidm@snapgear.com>
Mon, 17 Feb 2003 12:20:42 +0000 (12:20 -0000)
end of the buffer.

libc/sysdeps/linux/sh/setjmp.S

index c9fa3b1..7d70fba 100644 (file)
@@ -53,17 +53,18 @@ setjmp:
        .globl  __sigsetjmp;
 __sigsetjmp:
        mov     r0, r1
+       nop             /* align this guy */
 __sigsetjmp_intern:
        /* Save registers */
 #if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__
-       add     #(JB_SIZE*4), r4
+       add     #(JB_SIZE), r4
        fmov.s  fr15, @-r4
        fmov.s  fr14, @-r4
        fmov.s  fr13, @-r4
        fmov.s  fr12, @-r4
        sts.l   fpscr, @-r4
 #else
-       add     #(JB_SIZE-5*4), r4 /* this code doesn't do FP yet */
+       add     #(JB_SIZE-(5*4)), r4 /* this code doesn't do FP yet */
 #endif         
        stc.l   gbr, @-r4
        sts.l   pr, @-r4