/* $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) |