1/* setjmp for Nios II. 2 Copyright (C) 1991-2022 Free Software Foundation, Inc. 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 16 License along with the GNU C Library. If not, see 17 <https://www.gnu.org/licenses/>. */ 18 19#include <sysdep.h> 20#include <jmpbuf-offsets.h> 21 22 .text 23ENTRY(setjmp) 24 movi r5, 1 25 br __sigsetjmp 26END(setjmp) 27 28ENTRY(_setjmp) 29 mov r5, zero 30 br __sigsetjmp 31END(_setjmp) 32libc_hidden_def (_setjmp) 33 34/* Save the current program position in ENV and return 0. */ 35ENTRY(__sigsetjmp) 36#ifdef PTR_MANGLE 37 PTR_MANGLE_GUARD (r9) 38#endif 39 stw r16, (JB_R16*4)(r4) 40 stw r17, (JB_R17*4)(r4) 41 stw r18, (JB_R18*4)(r4) 42 stw r19, (JB_R19*4)(r4) 43 stw r20, (JB_R20*4)(r4) 44 stw r21, (JB_R21*4)(r4) 45 stw r22, (JB_R22*4)(r4) 46 stw fp, (JB_FP*4)(r4) 47#ifdef PTR_MANGLE 48 PTR_MANGLE (r6, ra, r9) 49 PTR_MANGLE (r7, sp, r9) 50 stw r6, (JB_RA*4)(r4) 51 stw r7, (JB_SP*4)(r4) 52#else 53 stw ra, (JB_RA*4)(r4) 54 stw sp, (JB_SP*4)(r4) 55#endif 56#if IS_IN (rtld) 57 /* In ld.so we never save the signal mask. */ 58 mov r2, zero 59 ret 60#else 61 /* Save the signal mask if requested. */ 62#if defined(__PIC__) || defined(PIC) 63 nextpc r2 641: movhi r3, %hiadj(__sigjmp_save - 1b) 65 addi r3, r3, %lo(__sigjmp_save - 1b) 66 add r2, r2, r3 67 jmp r2 68#else 69 jmpi __sigjmp_save 70#endif 71#endif 72END (__sigsetjmp) 73libc_hidden_def (__sigsetjmp) 74