]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/powerpc/powerpc32/setjmp-common.S
Update copyright dates with scripts/update-copyrights.
[thirdparty/glibc.git] / sysdeps / powerpc / powerpc32 / setjmp-common.S
CommitLineData
5c76ff27 1/* setjmp for PowerPC.
04277e02 2 Copyright (C) 1995-2019 Free Software Foundation, Inc.
5c76ff27
UD
3 This file is part of the GNU C Library.
4
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.
9
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.
14
15 You should have received a copy of the GNU Lesser General Public
59ba27a6
PE
16 License along with the GNU C Library; if not, see
17 <http://www.gnu.org/licenses/>. */
5c76ff27
UD
18
19#include <sysdep.h>
eb5ad6b9 20#include <stap-probe.h>
5c76ff27 21#define _ASM
5c76ff27
UD
22#ifdef __NO_VMX__
23# include <novmxsetjmp.h>
24#else
a7140723 25# include <jmpbuf-offsets.h>
5c76ff27 26#endif
5c76ff27 27
2e071de0
JM
28#if defined __SPE__ || (defined __NO_FPRS__ && !defined _SOFT_FLOAT)
29# define SAVE_GP(N) evstdd r##N,((JB_FPRS+((N)-14)*2)*4)(3)
30#else
31# define SAVE_GP(N) stw r##N,((JB_GPRS+(N)-14)*4)(3)
32#endif
5c76ff27 33
eb5ad6b9 34ENTRY (__sigsetjmp_symbol)
5c76ff27 35
4e54d7e4
UD
36#ifdef PTR_MANGLE
37 mr r5,r1
38 PTR_MANGLE(r5, r10)
39 stw r5,(JB_GPR1*4)(3)
40#else
5c76ff27 41 stw r1,(JB_GPR1*4)(3)
4e54d7e4 42#endif
5c76ff27 43 mflr r0
eb5ad6b9
AZ
44 /* setjmp probe expects longjmp first argument (4@3), second argument
45 (-4@4), and target address (4@0), respectively. */
46 LIBC_PROBE (setjmp, 3, 4@3, -4@4, 4@0)
2e071de0 47 SAVE_GP (14)
00c2b3b9 48#ifdef PTR_MANGLE
5ad77144
UD
49 PTR_MANGLE2 (r0, r10)
50 li r10,0
00c2b3b9 51#endif
5c76ff27 52 stw r0,(JB_LR*4)(3)
2e071de0 53 SAVE_GP (15)
5c76ff27 54 mfcr r0
2e071de0 55 SAVE_GP (16)
5c76ff27 56 stw r0,(JB_CR*4)(3)
2e071de0
JM
57 SAVE_GP (17)
58 SAVE_GP (18)
59 SAVE_GP (19)
60 SAVE_GP (20)
61 SAVE_GP (21)
62 SAVE_GP (22)
63 SAVE_GP (23)
64 SAVE_GP (24)
65 SAVE_GP (25)
66 SAVE_GP (26)
67 SAVE_GP (27)
68 SAVE_GP (28)
69 SAVE_GP (29)
70 SAVE_GP (30)
71 SAVE_GP (31)
a3848485 72#if IS_IN (rtld)
d87921ee
UD
73 li r3,0
74 blr
75#else
eb5ad6b9 76 b __sigjmp_save_symbol@local
d87921ee 77#endif
eb5ad6b9 78END (__sigsetjmp_symbol)