* device/lib/mcs51/crtxclear.asm: pdata segment of 256 byte would not be cleared...
[fw/sdcc] / device / lib / _fs2schar.c
index 0bf02fe0c8f5794ec2573eccf509210fe19897a5..f63d342aae7b16ed49f4f43d3e59bf81a0db4435 100644 (file)
@@ -31,6 +31,15 @@ static void dummy(void) _naked
        .globl  ___fs2schar
 ___fs2schar:
        lcall   ___fs2slong
+       jnz fs2schar_not_zero
+       mov a, dpl
+       orl a, dph
+       orl a, b
+       jnz fs2schar_clr_a
+       ret
+fs2schar_clr_a:
+       clr a
+fs2schar_not_zero:
        jnb     sign_a, fs2schar_pos
 fs2schar_neg:
        cpl     a
@@ -71,7 +80,7 @@ signed char __fs2schar (float f) {
   signed long sl=__fs2slong(f);
   if (sl>=CHAR_MAX)
     return CHAR_MAX;
-  if (sl<=CHAR_MIN) 
+  if (sl<=CHAR_MIN)
     return -CHAR_MIN;
   return sl;
 }