diff options
Diffstat (limited to 'lib/libm/math.c')
-rw-r--r-- | lib/libm/math.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/libm/math.c b/lib/libm/math.c index 5d4779b62d..7cbec5fb32 100644 --- a/lib/libm/math.c +++ b/lib/libm/math.c @@ -45,6 +45,8 @@ typedef union { }; } double_s_t; +#if defined(__thumb__) + double __attribute__((pcs("aapcs"))) __aeabi_i2d(int32_t x) { return (float)x; } @@ -82,6 +84,11 @@ double __aeabi_dmul(double x , double y) { } +#endif // defined(__thumb__) + +// TODO this needs a better way of testing for Thumb2 FP hardware +#if defined(__thumb2__) + float sqrtf(float x) { asm volatile ( "vsqrt.f32 %[r], %[x]\n" @@ -90,6 +97,8 @@ float sqrtf(float x) { return x; } +#endif + #ifndef NDEBUG float copysignf(float x, float y) { float_s_t fx={.f = x}; |