Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1906 serge 1
#include 
2
#include 
3
 
4
float
5
truncf (float _x)
6
{
7
  float retval;
8
  unsigned short saved_cw;
9
  unsigned short tmp_cw;
10
  __asm__ ("fnstcw %0;" : "=m" (saved_cw)); /* save FPU control word */
11
  tmp_cw = (saved_cw & ~(FE_TONEAREST | FE_DOWNWARD | FE_UPWARD | FE_TOWARDZERO))
12
	    | FE_TOWARDZERO;
13
  __asm__ ("fldcw %0;" : : "m" (tmp_cw));
14
  __asm__ ("frndint;" : "=t" (retval)  : "0" (_x)); /* round towards zero */
15
  __asm__ ("fldcw %0;" : : "m" (saved_cw) ); /* restore saved control word */
16
  return retval;
17
}