Home | History | Annotate | Download | only in Ia32
      1 ;------------------------------------------------------------------------------
      2 ; Return the current FPU rounding mode.
      3 ;
      4 ; MASM implementation of the flt_rounds function by:
      5 ;   J.T. Conklin, Apr 4, 1995
      6 ;   Public domain.
      7 ;
      8 ; Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
      9 ; This program and the accompanying materials
     10 ; are licensed and made available under the terms and conditions of the BSD License
     11 ; which accompanies this distribution.  The full text of the license may be found at
     12 ; http://opensource.org/licenses/bsd-license.php.
     13 ;
     14 ; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     15 ; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     16 ;
     17 ; NetBSD: flt_rounds.S,v 1.6 1999/08/23 08:45:09 kleink Exp
     18 ;------------------------------------------------------------------------------
     19 
     20     .686
     21     .model  flat,C
     22     .code
     23 
     24 ;_map  BYTE  1     ; round to nearest
     25 ;      BYTE  3     ; round to negative infinity
     26 ;      BYTE  2     ; round to positive infinity
     27 ;      BYTE  0     ; round to zero
     28 
     29 ;------------------------------------------------------------------------------
     30 ; int
     31 ; EFIAPI
     32 ; fpu_rmode( void );
     33 ;
     34 ;------------------------------------------------------------------------------
     35 
     36 internal_FPU_rmode    PROC
     37     sub     esp, 4          ; Create a local variable for fnstcw
     38     fnstcw  [esp]
     39     mov     eax, [esp]
     40     shr     eax, 10
     41     and     eax, 3
     42     add     esp, 4          ; Delete the local variable
     43     ret
     44 internal_FPU_rmode    ENDP
     45 
     46     END
     47