OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [newlib/] [newlib/] [libc/] [machine/] [hppa/] [setjmp.S] - Rev 1765

Compare with Previous | Blame | View Log

/* Copyright (c) 1995 Cygnus Support.
   All rights reserved.

   Redistribution and use in source and binary forms are permitted
   provided that the above copyright notice and this paragraph are
   duplicated in all such forms and that any documentation,
   advertising materials, and other materials related to such
   distribution and use acknowledge that the software was developed
   at Cygnus Support, Inc.  Cygnus Support, Inc. may not be used to
   endorse or promote products derived from this software without
   specific prior written permission.
   THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  */

/* 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.  */

        .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.:
        .SPACE $TEXT$
        .SUBSPA $CODE$

        .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

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.