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