1/* Copyright (C) 1992-2022 Free Software Foundation, Inc. 2 This file is part of the GNU C Library. 3 4 The GNU C Library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; either 7 version 2.1 of the License, or (at your option) any later version. 8 9 The GNU C Library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public 15 License along with the GNU C Library. If not, see 16 <https://www.gnu.org/licenses/>. */ 17 18#define __ASSEMBLY__ 19 20#include <sysdep.h> 21#include <jmpbuf-offsets.h> 22 23 24ENTRY(__longjmp) 25#ifdef PROF 26 ldgp gp, 0(pv) 27 .set noat 28 lda AT, _mcount 29 jsr AT, (AT), _mcount 30 .set at 31 .prologue 1 32#else 33 .prologue 0 34#endif 35 36 mov a1, v0 37 ldq s0, JB_S0*8(a0) 38 ldq s1, JB_S1*8(a0) 39 ldq s2, JB_S2*8(a0) 40 ldq s3, JB_S3*8(a0) 41 ldq s4, JB_S4*8(a0) 42 ldq s5, JB_S5*8(a0) 43 ldq ra, JB_PC*8(a0) 44 ldq fp, JB_FP*8(a0) 45 ldq t0, JB_SP*8(a0) 46 ldt $f2, JB_F2*8(a0) 47 ldt $f3, JB_F3*8(a0) 48 ldt $f4, JB_F4*8(a0) 49 ldt $f5, JB_F5*8(a0) 50 ldt $f6, JB_F6*8(a0) 51 ldt $f7, JB_F7*8(a0) 52 ldt $f8, JB_F8*8(a0) 53 ldt $f9, JB_F9*8(a0) 54#ifdef PTR_DEMANGLE 55 PTR_DEMANGLE(ra, t1) 56 PTR_DEMANGLE2(t0, t1) 57 PTR_DEMANGLE2(fp, t1) 58#endif 59 cmoveq v0, 1, v0 60 mov t0, sp 61 ret 62 63END(__longjmp) 64