(root)/
glibc-2.38/
sysdeps/
powerpc/
nofpu/
feupdateenv.c
       1  /* Install given floating-point environment and raise exceptions
       2     (soft-float edition).
       3     Copyright (C) 2002-2023 Free Software Foundation, Inc.
       4     This file is part of the GNU C Library.
       5  
       6     The GNU C Library is free software; you can redistribute it and/or
       7     modify it under the terms of the GNU Lesser General Public
       8     License as published by the Free Software Foundation; either
       9     version 2.1 of the License, or (at your option) any later version.
      10  
      11     The GNU C Library is distributed in the hope that it will be useful,
      12     but WITHOUT ANY WARRANTY; without even the implied warranty of
      13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      14     Lesser General Public License for more details.
      15  
      16     You should have received a copy of the GNU Lesser General Public
      17     License along with the GNU C Library.  If not, see
      18     <https://www.gnu.org/licenses/>.  */
      19  
      20  #include "soft-fp.h"
      21  #include "soft-supp.h"
      22  #include <signal.h>
      23  
      24  int
      25  __feupdateenv (const fenv_t *envp)
      26  {
      27    int saved_exceptions;
      28  
      29    /* Save currently set exceptions.  */
      30    saved_exceptions = __sim_exceptions_thread;
      31  
      32    /* Set environment.  */
      33    __fesetenv (envp);
      34  
      35    /* Raise old exceptions.  */
      36    __sim_exceptions_thread |= saved_exceptions;
      37    SIM_SET_GLOBAL (__sim_exceptions_global, __sim_exceptions_thread);
      38    if (saved_exceptions & ~__sim_disabled_exceptions_thread)
      39      raise (SIGFPE);
      40  
      41    return 0;
      42  }
      43  
      44  #include <shlib-compat.h>
      45  #if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
      46  strong_alias (__feupdateenv, __old_feupdateenv)
      47  compat_symbol (libm, __old_feupdateenv, feupdateenv, GLIBC_2_1);
      48  #endif
      49  
      50  libm_hidden_def (__feupdateenv)
      51  libm_hidden_ver (__feupdateenv, feupdateenv)
      52  versioned_symbol (libm, __feupdateenv, feupdateenv, GLIBC_2_2);