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_rv64g.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) 2015-2016 Ruslan Bukin <br@bsdpad.com>
    3  * All rights reserved.
    4  *
    5  * Portions of this software were developed by SRI International and the
    6  * University of Cambridge Computer Laboratory under DARPA/AFRL contract
    7  * FA8750-10-C-0237 ("CTSRD"), as part of the DARPA CRASH research programme.
    8  *
    9  * Portions of this software were developed by the University of Cambridge
   10  * Computer Laboratory as part of the CTSRD Project, with support from the
   11  * UK Higher Education Innovation Fund (HEIF).
   12  *
   13  * Redistribution and use in source and binary forms, with or without
   14  * modification, are permitted provided that the following conditions
   15  * are met:
   16  * 1. Redistributions of source code must retain the above copyright
   17  *    notice, this list of conditions and the following disclaimer.
   18  * 2. Redistributions in binary form must reproduce the above copyright
   19  *    notice, this list of conditions and the following disclaimer in the
   20  *    documentation and/or other materials provided with the distribution.
   21  *
   22  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   25  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   26  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   28  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   29  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   31  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   32  * SUCH DAMAGE.
   33  */
   34 
   35 #define ENTRY(sym)                                              \
   36         .text; .globl sym; .type sym,@function; sym:
   37 #define END(sym) .size sym, . - sym
   38 
   39 
   40 ENTRY(setjmp)
   41         /* Store the stack pointer */
   42         sd      sp, (0 * 8)(a0)
   43         addi    a0, a0, (1 * 8)
   44 
   45         /* Store the general purpose registers and ra */
   46         sd      s0, (0 * 8)(a0)
   47         sd      s1, (1 * 8)(a0)
   48         sd      s2, (2 * 8)(a0)
   49         sd      s3, (3 * 8)(a0)
   50         sd      s4, (4 * 8)(a0)
   51         sd      s5, (5 * 8)(a0)
   52         sd      s6, (6 * 8)(a0)
   53         sd      s7, (7 * 8)(a0)
   54         sd      s8, (8 * 8)(a0)
   55         sd      s9, (9 * 8)(a0)
   56         sd      s10, (10 * 8)(a0)
   57         sd      s11, (11 * 8)(a0)
   58         sd      ra, (12 * 8)(a0)
   59         addi    a0, a0, (13 * 8)
   60 
   61         /* Return value */
   62         li      a0, 0
   63         ret
   64 END(setjmp)
   65 
   66 ENTRY(longjmp)
   67         /* Restore the stack pointer */
   68         ld      t0, 0(a0)
   69         mv      sp, t0
   70         addi    a0, a0, (1 * 8)
   71 
   72         /* Restore the general purpose registers and ra */
   73         ld      s0, (0 * 8)(a0)
   74         ld      s1, (1 * 8)(a0)
   75         ld      s2, (2 * 8)(a0)
   76         ld      s3, (3 * 8)(a0)
   77         ld      s4, (4 * 8)(a0)
   78         ld      s5, (5 * 8)(a0)
   79         ld      s6, (6 * 8)(a0)
   80         ld      s7, (7 * 8)(a0)
   81         ld      s8, (8 * 8)(a0)
   82         ld      s9, (9 * 8)(a0)
   83         ld      s10, (10 * 8)(a0)
   84         ld      s11, (11 * 8)(a0)
   85         ld      ra, (12 * 8)(a0)
   86         addi    a0, a0, (13 * 8)
   87 
   88         /* Load the return value */
   89         mv      a0, a1
   90         ret
   91 END(longjmp)

Cache object: 9e5e57c15fc971a6d7450bac48bfbe8b


[ 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.