sinl.asm revision 7db630a55be9d955c8ac125da609b304cbcc6010
039cd2c4871a00e51af909222a34695d9cec3000vboxsync; $Id$
039cd2c4871a00e51af909222a34695d9cec3000vboxsync;; @file
039cd2c4871a00e51af909222a34695d9cec3000vboxsync; IPRT - No-CRT sinl - AMD64 & X86.
039cd2c4871a00e51af909222a34695d9cec3000vboxsync;
039cd2c4871a00e51af909222a34695d9cec3000vboxsync
039cd2c4871a00e51af909222a34695d9cec3000vboxsync;
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync; Copyright (C) 2006-2007 Sun Microsystems, Inc.
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync;
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync; This file is part of VirtualBox Open Source Edition (OSE), as
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync; available from http://www.virtualbox.org. This file is free software;
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync; you can redistribute it and/or modify it under the terms of the GNU
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync; General Public License (GPL) as published by the Free Software
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync; Foundation, in version 2 as it comes in the "COPYING" file of the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync;
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync; The contents of this file may alternatively be used under the terms
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync; of the Common Development and Distribution License Version 1.0
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync; (CDDL) only, as it comes in the "COPYING.CDDL" file of the
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync; VirtualBox OSE distribution, in which case the provisions of the
039cd2c4871a00e51af909222a34695d9cec3000vboxsync; CDDL are applicable instead of those of the GPL.
12cd783de945853c8fc377095e8d0bbd4c97d8a1vboxsync;
27537ffef7291d0bb3a24e459a6b94c65586defevboxsync; You may elect to license modified versions of this file under the
039cd2c4871a00e51af909222a34695d9cec3000vboxsync; terms and conditions of either the GPL or the CDDL or both.
039cd2c4871a00e51af909222a34695d9cec3000vboxsync;
039cd2c4871a00e51af909222a34695d9cec3000vboxsync; Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
039cd2c4871a00e51af909222a34695d9cec3000vboxsync; Clara, CA 95054 USA or visit http://www.sun.com if you need
039cd2c4871a00e51af909222a34695d9cec3000vboxsync; additional information or have any questions.
039cd2c4871a00e51af909222a34695d9cec3000vboxsync;
3f8fa562bb916e87b0beff9ec2a4e241c643dcc8vboxsync
039cd2c4871a00e51af909222a34695d9cec3000vboxsync
039cd2c4871a00e51af909222a34695d9cec3000vboxsync%include "iprt/asmdefs.mac"
039cd2c4871a00e51af909222a34695d9cec3000vboxsync
039cd2c4871a00e51af909222a34695d9cec3000vboxsyncBEGINCODE
039cd2c4871a00e51af909222a34695d9cec3000vboxsync
039cd2c4871a00e51af909222a34695d9cec3000vboxsync%ifdef RT_ARCH_AMD64
af5fce523ceaf4ada0d4d919d9783c749ad72bc9vboxsync %define _SP rsp
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync %define _BP rbp
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync %define _S 8
af1bd0025dd5d8be5f1468689d0d77d4839a3be5vboxsync%else
32ded45b3caba42c8a2315a20bbfabb513fa54c1vboxsync %define _SP esp
4941e5c65d2957bea0c7fee86150c40be992f60avboxsync %define _BP ebp
ab9c7333d588df5d6959a3b2c96c60321d26c4b0vboxsync %define _S 4
ab9c7333d588df5d6959a3b2c96c60321d26c4b0vboxsync%endif
af1bd0025dd5d8be5f1468689d0d77d4839a3be5vboxsync
b26977a29bd8af11e3059ef8fb47a92a1241f20dvboxsync;;
64a48ec134be9af6c232948fb8906edc6f385f61vboxsync; Compute the sine of lrd
ab9c7333d588df5d6959a3b2c96c60321d26c4b0vboxsync; @returns st(0)
ab9c7333d588df5d6959a3b2c96c60321d26c4b0vboxsync; @param lrd [_SP + _S*2]
3f279f58d7fa1cfb1ef999f80968cf3aefc0680cvboxsyncBEGINPROC RT_NOCRT(sinl)
ab9c7333d588df5d6959a3b2c96c60321d26c4b0vboxsync push _BP
9e57274211125689926b35d1916c0c5c82b33670vboxsync mov _BP, _SP
039cd2c4871a00e51af909222a34695d9cec3000vboxsync sub _SP, 10h
039cd2c4871a00e51af909222a34695d9cec3000vboxsync
039cd2c4871a00e51af909222a34695d9cec3000vboxsync fld tword [_BP + _S*2]
039cd2c4871a00e51af909222a34695d9cec3000vboxsync fsin
039cd2c4871a00e51af909222a34695d9cec3000vboxsync fnstsw ax
4941e5c65d2957bea0c7fee86150c40be992f60avboxsync test ah, 04h
ab9c7333d588df5d6959a3b2c96c60321d26c4b0vboxsync jz .done
ab9c7333d588df5d6959a3b2c96c60321d26c4b0vboxsync
53ed059bdb30c2b20a3f329602bb715d75ab7d56vboxsync fldpi
ab9c7333d588df5d6959a3b2c96c60321d26c4b0vboxsync fadd st0
53ed059bdb30c2b20a3f329602bb715d75ab7d56vboxsync fxch st1
53ed059bdb30c2b20a3f329602bb715d75ab7d56vboxsync.again:
ab9c7333d588df5d6959a3b2c96c60321d26c4b0vboxsync fprem1
9e57274211125689926b35d1916c0c5c82b33670vboxsync fnstsw ax
039cd2c4871a00e51af909222a34695d9cec3000vboxsync test ah, 04h
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync jnz .again
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync fstp st1
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync fsin
27537ffef7291d0bb3a24e459a6b94c65586defevboxsync
039cd2c4871a00e51af909222a34695d9cec3000vboxsync.done:
leave
ret
ENDPROC RT_NOCRT(sinl)