]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - module/lua/setjmp/setjmp_s390x.S
Vendor import of openzfs master @ 184df27eef0abdc7ab2105b21257f753834b936b
[FreeBSD/FreeBSD.git] / module / lua / setjmp / setjmp_s390x.S
1 /*
2  * Copyright (c) 2005-2014 Rich Felker, et al.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining
5  * a copy of this software and associated documentation files (the
6  * "Software"), to deal in the Software without restriction, including
7  * without limitation the rights to use, copy, modify, merge, publish,
8  * distribute, sublicense, and/or sell copies of the Software, and to
9  * permit persons to whom the Software is furnished to do so, subject to
10  * the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be
13  * included in all copies or substantial portions of the Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22  */
23
24         .global setjmp
25         .type   setjmp,@function
26 setjmp:
27         stmg %r6, %r15, 0(%r2)
28
29         std  %f8,  10*8(%r2)
30         std  %f9,  11*8(%r2)
31         std  %f10, 12*8(%r2)
32         std  %f11, 13*8(%r2)
33         std  %f12, 14*8(%r2)
34         std  %f13, 15*8(%r2)
35         std  %f14, 16*8(%r2)
36         std  %f15, 17*8(%r2)
37
38         lghi %r2, 0
39         br   %r14
40
41         .global longjmp
42         .type   longjmp,@function
43 longjmp:
44
45 1:
46         lmg %r6, %r15, 0(%r2)
47
48         ld  %f8, 10*8(%r2)
49         ld  %f9, 11*8(%r2)
50         ld %f10, 12*8(%r2)
51         ld %f11, 13*8(%r2)
52         ld %f12, 14*8(%r2)
53         ld %f13, 15*8(%r2)
54         ld %f14, 16*8(%r2)
55         ld %f15, 17*8(%r2)
56
57         ltgr %r2, %r3
58         bnzr %r14
59         lhi  %r2, 1
60         br   %r14
61
62 #ifdef __ELF__
63 .section .note.GNU-stack,"",%progbits
64 #endif