projects
/
fw
/
sdcc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* device/lib/mcs51/crtxclear.asm: pdata segment of 256 byte would not be cleared...
[fw/sdcc]
/
device
/
lib
/
_fs2schar.c
diff --git
a/device/lib/_fs2schar.c
b/device/lib/_fs2schar.c
index 0bf02fe0c8f5794ec2573eccf509210fe19897a5..f63d342aae7b16ed49f4f43d3e59bf81a0db4435 100644
(file)
--- a/
device/lib/_fs2schar.c
+++ b/
device/lib/_fs2schar.c
@@
-31,6
+31,15
@@
static void dummy(void) _naked
.globl ___fs2schar
___fs2schar:
lcall ___fs2slong
.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
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;
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;
}
return -CHAR_MIN;
return sl;
}