or1k: Add prctl wrapper to unwrap variadic args
[glibc.git] / sysdeps / hppa / setjmp.S
blobaba4c69a00a9ef0853f28b49f4bbd79466b609da
1 /* setjmp for HPPA.
2    Copyright (C) 1995-2024 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library.  If not, see
17    <https://www.gnu.org/licenses/>.  */
19 #include <sysdep.h>
20 #define _ASM
21 #define _SETJMP_H
22 #include <bits/setjmp.h>
25         .text
26         .align 4
27         .import __sigjmp_save, code
28         .globl __sigsetjmp
29         .export __sigsetjmp, code
30         .proc
31         .callinfo
32 __sigsetjmp:
33         stw     %r3, 0(%r26)
34         /* This padding exists for unknown historical reasons.  */
35         /* 4 - 4 bytes of padding.  */
36         stw     %r4, 8(%r26)
37         stw     %r5, 12(%r26)
38         stw     %r6, 16(%r26)
39         stw     %r7, 20(%r26)
40         stw     %r8, 24(%r26)
41         stw     %r9, 28(%r26)
42         stw     %r10, 32(%r26)
43         stw     %r11, 36(%r26)
44         stw     %r12, 40(%r26)
45         stw     %r13, 44(%r26)
46         stw     %r14, 48(%r26)
47         stw     %r15, 52(%r26)
48         stw     %r16, 56(%r26)
49         stw     %r17, 60(%r26)
50         stw     %r18, 64(%r26)
51         stw     %r19, 68(%r26)
52         stw     %r27, 72(%r26)
53         stw     %r30, 76(%r26)
55         stw     %rp, 80(%r26)
56         /* This padding exists to ensure double alignment for fprs.  */
57         /* 84 - 4 bytes of padding.  */
58         ldo     88(%r26),%r1
59         fstds,ma %fr12, 8(%r1) /* 88 */
60         fstds,ma %fr13, 8(%r1) /* 96 */
61         fstds,ma %fr14, 8(%r1) /* 104 */
62         fstds,ma %fr15, 8(%r1) /* 112 */
63         fstds,ma %fr16, 8(%r1) /* 120 */
64         fstds,ma %fr17, 8(%r1) /* 128 */
65         fstds,ma %fr18, 8(%r1) /* 136 */
66         fstds,ma %fr19, 8(%r1) /* 144 */
67         fstds,ma %fr20, 8(%r1) /* 152 */
68         fstds    %fr21, 0(%r1) /* 160 */
69         /* Total of 168 bytes.  */
70         b __sigjmp_save
71         nop
72         .procend
73 hidden_def (__sigsetjmp)