setjmp.S revision 1.1 1 1.1 jmcneill /* $NetBSD: setjmp.S,v 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