summaryrefslogtreecommitdiff
path: root/apps/plugins/lib/gray.h
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/lib/gray.h')
-rw-r--r--apps/plugins/lib/gray.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/apps/plugins/lib/gray.h b/apps/plugins/lib/gray.h
index 460aa83..7080894 100644
--- a/apps/plugins/lib/gray.h
+++ b/apps/plugins/lib/gray.h
@@ -113,9 +113,13 @@ void gray_ub_scroll_down(int count);
#define _GRAY_RUNNING 0x0001 /* greyscale overlay is running */
#define _GRAY_DEFERRED_UPDATE 0x0002 /* lcd_update() requested */
-/* unsigned 16 bit multiplication (a single instruction on the SH) */
-#define MULU16(a, b) ((unsigned long) \
- (((unsigned short) (a)) * ((unsigned short) (b))))
+/* fast unsigned multiplication (16x16bit->32bit or 32x32bit->32bit,
+ * whichever is faster for the architecture) */
+#ifdef CPU_ARM
+#define _GRAY_MULUQ(a, b) ((uint32_t) (((uint32_t) (a)) * ((uint32_t) (b))))
+#else
+#define _GRAY_MULUQ(a, b) ((uint32_t) (((uint16_t) (a)) * ((uint16_t) (b))))
+#endif
/* The grayscale buffer management structure */
struct _gray_info