flt_rounds.S revision 1.1 1 1.1 fvdl /* $NetBSD: flt_rounds.S,v 1.1 2001/06/19 00:25:02 fvdl 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.1 fvdl movq PIC_GOT(_map),%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