summaryrefslogtreecommitdiff
path: root/firmware/include/stdlib.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/include/stdlib.h')
-rw-r--r--firmware/include/stdlib.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/firmware/include/stdlib.h b/firmware/include/stdlib.h
index 504b592..a287889 100644
--- a/firmware/include/stdlib.h
+++ b/firmware/include/stdlib.h
@@ -35,7 +35,15 @@ void *realloc(void *, size_t);
void srand(unsigned int seed);
int rand(void);
-#define abs(x) ((x)>0?(x):-(x))
+#ifndef ABS
+#if defined(__GNUC__)
+#define ABS(a) ({typeof (a) ___a = (a); ___a < 0 ? -___a: ___a; })
+#else
+#define ABS(a) (((a) < 0) ? -(a) : (a))
+#endif /* __GNUC__ */
+#endif
+
+#define abs(x) (ABS(x))
#define labs(x) abs(x)
#ifdef SIMULATOR