projects
/
fw
/
sdcc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* device/include/pic16/adc.h,
[fw/sdcc]
/
device
/
lib
/
_fs2slong.c
diff --git
a/device/lib/_fs2slong.c
b/device/lib/_fs2slong.c
index 65d3d9acb2ce1afe615a488ae7b17a87a86d77c2..961bff9cec9010822615830ece7b3182e7c50643 100644
(file)
--- a/
device/lib/_fs2slong.c
+++ b/
device/lib/_fs2slong.c
@@
-24,9
+24,9
@@
#ifdef FLOAT_ASM_MCS51
// long __fs2slong (float x)
#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
.globl ___fs2slong
___fs2slong:
lcall fsgetarg
@@
-54,7
+54,17
@@
fs2slong_neg:
mov a, r4
cpl a
addc a, #0
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
ret
fs2slong_pos:
mov a, r4
@@
-79,14
+89,14
@@
fs2slong_maxval_pos:
mov b, a
mov a, #0x7F
ret
mov b, a
mov a, #0x7F
ret
- _endasm;
+ _
_
endasm;
}
#else
}
#else
-
/* convert float to signed long */
/* convert float to signed long */
-signed long __fs2slong (float f) {
+signed long __fs2slong (float f)
+{
if (!f)
return 0;
if (!f)
return 0;