libbase: use __builtin_setjmp and __builtin_longjmp
authorSebastien Bourdeauducq <sb@m-labs.hk>
Sun, 21 Sep 2014 09:43:17 +0000 (17:43 +0800)
committerSebastien Bourdeauducq <sb@m-labs.hk>
Sun, 21 Sep 2014 09:43:17 +0000 (17:43 +0800)
software/include/base/setjmp.h
software/libbase/Makefile
software/libbase/setjmp-lm32.S [deleted file]
software/libbase/setjmp-or1k.S [deleted file]

index a63e846bc7a11ec542daf0bd89692edcec5f6bc6..ff1809666eaf02bd80aef1ff3f555d4a55be15a1 100644 (file)
@@ -5,12 +5,10 @@
 extern "C" {
 #endif
 
-#define _JBLEN 19
+typedef        void *jmp_buf[5];
 
-typedef        int jmp_buf[_JBLEN];
-
-int setjmp(jmp_buf env);
-void longjmp(jmp_buf env, int val);
+#define setjmp __builtin_setjmp
+#define longjmp __builtin_longjmp
 
 #ifdef __cplusplus
 }
index 5146c33073f0cec094f47faf2301b9834163ba82..7d19e84f6bae8babdd1210da12be086ddbc1175b 100644 (file)
@@ -1,7 +1,7 @@
 MSCDIR=../..
 include $(MSCDIR)/software/common.mak
 
-OBJECTS=setjmp-$(CPU).o exception.o libc.o errno.o crc16.o crc32.o console.o system.o id.o uart.o time.o qsort.o strtod.o
+OBJECTS=exception.o libc.o errno.o crc16.o crc32.o console.o system.o id.o uart.o time.o qsort.o strtod.o
 
 all: crt0-$(CPU).o libbase.a libbase-nofloat.a
 
diff --git a/software/libbase/setjmp-lm32.S b/software/libbase/setjmp-lm32.S
deleted file mode 100644 (file)
index 666df5e..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/* 
- * setjmp/longjmp for LatticeMico32.
- * Contributed by Jon Beniston <jon@beniston.com>
- *
- * 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
-
-
diff --git a/software/libbase/setjmp-or1k.S b/software/libbase/setjmp-or1k.S
deleted file mode 100644 (file)
index 590e69a..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/* setjmp.S. Implementation of setjmp.
-
-   Copyright (C) 2010, Embecosm Limited <info@embecosm.com>
-
-   Contributor Jeremy Bennett <jeremy.bennett@embecosm.com>
-
-   Licensed under 2-clause BSD.
-*/
-
-/* -------------------------------------------------------------------------- */
-/*!setjmp
-
-   All processor state is saved in the buffer provided. We need not save r0
-   (it will always be zero) and we need not save r11 (it will always be
-   overridden here, and in longjmp).
-
-   @todo We should prefer to save and restore the status register, but this is
-        not directly possible in user code. There is some merit in code to
-        set the flag, since in compiled C code, that might be expected to hold
-        a value. We leave a space for this information for future enhancement.
-
-   @param[out] env(r3)  A buffer to save all the current processor state.
-
-   @return  zero.*/
-/* -------------------------------------------------------------------------- */
-       .align  4
-        .global        setjmp
-        .type  setjmp,@function
-setjmp:
-       l.sw    4(r3),r1                /* Slot 0 saved for flag in future */
-       l.sw    8(r3),r2
-       l.sw    12(r3),r3
-       l.sw    16(r3),r4
-       l.sw    20(r3),r5
-       l.sw    24(r3),r6
-       l.sw    28(r3),r7
-       l.sw    32(r3),r8
-       l.sw    36(r3),r9
-       l.sw    40(r3),r10              /* Skip r11 */
-       l.sw    44(r3),r12
-       l.sw    48(r3),r13
-       l.sw    52(r3),r14
-       l.sw    56(r3),r15
-       l.sw    60(r3),r16
-       l.sw    64(r3),r17
-       l.sw    68(r3),r18
-       l.sw    72(r3),r19
-       l.sw    76(r3),r20
-       l.sw    80(r3),r21
-       l.sw    84(r3),r22
-       l.sw    88(r3),r23
-       l.sw    92(r3),r24
-       l.sw    96(r3),r25
-       l.sw    100(r3),r26
-       l.sw    104(r3),r27
-       l.sw    108(r3),r28
-       l.sw    112(r3),r29
-       l.sw    116(r3),r30
-       l.sw    120(r3),r31
-
-
-       l.jr    r9
-        l.addi r11,r0,0                /* Zero result */
-
-
-       .size   setjmp, .-setjmp