1 /* longjmp for PowerPC.
2 Copyright (C) 1995-2015 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 <http://www.gnu.org/licenses/>. */
20 #include <stap-probe.h>
23 # include <novmxsetjmp.h>
25 # include <jmpbuf-offsets.h>
28 #if defined __SPE__ || (defined __NO_FPRS__ && !defined _SOFT_FLOAT)
29 # define LOAD_GP(N) evldd r##N,((JB_FPRS+((N)-14)*2)*4)(r3)
31 # define LOAD_GP(N) lwz r##N,((JB_GPRS+(N)-14)*4)(r3)
34 ENTRY (__longjmp_symbol)
36 #if defined PTR_DEMANGLE || defined CHECK_SP
37 lwz r24,(JB_GPR1*4)(r3)
40 PTR_DEMANGLE3 (r24, r24, r25)
46 lwz r1,(JB_GPR1*4)(r3)
58 PTR_DEMANGLE3 (r1, r24, r25)
60 PTR_DEMANGLE2 (r0, r25)
62 /* longjmp/longjmp_target probe expects longjmp first argument (4@3),
63 second argument (-4@4), and target address (4@0), respectively. */
64 LIBC_PROBE (longjmp, 3, 4@3, -4@4, 4@0)
79 LIBC_PROBE (longjmp_target, 3, 4@3, -4@4, 4@0)
82 END (__longjmp_symbol)