1*631951aaSmortimer/* $OpenBSD: fpgetround.S,v 1.3 2018/07/03 23:14:05 mortimer Exp $ */ 2118f6189Smickey/* $NetBSD: fpgetround.S,v 1.3 2002/06/12 19:17:22 fvdl Exp $ */ 3118f6189Smickey 4118f6189Smickey/* 5118f6189Smickey * Written by J.T. Conklin, Apr 4, 1995 6118f6189Smickey * Public domain. 7118f6189Smickey */ 8118f6189Smickey 9118f6189Smickey#include <machine/asm.h> 10118f6189Smickey 11118f6189Smickey/* 12118f6189Smickey * XXX store only x87 state. If an application only uses the fp* 13118f6189Smickey * interface, this should be in sync with the SSE mxcsr register. 14118f6189Smickey */ 15118f6189Smickey 16118f6189Smickey#ifdef WEAK_ALIAS 17118f6189SmickeyWEAK_ALIAS(fpgetround, _fpgetround) 18118f6189SmickeyENTRY(_fpgetround) 19118f6189Smickey#else 20118f6189SmickeyENTRY(fpgetround) 21118f6189Smickey#endif 22*631951aaSmortimer RETGUARD_SETUP(fpgetround, r11) 23118f6189Smickey fnstcw -4(%rsp) 24118f6189Smickey movl -4(%rsp),%eax 25118f6189Smickey rorl $10,%eax 26118f6189Smickey andl $3,%eax 27*631951aaSmortimer RETGUARD_CHECK(fpgetround, r11) 28118f6189Smickey ret 2953e48b83Suebayasi#ifdef WEAK_ALIAS 3053e48b83SuebayasiEND(_fpgetround) 3153e48b83Suebayasi#else 3253e48b83SuebayasiEND(fpgetround) 3353e48b83Suebayasi#endif 34