From 0e859ad10fc088ebccf03cb99fb39bbd90eae899 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Thu, 11 Dec 2008 20:05:38 +0000 Subject: 2008-12-11 Jukka Pietarinen * configure.host: Add lm32 * libc/include/machine/ieeefp.h: Add __lm32__ * libc/include/machine/setjmp.h: Add __lm32__ * libc/machine/configure.in: Add lm32 * libc/machine/configure: Regenerated. * libc/machine/lm32/aclocal.m4: New file. * libc/machine/lm32/configure.in: Ditto. * libc/machine/lm32/configure: Ditto. * libc/machine/lm32/Makefile.am: Ditto. * libc/machine/lm32/Makefile.in: Ditto. * libc/machine/lm32/setjmp.s: Ditto. --- newlib/libc/machine/lm32/setjmp.S | 94 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 newlib/libc/machine/lm32/setjmp.S (limited to 'newlib/libc/machine/lm32/setjmp.S') diff --git a/newlib/libc/machine/lm32/setjmp.S b/newlib/libc/machine/lm32/setjmp.S new file mode 100644 index 000000000..666df5e3e --- /dev/null +++ b/newlib/libc/machine/lm32/setjmp.S @@ -0,0 +1,94 @@ +/* + * setjmp/longjmp for LatticeMico32. + * Contributed by Jon Beniston + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + + .section .text + .align 4 + + .globl setjmp + .type setjmp,@function + .globl longjmp + .type longjmp,@function + +/* setjmp: save all callee saves into jmp_buf + r1 - Address of jmp_buf +*/ + +setjmp: + sw (r1+0), r11 + sw (r1+4), r12 + sw (r1+8), r13 + sw (r1+12), r14 + sw (r1+16), r15 + sw (r1+20), r16 + sw (r1+24), r17 + sw (r1+28), r18 + sw (r1+32), r19 + sw (r1+36), r20 + sw (r1+40), r21 + sw (r1+44), r22 + sw (r1+48), r23 + sw (r1+52), r24 + sw (r1+56), r25 + sw (r1+60), gp + sw (r1+64), fp + sw (r1+68), sp + sw (r1+72), ra + mvi r1, 0 + ret + +/* longjmp: restore all callee saves from jmp_buf + r1 - Address of jmb_buf + r2 - Value to return with +*/ + + .global longjmp + .type longjmp,@function + .align 4 + +longjmp: + lw r11, (r1+0) + lw r12, (r1+4) + lw r13, (r1+8) + lw r14, (r1+12) + lw r15, (r1+16) + lw r16, (r1+20) + lw r17, (r1+24) + lw r18, (r1+28) + lw r19, (r1+32) + lw r20, (r1+36) + lw r21, (r1+40) + lw r22, (r1+44) + lw r23, (r1+48) + lw r24, (r1+52) + lw r25, (r1+56) + lw gp, (r1+60) + lw fp, (r1+64) + lw sp, (r1+68) + lw ra, (r1+72) + mv r1, r2 + ret + + -- cgit v1.2.3