Home | History | Annotate | Line # | Download | only in mips64el
      1 /*	$NetBSD: setjmp.S,v 1.1.1.1 2018/08/16 18:17:47 jmcneill Exp $	*/
      2 
      3 /*
      4  * Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
      5  * Copright (c) 2017 Lemote Co.
      6  * Author: Heiher <r (at) hev.cc>
      7  *
      8  * This program and the accompanying materials are licensed and made
      9 available
     10  * under the terms and conditions of the BSD License which accompanies
     11 this
     12  * distribution.  The full text of the license may be found at
     13  * http://opensource.org/licenses/bsd-license.php.
     14  *
     15  * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
     16 BASIS,
     17  * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
     18  * IMPLIED.
     19  */
     20 	.text
     21 	.p2align 3
     22 
     23 	.globl	setjmp
     24 	.type	setjmp, @function
     25 setjmp:
     26 	sd	$ra, 0x00($a0)
     27 	sd	$sp, 0x08($a0)
     28 	sd	$fp, 0x10($a0)
     29 	sd	$gp, 0x18($a0)
     30 
     31 	sd	$s0, 0x20($a0)
     32 	sd	$s1, 0x28($a0)
     33 	sd	$s2, 0x30($a0)
     34 	sd	$s3, 0x38($a0)
     35 	sd	$s4, 0x40($a0)
     36 	sd	$s5, 0x48($a0)
     37 	sd	$s6, 0x50($a0)
     38 	sd	$s7, 0x58($a0)
     39 
     40 #ifdef	__mips_hard_float
     41 	mfc0	$v0, $12
     42 	ext	$v0, $v0, 29, 1
     43 	beqz	$v0, 1f
     44 
     45 	s.d	$f24, 0x60($a0)
     46 	s.d	$f25, 0x68($a0)
     47 	s.d	$f26, 0x70($a0)
     48 	s.d	$f27, 0x78($a0)
     49 	s.d	$f28, 0x80($a0)
     50 	s.d	$f29, 0x88($a0)
     51 	s.d	$f30, 0x90($a0)
     52 	s.d	$f31, 0x98($a0)
     53 
     54 1:
     55 #endif
     56 	move	$v0, $zero
     57 	jr	$ra
     58 
     59 	.globl	longjmp
     60 	.type	longjmp, @function
     61 longjmp:
     62 	ld	$ra, 0x00($a0)
     63 	ld	$sp, 0x08($a0)
     64 	ld	$fp, 0x10($a0)
     65 	ld	$gp, 0x18($a0)
     66 
     67 	ld	$s0, 0x20($a0)
     68 	ld	$s1, 0x28($a0)
     69 	ld	$s2, 0x30($a0)
     70 	ld	$s3, 0x38($a0)
     71 	ld	$s4, 0x40($a0)
     72 	ld	$s5, 0x48($a0)
     73 	ld	$s6, 0x50($a0)
     74 	ld	$s7, 0x58($a0)
     75 
     76 #ifdef	__mips_hard_float
     77 	mfc0	$v0, $12
     78 	ext	$v0, $v0, 29, 1
     79 	beqz	$v0, 1f
     80 
     81 	l.d	$f24, 0x60($a0)
     82 	l.d	$f25, 0x68($a0)
     83 	l.d	$f26, 0x70($a0)
     84 	l.d	$f27, 0x78($a0)
     85 	l.d	$f28, 0x80($a0)
     86 	l.d	$f29, 0x88($a0)
     87 	l.d	$f30, 0x90($a0)
     88 	l.d	$f31, 0x98($a0)
     89 
     90 1:
     91 #endif
     92 	li	$v0, 1
     93 	movn	$v0, $a1, $a1
     94 	jr	$ra
     95