157 lines
4.1 KiB
ArmAsm
157 lines
4.1 KiB
ArmAsm
/* Copyright (c) 1995, 2002 Red Hat Incorporated.
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
*
|
|
* Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
*
|
|
* 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.
|
|
*
|
|
* The name of Red Hat Incorporated may not be used to endorse
|
|
* or promote products derived from this software without specific
|
|
* prior written permission.
|
|
*
|
|
* 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 RED HAT INCORPORATED 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.
|
|
*/
|
|
|
|
/* Note I don't know an easy way to get the FP version into the
|
|
traditional C library and the non-FP version into the soft-float
|
|
library. Maybe we'll have to have -msoft-float trigger something
|
|
like -DSOFT_FLOAT if this issue ever arises. */
|
|
|
|
#include "DEFS.h"
|
|
|
|
#if 0
|
|
.SPACE $PRIVATE$
|
|
.SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
|
|
.SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
|
|
.SPACE $TEXT$
|
|
.SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
|
|
.SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
|
|
.IMPORT $global$,DATA
|
|
.IMPORT $$dyncall,MILLICODE
|
|
; gcc_compiled.:
|
|
#endif
|
|
TEXT_SEGMENT
|
|
|
|
.align 4
|
|
.EXPORT setjmp,ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR
|
|
setjmp
|
|
.PROC
|
|
.CALLINFO FRAME=64,NO_CALLS,SAVE_SP,ENTRY_GR=3
|
|
.ENTRY
|
|
stwm %r30,4(%r26)
|
|
stwm %r2,4(%r26)
|
|
stwm %r3,4(%r26)
|
|
stwm %r4,4(%r26)
|
|
stwm %r5,4(%r26)
|
|
stwm %r6,4(%r26)
|
|
stwm %r7,4(%r26)
|
|
stwm %r8,4(%r26)
|
|
stwm %r9,4(%r26)
|
|
stwm %r10,4(%r26)
|
|
stwm %r11,4(%r26)
|
|
stwm %r12,4(%r26)
|
|
stwm %r13,4(%r26)
|
|
stwm %r14,4(%r26)
|
|
stwm %r15,4(%r26)
|
|
stwm %r16,4(%r26)
|
|
stwm %r17,4(%r26)
|
|
stwm %r18,4(%r26)
|
|
stwm %r27,4(%r26)
|
|
#ifdef FP
|
|
; jmp_buf may only have a 4 byte alignment, so handle FP stores
|
|
; very carefully.
|
|
fstds %fr12,-16(%r30)
|
|
ldw -16(%r30),%r28
|
|
stwm %r28,4(%r26)
|
|
ldw -12(%r30),%r28
|
|
stwm %r28,4(%r26)
|
|
fstds %fr13,-16(%r30)
|
|
ldw -16(%r30),%r28
|
|
stwm %r28,4(%r26)
|
|
ldw -12(%r30),%r28
|
|
stwm %r28,4(%r26)
|
|
fstds %fr14,-16(%r30)
|
|
ldw -16(%r30),%r28
|
|
stwm %r28,4(%r26)
|
|
ldw -12(%r30),%r28
|
|
stwm %r28,4(%r26)
|
|
fstds %fr15,-16(%r30)
|
|
ldw -16(%r30),%r28
|
|
stwm %r28,4(%r26)
|
|
ldw -12(%r30),%r28
|
|
stwm %r28,4(%r26)
|
|
#endif
|
|
|
|
bv 0(%r2)
|
|
copy %r0,%r28
|
|
.EXIT
|
|
.PROCEND
|
|
.align 4
|
|
.EXPORT longjmp,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,RTNVAL=GR
|
|
longjmp
|
|
.PROC
|
|
.CALLINFO FRAME=64,NO_CALLS,SAVE_SP,ENTRY_GR=3
|
|
.ENTRY
|
|
ldwm 4(%r26),%r30
|
|
ldwm 4(%r26),%r2
|
|
ldwm 4(%r26),%r3
|
|
ldwm 4(%r26),%r4
|
|
ldwm 4(%r26),%r5
|
|
ldwm 4(%r26),%r6
|
|
ldwm 4(%r26),%r7
|
|
ldwm 4(%r26),%r8
|
|
ldwm 4(%r26),%r9
|
|
ldwm 4(%r26),%r10
|
|
ldwm 4(%r26),%r11
|
|
ldwm 4(%r26),%r12
|
|
ldwm 4(%r26),%r13
|
|
ldwm 4(%r26),%r14
|
|
ldwm 4(%r26),%r15
|
|
ldwm 4(%r26),%r16
|
|
ldwm 4(%r26),%r17
|
|
ldwm 4(%r26),%r18
|
|
ldwm 4(%r26),%r27
|
|
#ifdef FP
|
|
ldwm 4(%r26),%r28
|
|
stw %r28,-16(%r30)
|
|
ldwm 4(%r26),%r28
|
|
stw %r28,-12(%r30)
|
|
fldds -16(%r30),%fr12
|
|
ldwm 4(%r26),%r28
|
|
stw %r28,-16(%r30)
|
|
ldwm 4(%r26),%r28
|
|
stw %r28,-12(%r30)
|
|
fldds -16(%r30),%fr13
|
|
ldwm 4(%r26),%r28
|
|
stw %r28,-16(%r30)
|
|
ldwm 4(%r26),%r28
|
|
stw %r28,-12(%r30)
|
|
fldds -16(%r30),%fr14
|
|
ldwm 4(%r26),%r28
|
|
stw %r28,-16(%r30)
|
|
ldwm 4(%r26),%r28
|
|
stw %r28,-12(%r30)
|
|
fldds -16(%r30),%fr15
|
|
#endif
|
|
comclr,<> %r0,%r25,%r0
|
|
ldi 1,%r25
|
|
bv 0(%r2)
|
|
copy %r25,%r28
|
|
.EXIT
|
|
.PROCEND
|