mirror of
https://github.com/reactos/reactos.git
synced 2024-09-22 18:45:51 +00:00
a3623f23de
- Make all x86assembly ML compatible - Remove memcpy, it was duplicated from memmove, copy the label instead - Guard some code against compilation on msvc, as these functions are intrinsics on MSVC and cannot be implemented - Fix some x64 assembly (don't modify stack below rsp) svn path=/branches/cmake-bringup/; revision=49421
41 lines
825 B
ArmAsm
41 lines
825 B
ArmAsm
/*
|
|
* Written by J.T. Conklin <jtc@netbsd.org>.
|
|
* Public domain.
|
|
*
|
|
* Changes for long double by Ulrich Drepper <drepper@cygnus.com>
|
|
*
|
|
* Removed header file dependency for use in libmingwex.a by
|
|
* Danny Smith <dannysmith@users.sourceforge.net>
|
|
*/
|
|
|
|
#include <reactos/asm.h>
|
|
|
|
.code
|
|
.align 4
|
|
|
|
PUBLIC _floorf
|
|
_floorf:
|
|
|
|
fld dword ptr [esp + 4]
|
|
sub esp, 8
|
|
|
|
fstcw [esp + 4] /* store fpu control word */
|
|
|
|
/* We use here %edx although only the low 1 bits are defined.
|
|
But none of the operations should care and they are faster
|
|
than the 16 bit operations. */
|
|
mov edx, [esp + 4]
|
|
or edx, HEX(0400) /* round towards -oo */
|
|
and edx, HEX(0f7ff)
|
|
mov [esp], edx
|
|
fldcw [esp] /* load modified control word */
|
|
|
|
frndint /* round */
|
|
|
|
fldcw [esp + 4] /* restore original control word */
|
|
|
|
add esp, 8
|
|
ret
|
|
|
|
END
|