projects
/
fw
/
sdcc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* src/pic16/gen.c (pic16_freeAsmop): avoid NULL pointer dereference,
[fw/sdcc]
/
device
/
lib
/
_fs2sint.c
diff --git
a/device/lib/_fs2sint.c
b/device/lib/_fs2sint.c
index ca9754a7f5770dfe44a8535ad5f55c8d67f79402..53f2e2d3da6092812068747fe3f8e3a0ffd08b93 100644
(file)
--- a/
device/lib/_fs2sint.c
+++ b/
device/lib/_fs2sint.c
@@
-24,24
+24,21
@@
#ifdef FLOAT_ASM_MCS51
// int __fs2sint (float x)
#ifdef FLOAT_ASM_MCS51
// int __fs2sint (float x)
-static void dummy(void) _naked
+static void dummy(void) _
_
naked
{
{
- _asm
+ _
_
asm
.globl ___fs2sint
___fs2sint:
lcall ___fs2slong
.globl ___fs2sint
___fs2sint:
lcall ___fs2slong
- push acc
jnz fs2sint_not_zero
mov a, dpl
jnz fs2sint_not_zero
mov a, dpl
- jnz fs2sint_not_zero
- mov a, dph
- jnz fs2sint_not_zero
- mov a, b
- jnz fs2sint_not_zero
- pop acc
+ orl a, dph
+ orl a, b
+ jnz fs2sint_clr_a
ret
ret
+fs2sint_clr_a:
+ clr a
fs2sint_not_zero:
fs2sint_not_zero:
- pop acc
jnb sign_a, fs2sint_pos
fs2sint_neg:
cpl a
jnb sign_a, fs2sint_pos
fs2sint_neg:
cpl a
@@
-65,23
+62,20
@@
fs2sint_pos:
fs2sint_maxval_pos:
mov dptr, #0x7FFF
ret
fs2sint_maxval_pos:
mov dptr, #0x7FFF
ret
- _endasm;
+ _
_
endasm;
}
}
-
#else
#else
-
-
/* convert float to signed int */
/* convert float to signed int */
-signed int __fs2sint (float f) {
+signed int __fs2sint (float f)
+{
signed long sl=__fs2slong(f);
if (sl>=INT_MAX)
return INT_MAX;
signed long sl=__fs2slong(f);
if (sl>=INT_MAX)
return INT_MAX;
- if (sl<=INT_MIN)
+ if (sl<=INT_MIN)
return -INT_MIN;
return sl;
}
#endif
return -INT_MIN;
return sl;
}
#endif
-