diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/libtcc1.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/libtcc1.c b/lib/libtcc1.c index d8a5e71..4a923a2 100644 --- a/lib/libtcc1.c +++ b/lib/libtcc1.c @@ -480,6 +480,20 @@ long long __ashldi3(long long a, int b) #endif } +#ifndef COMMIT_4ad186c5ef61_IS_FIXED +long long __tcc_cvt_ftol(long double x) +{ + unsigned c0, c1; + long long ret; + __asm__ __volatile__ ("fnstcw %0" : "=m" (c0)); + c1 = c0 | 0x0C00; + __asm__ __volatile__ ("fldcw %0" : : "m" (c1)); + __asm__ __volatile__ ("fistpll %0" : "=m" (ret)); + __asm__ __volatile__ ("fldcw %0" : : "m" (c0)); + return ret; +} +#endif + #endif /* !__x86_64__ */ /* XXX: fix tcc's code generator to do this instead */ |
