(root)/
gcc-13.2.0/
libgcc/
config/
arm/
crtfastmath.c
       1  /*
       2   * Copyright (C) 2014-2023 Free Software Foundation, Inc.
       3   *
       4   * This file is free software; you can redistribute it and/or modify it
       5   * under the terms of the GNU General Public License as published by the
       6   * Free Software Foundation; either version 3, or (at your option) any
       7   * later version.
       8   *
       9   * This file is distributed in the hope that it will be useful, but
      10   * WITHOUT ANY WARRANTY; without even the implied warranty of
      11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12   * General Public License for more details.
      13   *
      14   * Under Section 7 of GPL version 3, you are granted additional
      15   * permissions described in the GCC Runtime Library Exception, version
      16   * 3.1, as published by the Free Software Foundation.
      17   *
      18   * You should have received a copy of the GNU General Public License and
      19   * a copy of the GCC Runtime Library Exception along with this program;
      20   * see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
      21   * <http://www.gnu.org/licenses/>.
      22   */
      23  
      24  /* Enable flush-to-zero support for -ffast-math on VFP targets.  */
      25  #ifndef __SOFTFP__
      26  
      27  #define FPSCR_FZ		(1 << 24)
      28  
      29  static void __attribute__((constructor))
      30  __arm_set_fast_math (void)
      31  {
      32    unsigned int fpscr_save;
      33  
      34    /* Set the FZ (flush-to-zero) bit in FPSCR.  */
      35    __asm__("vmrs %0, fpscr" : "=r" (fpscr_save));
      36    fpscr_save |= FPSCR_FZ;
      37    __asm__("vmsr fpscr, %0" : : "r" (fpscr_save));
      38  }
      39  
      40  #endif /* __SOFTFP__  */