diff options
Diffstat (limited to 'newlib/libc/machine/or1k/setjmp.S')
-rw-r--r-- | newlib/libc/machine/or1k/setjmp.S | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/newlib/libc/machine/or1k/setjmp.S b/newlib/libc/machine/or1k/setjmp.S deleted file mode 100644 index 2fbf15d0f..000000000 --- a/newlib/libc/machine/or1k/setjmp.S +++ /dev/null @@ -1,100 +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 - 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 - /* 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 */ - l.jr r9 - l.addi r11, r0, 0 - -.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 as it contains the current buffer address */ - l.lwz r4, 16(r3) - l.lwz r5, 20(r3) - l.lwz r6, 24(r3) - l.lwz r7, 28(r3) - l.lwz r8, 32(r3) - 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) - l.lwz r30, 116(r3) - l.lwz r3, 12(r3) - - l.jr r9 - l.nop |