X-Git-Url: https://git.gag.com/?a=blobdiff_plain;ds=sidebyside;f=device%2Flib%2F_fs2slong.c;h=961bff9cec9010822615830ece7b3182e7c50643;hb=1e65e3bd5cbff5a1ab4a7a65c2ff68e4b5e5b43c;hp=65d3d9acb2ce1afe615a488ae7b17a87a86d77c2;hpb=4e85b590d59de032a494ad439773f94d845db0f4;p=fw%2Fsdcc diff --git a/device/lib/_fs2slong.c b/device/lib/_fs2slong.c index 65d3d9ac..961bff9c 100644 --- a/device/lib/_fs2slong.c +++ b/device/lib/_fs2slong.c @@ -24,9 +24,9 @@ #ifdef FLOAT_ASM_MCS51 // long __fs2slong (float x) -static void dummy(void) _naked +static void dummy(void) __naked { - _asm + __asm .globl ___fs2slong ___fs2slong: lcall fsgetarg @@ -54,7 +54,17 @@ fs2slong_neg: mov a, r4 cpl a addc a, #0 - jnb acc.7, fs2slong_maxval_neg // x < -0x80000000 + //Check for zero + jnz fs2slong_not_zero + mov a, dpl + orl a, dph + orl a, b + jnz fs2slong_clr_a + ret +fs2slong_clr_a: + clr a +fs2slong_not_zero: + jnb acc.7, fs2slong_maxval_neg // x < -0x80000000 ret fs2slong_pos: mov a, r4 @@ -79,14 +89,14 @@ fs2slong_maxval_pos: mov b, a mov a, #0x7F ret - _endasm; + __endasm; } #else - /* convert float to signed long */ -signed long __fs2slong (float f) { +signed long __fs2slong (float f) +{ if (!f) return 0;