The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/openzfs/module/lua/setjmp/setjmp_sparc64.S

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 1992, 1993
    3  *      The Regents of the University of California.  All rights reserved.
    4  *
    5  * This software was developed by the Computer Systems Engineering group
    6  * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
    7  * contributed to Berkeley.
    8  *
    9  * Redistribution and use in source and binary forms, with or without
   10  * modification, are permitted provided that the following conditions
   11  * are met:
   12  * 1. Redistributions of source code must retain the above copyright
   13  *    notice, this list of conditions and the following disclaimer.
   14  * 2. Redistributions in binary form must reproduce the above copyright
   15  *    notice, this list of conditions and the following disclaimer in the
   16  *    documentation and/or other materials provided with the distribution.
   17  * 4. Neither the name of the University nor the names of its contributors
   18  *    may be used to endorse or promote products derived from this software
   19  *    without specific prior written permission.
   20  *
   21  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   24  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   27  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   28  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   30  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   31  * SUCH DAMAGE.
   32  *
   33  *      $Header: _setjmp.s,v 1.1 91/07/06 16:45:53 torek Exp
   34  */
   35 
   36 #if defined(LIBC_SCCS) && !defined(lint)
   37 #if 0
   38         .asciz "@(#)_setjmp.s   8.1 (Berkeley) 6/4/93"
   39 #else
   40         RCSID("$NetBSD: _setjmp.S,v 1.4 1998/10/08 02:27:59 eeh Exp $")
   41 #endif
   42 #endif /* LIBC_SCCS and not lint */
   43 
   44 #define _JB_FP          0x0
   45 #define _JB_PC          0x8
   46 #define _JB_SP          0x10
   47 
   48         .register %g2,#ignore
   49         .register %g3,#ignore
   50 
   51 #define ENTRY(x)                \
   52         .text ;                 \
   53         .balign 32 ;            \
   54         .globl  x ;             \
   55         .type   x,@function ;   \
   56 x:
   57 
   58 #define END(x)                  \
   59         .size x, . - x
   60 
   61 /*
   62  * C library -- setjmp, longjmp
   63  *
   64  *      longjmp(a,v)
   65  * will generate a "return(v?v:1)" from
   66  * the last call to
   67  *      setjmp(a)
   68  * by restoring the previous context.
   69  */
   70 
   71 ENTRY(setjmp)
   72         stx     %sp, [%o0 + _JB_SP]
   73         stx     %o7, [%o0 + _JB_PC]
   74         stx     %fp, [%o0 + _JB_FP]
   75         retl
   76          clr    %o0
   77 END(setjmp)
   78 
   79 ENTRY(longjmp)
   80         mov     1, %g1
   81         movrnz  %o1, %o1, %g1
   82         mov     %o0, %g2
   83         ldx     [%g2 + _JB_FP], %g3
   84 1:      cmp     %fp, %g3
   85         bl,a    1b
   86          restore
   87         be,a    2f
   88          ldx    [%g2 + _JB_SP], %o0
   89 
   90 .Lbotch:
   91         illtrap
   92 
   93 2:      cmp     %o0, %sp
   94         bge,a   3f
   95          mov    %o0, %sp
   96         b,a     .Lbotch
   97          nop
   98 3:      ldx     [%g2 + _JB_PC], %o7
   99         retl
  100          mov    %g1, %o0
  101 END(longjmp)
  102 
  103 #ifdef __ELF__
  104 .section .note.GNU-stack,"",%progbits
  105 #endif

Cache object: b3f0abd4111cb5909ba6cfcf3bab72f8


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.