flt_rounds.S revision 1.3 1 1.3 christos /* $NetBSD: flt_rounds.S,v 1.3 2011/09/28 15:11:42 christos Exp $ */
2 1.1 fvdl
3 1.1 fvdl /*
4 1.1 fvdl * Written by J.T. Conklin, Apr 4, 1995
5 1.1 fvdl * Public domain.
6 1.1 fvdl */
7 1.1 fvdl
8 1.1 fvdl #include <machine/asm.h>
9 1.1 fvdl
10 1.1 fvdl .text
11 1.1 fvdl _ALIGN_TEXT
12 1.1 fvdl _map:
13 1.1 fvdl .byte 1 /* round to nearest */
14 1.1 fvdl .byte 3 /* round to negative infinity */
15 1.1 fvdl .byte 2 /* round to positive infinity */
16 1.1 fvdl .byte 0 /* round to zero */
17 1.1 fvdl
18 1.1 fvdl ENTRY(__flt_rounds)
19 1.1 fvdl fnstcw -4(%rsp)
20 1.1 fvdl movl -4(%rsp),%eax
21 1.1 fvdl shrl $10,%eax
22 1.1 fvdl andl $3,%eax
23 1.1 fvdl #ifdef PIC
24 1.3 christos leaq _map(%rip),%rcx
25 1.1 fvdl movb (%rcx,%rax,1),%al
26 1.1 fvdl #else
27 1.1 fvdl movb _map(,%rax,1),%al
28 1.1 fvdl #endif
29 1.1 fvdl ret
30