Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/machine/or1k/setjmp.S')
-rw-r--r--newlib/libc/machine/or1k/setjmp.S108
1 files changed, 0 insertions, 108 deletions
diff --git a/newlib/libc/machine/or1k/setjmp.S b/newlib/libc/machine/or1k/setjmp.S
deleted file mode 100644
index 5c023278d..000000000
--- a/newlib/libc/machine/or1k/setjmp.S
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
-Copyright (c) 2014, Hesham ALMatary
-All rights reserved.
-
-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 COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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.
-*/
-
-.align 4
-.global setjmp
-.type setjmp,@function
-setjmp:
-
- l.sw 4(r3), r1
- l.sw 8(r3), r2
- /* Skip r3-r8 as they are not preserved across function calls */
- l.sw 36(r3), r9
- /* Skip r10 as it's preserved to be used by TLS */
- /* Skip r11, setjmp always set it to 0 */
- /* The following set if registers are preserved across function calls */
- l.sw 52(r3), r14
- l.sw 60(r3), r16
- l.sw 68(r3), r18
- l.sw 76(r3), r20
- l.sw 84(r3), r22
- l.sw 92(r3), r24
- l.sw 100(r3), r26
- l.sw 108(r3), r28
- l.sw 116(r3), r30
- /* Save Status Register */
- 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
-.type longjmp,@function
-longjmp:
-
- /* If the second argument to longjmp is zero, set return address to 1,
- otherwise set it to the value of the second argument */
- l.addi r11, r0, 1
- l.sfne r4, r0
- l.bf 1f
- l.nop
- l.addi r11, r4, 0
-
- /* Load status register */
-1:
- l.lwz r15, 124(r3)
- l.mtspr r0, r15, 17
-
- l.lwz r1, 4(r3)
- l.lwz r2, 8(r3)
- /* Skip r3-r8 as they are not preserved across function calls */
- l.lwz r9, 36(r3)
- /* Skip r11 as it's always set by longjmp */
- l.lwz r14, 52(r3)
- l.lwz r16, 60(r3)
- l.lwz r18, 68(r3)
- l.lwz r20, 76(r3)
- l.lwz r22, 84(r3)
- l.lwz r24, 92(r3)
- l.lwz r26, 100(r3)
- l.lwz r28, 108(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