Two more caveats in common/jmp.S.. diff --git a/common/jmp.S b/common/jmp.S index 3bc8c94..a446d78 100644 --- a/common/jmp.S +++ b/common/jmp.S @@ -18,7 +18,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#define _SV save %sp, -0x40, %sp +#if __WORDSIZE == 32 +# define STACK_BIAS 0 +#else +# define STACK_BIAS 2047 +#endif + +#define _SV save %sp, -STACK_BIAS-0x40, %sp #define _RV restore #define FLUSH_ALL_WINDOWS \ _SV; _SV; _SV; _SV; _SV; _SV; _SV; \ @@ -46,7 +52,7 @@ __longjmp: FLUSH_ALL_WINDOWS ld [%o0], %o7 /* Return PC. */ ld [%o0 + 4], %fp /* Saved SP. */ #if __WORDSIZE == 32 ld [%o0], %o7 /* Return PC. */ ld [%o0 + 4], %fp /* Saved SP. */ #else ldx [%o0], %o7 /* Return PC. */ ldx [%o0 + 8], %fp /* Saved SP. */ #endif and also in the corresponding stores in setjmp: #if __WORDSIZE == 32 st %o7, [%o0] st %sp, [%o0 + 4] #else stx %o7, [%o0] stx %sp, [%o0 + 8] #endif -- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html