phunix/lib/libc/arch/i386/gen/flt_rounds.S
Lionel Sambuc 0a6a1f1d05 NetBSD re-synchronization of the source tree
This brings our tree to NetBSD 7.0, as found on -current on the
10-10-2015.

This updates:
 - LLVM to 3.6.1
 - GCC to GCC 5.1
 - Replace minix/commands/zdump with usr.bin/zdump
 - external/bsd/libelf has moved to /external/bsd/elftoolchain/
 - Import ctwm
 - Drop sprintf from libminc

Change-Id: I149836ac18e9326be9353958bab9b266efb056f0
2016-01-13 20:32:14 +01:00

23 lines
452 B
ArmAsm

/* $NetBSD: flt_rounds.S,v 1.10 2014/05/23 02:34:19 uebayasi Exp $ */
#include <machine/asm.h>
/*
* 00 0 round to zero
* 01 1 round to nearest
* 10 2 round to positive infinity
* 11 3 round to negative infinity
*/
.text
_ALIGN_TEXT
ENTRY(__flt_rounds)
fnstcw -4(%esp)
movl -4(%esp), %ecx
shrl $9, %ecx
andl $6, %ecx
movl $0x2d, %eax /* 0x2d = 00.10.11.01 */
sarl %cl, %eax /* 0,1,2,3 -> 1,3,2,0 */
andl $3, %eax
ret
END(__flt_rounds)