1/* Copyright (C) 2004-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#include <sysdep.h> 19#include "kernel_sysinfo.h" 20 21 22 .text 23 24ENTRY(__feraiseexcept) 25 cfi_startproc 26 PSEUDO_PROLOGUE 27 28 lda sp, -16(sp) 29 cfi_adjust_cfa_offset(16) 30 31 ldi v0, __NR_osf_setsysinfo 32 stq a0, 0(sp) 33 mov sp, a1 34 ldi a0, SSI_IEEE_RAISE_EXCEPTION 35 call_pal PAL_callsys 36 37 lda sp, 16(sp) 38 cfi_adjust_cfa_offset(-16) 39 40 /* Here in libm we can't use SYSCALL_ERROR_LABEL. Nor is it clear 41 that we'd want to set errno anyway. All we're required to do is 42 return non-zero on error. Which is exactly A3. */ 43 mov a3, v0 44 ret 45 46END(__feraiseexcept) 47 cfi_endproc 48 49#if IS_IN (libm) 50# include <shlib-compat.h> 51# if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2) 52strong_alias (__feraiseexcept, __old_feraiseexcept) 53compat_symbol (libm, __old_feraiseexcept, feraiseexcept, GLIBC_2_1); 54# endif 55libm_hidden_def (__feraiseexcept) 56libm_hidden_ver (__feraiseexcept, feraiseexcept) 57versioned_symbol (libm, __feraiseexcept, feraiseexcept, GLIBC_2_2); 58#endif 59