From a67651406d4154cd5093884dea6ca0ca395d56db Mon Sep 17 00:00:00 2001 From: Damien George Date: Fri, 18 Dec 2015 21:05:44 +0000 Subject: lib/libm: Allow math funcs to be used by non-Thumb archs. Requires addition of software implementation of sqrtf function. --- lib/libm/math.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'lib/libm/math.c') diff --git a/lib/libm/math.c b/lib/libm/math.c index 5d4779b62..7cbec5fb3 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}; -- cgit v1.2.3