X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=src%2Flibm%2Fsqrt.S;h=0a9acdb5f809228f021d40492826e607d7f1ca19;hb=6f720ff00773571c2fa2d35e67bff68547617639;hp=4c05975bd54c7f34f40833432551c27e40d020b0;hpb=807b2dd5b7365eb87b482197af3b4a3f520c14f7;p=msp430-libc.git diff --git a/src/libm/sqrt.S b/src/libm/sqrt.S index 4c05975..0a9acdb 100644 --- a/src/libm/sqrt.S +++ b/src/libm/sqrt.S @@ -23,10 +23,11 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: sqrt.S,v 1.1 2002/08/30 11:53:44 diwil Exp $ + * $Id: sqrt.S,v 1.1.2.1 2009/01/26 15:47:13 sb-sf Exp $ */ + #include "../core_common.inc" .file "sqrt.S" - + .text .p2align 1,0 .global sqrt @@ -51,12 +52,16 @@ sqrt: tst r15 jn .Lsqrt_err - push argsave_lo - push argsave_hi - push y_lo - push y_hi - push yprev_lo - push yprev_hi +#if defined(__MSP430X__) + XPUSHM #6, r11 +#else + push yprev_hi + push yprev_lo + push y_hi + push y_lo + push argsave_hi + push argsave_lo +#endif mov r14, argsave_lo mov r15, argsave_hi @@ -73,10 +78,10 @@ sqrt: mov y_hi, r13 mov argsave_lo, r14 ; arg/y mov argsave_hi, r15 - call #__divsf3 + XCALL #__divsf3 mov y_lo, r12 ; +y mov y_hi, r13 - call #__addsf3 + XCALL #__addsf3 mov #llo(0x3f000000), r12 ; *0.5 mov #lhi(0x3f000000), r13 call #__mulsf3 @@ -91,13 +96,20 @@ sqrt: mov y_lo, r14 mov y_hi, r15 - pop yprev_hi - pop yprev_lo - pop y_hi - pop y_lo - pop argsave_hi - pop argsave_lo - ret +#if defined(__MSP430X__) + XPOPM #6, r11 + XRET +#elif defined(__MSP430_SAVE_PROLOGUE__) + br #__epilogue_restorer + 2 * 2 +#else + pop argsave_lo + pop argsave_hi + pop y_lo + pop y_hi + pop yprev_lo + pop yprev_hi + ret +#endif .Lsqrt_err: mov #0xffff, r14