From f58bc5991f017a0c720d79b4bb3c0c082e835b04 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Fri, 12 Dec 2014 21:14:06 +0000 Subject: 2014-12-12 Stefan Wallentowitz * configure.host: or1knd support, OpenRISC without delay slot * libc/include/machine/setjmp.h: Add or1knd * libc/machine/or1k/setjmp.S: Optional delay slot --- newlib/libc/machine/or1k/setjmp.S | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'newlib/libc/machine') diff --git a/newlib/libc/machine/or1k/setjmp.S b/newlib/libc/machine/or1k/setjmp.S index 13ccf8a07..5c023278d 100644 --- a/newlib/libc/machine/or1k/setjmp.S +++ b/newlib/libc/machine/or1k/setjmp.S @@ -49,8 +49,18 @@ setjmp: l.mfspr r13, r0, 17 l.sw 124(r3), r13 /* Set result register to 0 and jump */ +// Different cases for optional delay slot +#if defined(__OR1K_NODELAY__) + l.addi r11, r0, 0 + l.jr r9 +#elif defined(__OR1K_DELAY__) l.jr r9 l.addi r11, r0, 0 +#else + l.addi r11, r0, 0 + l.jr r9 + l.nop +#endif .align 4 .global longjmp @@ -83,7 +93,16 @@ longjmp: l.lwz r24, 92(r3) l.lwz r26, 100(r3) l.lwz r28, 108(r3) - l.lwz r30, 116(r3) +// Different cases for optional delay slot +#if defined(__OR1K_NODELAY__) + l.lwz r30, 116(r3) + l.jr r9 +#elif defined(__OR1K_DELAY__) + l.jr r9 + l.lwz r30, 116(r3) +#else + l.lwz r30, 116(r3) l.jr r9 l.nop +#endif -- cgit v1.2.3