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